数据编织中的复杂操作

Complex operations in dataweave

我需要将 groovy 代码映射到数据编织中。 现有的groovy代码类似于伪例子as-

if(condition) {
  payload.each { data -> {
     function1(data.attributes)
     function2(data.attributes)
     if(condition) {set flag}
  }
  if(flag is set) {return payload}
  else {return errorMessage}
}
}

function1(data) {if(condition) {return errorMessage} else {return data}}
function2(data) {if(condition) {return errorMessage} else {return data}}

将输入负载视为-

[
{
  "attribute1": "value1",
  "attribute2": "value2",
  "attribute3": "value3",
  "attribute4": "value4",
},
{
  "attribute1": "value5",
  "attribute2": "value6",
  "attribute3": "value7",
  "attribute4": "value8",
}
]

输出是一个JSON数组,它依赖于标志变量。如果设置了标志,输出 JSON 数组将是关于错误消息的,否则将传递原始有效负载。 有没有一种方法可以将其转换为 dataweave,而无需使用太多额外的 mule 进程?

提前致谢

假设您有一个名为 flag 的变量(true 表示成功,false 表示错误)和一个包含错误消息的变量,您可以使用以下 DataWeave 表达式:

%dw 2.0
output application/json
---
if (vars.flag == true) 
  payload 
else 
{
  errorMessage: vars.errorMessage
}

如果 vars.flag 的值为真,DataWeave 表达式将 return 有效载荷原样。否则,它将 return 一个 JSON 对象类似于:

{
  "errorMessage": "An error occurred" 
}