#dataweave #mule4
#поток данных #mule4
Вопрос:
Мне нужно отобразить groovy-код в dataweave. Существующий groovy-код похож на псевдопример следующим образом-
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 будет содержать сообщения об ошибках, которые передают исходную полезную нагрузку.
Есть ли способ, которым это можно преобразовать в поток данных без использования дополнительных процессов mule?
Заранее спасибо
Комментарии:
1. Привет @Satyam, не могли бы вы предоставить входную полезную нагрузку и ожидаемый результат? Спасибо.
2. @olamiral я обновил его.
Ответ №1:
Предположим, у вас есть переменная с именем flag (значение true означает успех, значение false — ошибка) и переменная, содержащая сообщение об ошибке, вы можете использовать следующее выражение 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"
}
Комментарии:
1. Я должен работать с разными переменными в одном и том же dw. Это дало некоторые идеи. Спасибо
2. В некоторых случаях вам может потребоваться поработать с переменными в верхней части скрипта (над
---
), чтобы выполнить некоторые условия или обернуть логику в функции, чтобы сделать код простым для чтения. Для этого также полезна областьdo { --- }
видимости.