Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerDataWeave では、関数とラムダ (匿名関数) を値として渡すか、変数に割り当てることができます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、DataWeave バージョン 1.2 のドキュメントを参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
map
などの関数と共に DataWeave ファイルの本文内でラムダを使用する場合、その属性を明示的に名前付けするか、匿名のままにできます。どちらの場合も、ラムダは $
、$$
、などとして参照できます。
fun
キーワードを使用して、DataWeave スクリプトのヘッダーまたは本文内で関数を宣言できます。これで、スクリプトの本文の任意の場所で関数を呼び出すことができます。
関数を参照するには、functionName()
または functionName(arg1, arg2, argN)
の形式を使用します。
各引数の括弧内で式を渡すことができます。括弧内の各引数を評価し、結果を、関数本文の実行内で使用する引数として渡します。
{
"field1": "Annie",
"field2": "Point",
"field3": "Stuff"
}
%dw 2.0
output application/json
fun toUser(obj) = {
firstName: obj.field1,
lastName: obj.field2
}
---
{
"user" : toUser(payload)
}
{
"user": {
"firstName": "Annie",
"lastName": "Point"
}
}
DataWeave 構文バージョン 2.5 以降、コールサイトで関数の型パラメーターを指定できます。
{
"measures": [1,2,4,1,5,2,3,3]
}
%dw 2.5
output application/json
fun max<T>(elems: Array<T>): T = elems reduce ((candidate: T, currentMax = elems[0]) -> if (candidate > currentMax) candidate else currentMax)
---
{
max: max<Number>(measures)
}
{
"max": 5
}
var
を介して定数ディレクティブを使用して、関数を変数として定義できます。
{
"field1": "Annie",
"field2": "Point",
"field3": "Stuff"
}
%dw 2.0
output application/json
var toUser = (user) -> {
firstName: user.field1,
lastName: user.field2
}
---
{
"user" : toUser(payload)
}
{
"user": {
"firstName": "Annie",
"lastName": "Point"
}
}
次の例では、name
として明示的に名前付けされた属性と共にラムダを使用します。
%dw 2.0
output application/json
var names = ["john", "peter", "matt"]
---
users: names map((name) -> upper(name))
{
"users": ["JOHN","PETER","MATT"]
}