Warm tip: This article is reproduced from serverfault.com, please click

mule4-数据编织中的复杂操作

(mule4 - Complex operations in dataweave)

发布于 2020-12-16 09:23:32

我需要将一个常规代码映射到dataweave中。现有的常规代码类似于伪示例,因为-

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数组,它依赖于flag变量。如果设置了该标志,则输出JSON数组将与errorMessage有关,否则将传递原始有效负载。有没有一种方法可以将其转换为数据编织,而无需使用很多额外的m子进程?

提前致谢

Questioner
Satyam Pisal
Viewed
0
olamiral 2020-12-16 18:53:48

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

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

如果vars.flag的值为true,则DataWeave表达式将按原样返回有效负载。否则,它将返回类似于以下内容的JSON对象:

{
  "errorMessage": "An error occurred" 
}