我需要使用以下伪代码创建条件的函数:
var consent = []
function buildConsent() {
if (condition1) {
consent += values1
}
if (condition2) {
consent += values2
}
if (condition3) {
consent += values3
}
}
这是我在Mule4和DW 2.0上的处理方式:
%dw 2.0
var consent = []
var factIntake = vars.facts
fun buildConsent() =
if (factIntake.miscFactItems[?($.value1 == true)] != null) {
consent + {
"Consent_Type": "some1",
"Consent_Given_By": "some2"
}
}
if (factIntake.miscFactItems[?($.value2 == true)] != null) {
consent + {
"Consent_Type": "some3",
"Consent_Given_By": "some4"
}
}
output application/json
--
{
"Consent_Data": buildConsent()
}
但是我从IDE(AnypointStudio 7)中收到以下错误:
无效的输入“ +”,预期的命名空间或 Attribute <'@('((Name:Value)+')'>(第11行,第11列):
第11行第11列是consent +
的首次出现。如果我尝试调试该项目,那么我在控制台中得到的只是:
消息:解析脚本时出错:%dw 2.0
我在这里想念的是什么?如何将三个条件添加到函数中并将值附加到consent
var中?
答案 0 :(得分:1)
在DataWeave中变量是不可变的,因此您不能在同一个变量中累积内容,需要创建新变量。
所以看起来像这样:
%dw 2.0
output application/json
var consent1 = if (condition1) [{"Consent_Type": "some1", "Consent_Given_By": "some2"}] else []
var consent2 = if (condition2) [{"Consent_Type": "some3", "Consent_Given_By": "some4"}] else []
---
consent1 ++ consent2
答案 1 :(得分:0)
您的要求似乎很好地利用了<!DOCTYPE
函数。根据您提供的伪代码,您可以执行以下操作
reduce