Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこの DataWeave 例では、mapObject 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。
開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、DataWeave バージョン 1.2 の例を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
入力はシートが含まれる 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"
}
]
}