複数の入力の参照

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

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

  • 入力属性で指定した日付よりも古い本を除外する ​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: