Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこの DataWeave 例では、mapObject 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。
開始する前に、DataWeave バージョン 2 (%dw 2.0) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (%dw 1.0) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。
入力はシートが含まれる JSON オブジェクトで構成されています。すべてのシートの値 (たとえば、(sheet)1、(sheet)2) はオブジェクトの配列です。DataWeave スクリプトでは、シート番号が append オブジェクトの Id キーの値に等しい場合、別のオブジェクト append を最後の項目として一致するシート配列に追加します。
例では、fun extractNumber 関数を使用してシートページ名 pageName からシート番号を抽出します。
続いて、DataWeave 関数の mapObject はルートのすべてのシートで反復され、extractNumber が append.Id 値に一致する場合、この関数によって append オブジェクトが一致するシートオブジェクトに追加されます。
%dw 2.0
output application/json
var append =
    {
    "Id": "2",
    "Access": "4444",
    "Subteam": "1",
    }
fun extractNumber(pageName: Key) =
     (pageName as String match  /\(sheet\)([0-9]+)/)[1]
---
payload mapObject ((value, key, index) -> do {
        if(extractNumber(key) == append.Id)
            {(key): value << append}
         else
            {(key): value}
})
{
"(sheet)1": [
{
  "Id": 1.0,
  "Team": "Mule",
  "timestamp": "2019-09-26T16:37:54",
  "Access": 12431
}
],
"(sheet)2": [
{
  "Id": 2.0,
  "Team": "Max",
  "timestamp": "2019-09-26T16:37:54",
  "Access": 81243
},
{
  "Id": 2.0,
  "Team": "Max Mule",
  "timestamp": "2019-09-26T18:00:54",
  "Access": 67676
}
]
}
{
  "(sheet)1": [
    {
      "Id": 1.0,
      "Team": "Mule",
      "timestamp": "2019-09-26T16:37:54",
      "Access": 12431
    }
  ],
  "(sheet)2": [
    {
      "Id": 2.0,
      "Team": "Max",
      "timestamp": "2019-09-26T16:37:54",
      "Access": 81243
    },
    {
      "Id": 2.0,
      "Team": "Max Mule",
      "timestamp": "2019-09-26T18:00:54",
      "Access": 67676
    },
    {
      "Id": "2",
      "Access": "4444",
      "Subteam": "1"
    }
  ]
}