关于如何将 Mule 3 代码转换为 Mule 4 的输入
Inputs on how to convert Mule3 code to Mule4
我们正在将项目从 mule3 迁移到 mule4,使用 MMA 迁移后遇到以下 MEL 或 DW 代码。任何有关如何将这些转换为 mule4 代码的输入都将受到赞赏。有些变量可能会混淆例如。 tempMonthlyData、dataRecord、MonthlyData 等,“属性 代码”是一个字符串。
所有变量都是 json 个对象
payload.get(flowVars.processingSheet)
mel:payload.key.split(" ")[0].toLowerCase()
flowVars.appendix.get(flowVars.propertyKey) != null
vars.dataRecord.put("Property Code", yardiPropList.get(referenceId))
mel:propertiesNotInmule.remove(referenceId)
mel:tempMonthlyData.add(dataRecord)
mel:payload.replace("MonthlyData", tempMonthlyData)
mel:dataRecord.put("Property Code", "")
问题缺乏上下文和细节。我将不得不在答案中做出一些有根据的猜测来减轻这种情况。按方法查看答案。
注意,其中 none 是 Mule 操作。它完全等同于 MEL 表达式中的 Java 代码。您需要确切地了解什么是 Java class 和方法,才能找到等效的方法。
get() 如果 payload 是 org.json.JSONObject 那么 get() 方法 returns 带有键的属性的值 flowVars.processingSheet
.
payload.get(flowVars.processingSheet)
Mule 4 不使用 org.json 但它使用 DataWeave 来转换 JSON 值。等价于:
payload[vars.processingSheet]
split() 我假设这是 Java String split() 方法。
payload.key.split(" ")[0].toLowerCase()
DataWeave 中的等效表达式是:
lower((payload.key splitBy (" "))[0])
put()
如果这是 JSONObject.put() 方法,那么在更新插入模式下使用更新运算符将类似于:
%dw 2.0
output application/json
---
vars.someVariable update {
case .DataRecord! -> vars.yardiPropList
}
替换()
假设它是一个 Map 方法,因为它不存在于 JSONObject 中,使用没有更新插入功能的更新运算符 (!
)。
删除()
如果这是 Map.remove() 方法,您可以使用减号运算符获得类似的结果:
payload - vars.referenceId
add() 假设它是一个 Java 列表,那么你可以只使用连接运算符:
vars.tempMonthlyData ++ vars.dataRecord
请注意,DataWeave 是一种函数式编程语言,没有副作用,因此它不会更改输入,而是创建新的输出。您需要将该输出分配给有效负载或变量。
我们正在将项目从 mule3 迁移到 mule4,使用 MMA 迁移后遇到以下 MEL 或 DW 代码。任何有关如何将这些转换为 mule4 代码的输入都将受到赞赏。有些变量可能会混淆例如。 tempMonthlyData、dataRecord、MonthlyData 等,“属性 代码”是一个字符串。 所有变量都是 json 个对象
payload.get(flowVars.processingSheet)
mel:payload.key.split(" ")[0].toLowerCase()
flowVars.appendix.get(flowVars.propertyKey) != null
vars.dataRecord.put("Property Code", yardiPropList.get(referenceId))
mel:propertiesNotInmule.remove(referenceId)
mel:tempMonthlyData.add(dataRecord)
mel:payload.replace("MonthlyData", tempMonthlyData)
mel:dataRecord.put("Property Code", "")
问题缺乏上下文和细节。我将不得不在答案中做出一些有根据的猜测来减轻这种情况。按方法查看答案。
注意,其中 none 是 Mule 操作。它完全等同于 MEL 表达式中的 Java 代码。您需要确切地了解什么是 Java class 和方法,才能找到等效的方法。
get() 如果 payload 是 org.json.JSONObject 那么 get() 方法 returns 带有键的属性的值 flowVars.processingSheet
.
payload.get(flowVars.processingSheet)
Mule 4 不使用 org.json 但它使用 DataWeave 来转换 JSON 值。等价于:
payload[vars.processingSheet]
split() 我假设这是 Java String split() 方法。
payload.key.split(" ")[0].toLowerCase()
DataWeave 中的等效表达式是:
lower((payload.key splitBy (" "))[0])
put()
如果这是 JSONObject.put() 方法,那么在更新插入模式下使用更新运算符将类似于:
%dw 2.0
output application/json
---
vars.someVariable update {
case .DataRecord! -> vars.yardiPropList
}
替换()
假设它是一个 Map 方法,因为它不存在于 JSONObject 中,使用没有更新插入功能的更新运算符 (!
)。
删除() 如果这是 Map.remove() 方法,您可以使用减号运算符获得类似的结果:
payload - vars.referenceId
add() 假设它是一个 Java 列表,那么你可以只使用连接运算符:
vars.tempMonthlyData ++ vars.dataRecord
请注意,DataWeave 是一种函数式编程语言,没有副作用,因此它不会更改输入,而是创建新的输出。您需要将该输出分配给有效负载或变量。