複数の入力の参照

この DataWeave の例では、3 つの異なる入力 JSON ファイル (ペイロード、変数、属性) を取得します。これらのすべては、同じ Mule イベントの意一部です。ペイロードには本のオブジェクトの配列が含まれ、変数には一連の通貨換算レートがあり、属性ではクエリとして使用される年を指定します。 開始する前に、DataWeave バージョン 2 (​%dw 2.0​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​%dw 1.0​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。

この例では、以下を使用します。

  • 入力属性で指定した日付よりも古い本を除外する ​filter​。

  • 入力配列の各本を調べる ​map​。その後に変数の通貨を調べてそれぞれの本の価格を計算する別の ​map​ 関数。複数ある場合に本のすべての著者をリストする 3 番目の ​map​ 関数。

  • 出力の XML 属性を定義する ​@​。

DataWeave スクリプト:
%dw 2.0
output application/xml
---
books: {
  (payload filter ($.properties.year > attributes.publishedAfter) map  (item)   ->  {
    book @(year: item.properties.year): {
      (vars.exchangeRate.USD map {
        price @(currency: $.currency): $.ratio * item.price
      }),
      title: item.properties.title,
      authors: { (item.properties.author map {
        author: $
      }) }
    }
  } )
}
dataweave
入力 JSON ペイロード:
入力属性:
{
  "publishedAfter": 2004
}
json
入力変数 ​exchangeRate​:
{
  "USD": [
    {"currency": "EUR", "ratio":0.92},
    {"currency": "ARS", "ratio":8.76},
    {"currency": "GBP", "ratio":0.66}
  ]
}
json
出力 XML: