mule 4 中的动态函数调用

Kun*_*thi 1 mule dynamic-function dataweave mulesoft mule4

我有多种功能:

fun testadd(payload) = 
({
addition: payload.value1 as Number + payload.value2 as Number
})

fun testsub(payload) = 
({
substraction: payload.value1 as Number - payload.value2 as Number
})

fun testmultiply(payload) = 
({
multiplication: payload.value1 as Number * payload.value2 as Number
})
Run Code Online (Sandbox Code Playgroud)

我想根据“操作”属性/元素的值动态调用该函数。假设如果“Operation”=“testadd”则调用testadd函数, 如果“Operation”=“testsub”则调用testsub函数

输入 :

{
"value1" : 10,
"value2" : 20,
"Operation" : "testadd"
}
Run Code Online (Sandbox Code Playgroud)

afe*_*tti 6

这里的另一种选择是使用函数重载和文字类型。例如:

%dw 2.0
output json

fun binOp(a, b, op : "add") = a + b
fun binOp(a, b, op : "sub") = a - b
fun binOp(a, b, op : "mul") = a * b
---
binOp(10, 20, "add")
Run Code Online (Sandbox Code Playgroud)

DataWeave将根据op参数的值调用正确的函数。