Flex Gateway新着情報
Governance新着情報
Monitoring API Manager
DataWeave 2.2 は Mule 4.2 と互換性があり、Mule 4.2 にバンドルされています。 このバージョンの Mule は、拡張サポートが終了する 2023 年 5 月 2 日にその すべてのサポートが終了しました。 このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。 標準サポートが適用されている最新バージョンの Mule 4 にアップグレードすることをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。 |
DataWeave 式は特定の順序でコンパイルされます。1 つのレベルのコンパイル結果をより高いレベルの式の入力として使用することはできますが、より低いレベルの式の入力として使用することはできません。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの DataWeave 1.0 ドキュメントセットを参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。
次の表では、演算子と関数を、最初にコンパイルされるもの (1) から最後にコンパイルされるもの (10) への順に並べています。
レベル | 演算子または関数 |
---|---|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
複数の関数がチェーニングによって 1 つにまとめられると、それらの関数はチェーンで指定された順序で最初の関数から最後の関数まで処理されます。
たとえば、次のスクリプトは、変数 flights
によって定義された入力オブジェクトの配列に対して動作します。スクリプトは最初に 500 未満の price
値をすべて受け入れる配列を返す filter
をコールします。次に、入力内のオブジェクトを price
値が低い順に並び替えた配列を返す orderBy
をコールします。最後に、入力オブジェクト配列を toAirport
値のアルファベット順にグループ化する groupBy
をコールします。
%dw 2.0
output application/json
var flights = [
{ "toAirport": "SFO", "price": 550, "airline": "American" },
{ "toAirport": "MUA", "price": 200, "airline": "American" },
{ "toAirport": "SFO", "price": 300, "airline": "American" },
{ "toAirport": "CLE", "price": 600, "airline": "American" },
{ "toAirport": "CLE", "price": 190, "airline": "American" },
{ "toAirport": "SFO", "price": 400, "airline": "American" }
]
---
flights filter $.price < 500 orderBy $.price groupBy $.toAirport
結果は、キー-値ペアのコレクションを含むオブジェクトになります。
{ "CLE": [ { "toAirport": "CLE", "price": 190, "airline": "American" } ], "SFO": [ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ], "MUA": [ { "toAirport": "MUA", "price": 200, "airline": "American" } ] }
関数コールの順序は重要です。たとえば、順序を変更した式 flights groupBy $.toAirport filter $.price < 500 orderBy $.price
は、エラーを返します。これは、groupBy
はオブジェクトを返し、filter
は配列を想定しているためです。結果のエラーは Expecting Type: Array>T<, but got: {String: Array<{|toA… airline: String|}>}
となります。