Mule ESB Multiple when Dataweave 中的条件
Mule ESB Multiple when conditions in Dataweave
我正在使用 dataweave,由于每个州的销售税,我需要将来自特定州的每个客户分配给预定义用户。
但是,当我在 dataweave 中创建它时,我最终将其作为我的 XML:
<Customer>
<Number>
<Number>
<Number>
<Number>WEB002</Number>
</Number>
</Number>
</Number>
我只需要 'customer' 节点下的一个 'number' 节点。
这是我的数据编织:
Customer:{
Number: 'WEB001' when payload.order.billing_address.state == 'Indiana' otherwise
Number: 'WEB002' when payload.order.billing_address.state == 'Kentucky' otherwise
Number: 'WEB003' when payload.order.billing_address.state == 'Illinois' otherwise
Number: 'WEB004'
},
曾尝试将我的条件放在括号内,但没有成功,曾尝试将每个条件括在括号中,没有成功。
有更好的方法吗?
您可以将状态和数字之间的映射放在 map/dictionary 中,这样可以提高可读性:
%var numbers = {
Indiana: 'WEB001',
Kentucky: 'WEB002',
Illinois: 'WEB003'
}
这就是您的数据编织的样子:
%dw 1.0
%output application/xml
%var defaultNumber = 'WEB004'
%var numbers = {
Indiana: 'WEB001',
Kentucky: 'WEB002',
Illinois: 'WEB003'
}
---
Customer: {
Number: numbers[payload.order.billing_address.state]
default defaultNumber
}
这是包含示例数据和结果预览的屏幕截图:
一个非常简单的方法如下:-
<dw:transform-message doc:name="Transform Message">
<dw:input-payload doc:sample="empty.xml" />
<dw:set-payload><![CDATA[%dw 1.0
%output application/xml
---
{
Customer:
Number: "WEB001" when payload.order.billing_address.state == "Indiana"
otherwise (
"WEB002" when payload.order.billing_address.state == "Kentucky"
otherwise (
"WEB003" when payload.order.billing_address.state == "Illinois"
otherwise "WEB004"))
}
]]></dw:set-payload>
</dw:transform-message>
我正在使用 dataweave,由于每个州的销售税,我需要将来自特定州的每个客户分配给预定义用户。 但是,当我在 dataweave 中创建它时,我最终将其作为我的 XML:
<Customer>
<Number>
<Number>
<Number>
<Number>WEB002</Number>
</Number>
</Number>
</Number>
我只需要 'customer' 节点下的一个 'number' 节点。 这是我的数据编织:
Customer:{
Number: 'WEB001' when payload.order.billing_address.state == 'Indiana' otherwise
Number: 'WEB002' when payload.order.billing_address.state == 'Kentucky' otherwise
Number: 'WEB003' when payload.order.billing_address.state == 'Illinois' otherwise
Number: 'WEB004'
},
曾尝试将我的条件放在括号内,但没有成功,曾尝试将每个条件括在括号中,没有成功。 有更好的方法吗?
您可以将状态和数字之间的映射放在 map/dictionary 中,这样可以提高可读性:
%var numbers = {
Indiana: 'WEB001',
Kentucky: 'WEB002',
Illinois: 'WEB003'
}
这就是您的数据编织的样子:
%dw 1.0
%output application/xml
%var defaultNumber = 'WEB004'
%var numbers = {
Indiana: 'WEB001',
Kentucky: 'WEB002',
Illinois: 'WEB003'
}
---
Customer: {
Number: numbers[payload.order.billing_address.state]
default defaultNumber
}
这是包含示例数据和结果预览的屏幕截图:
一个非常简单的方法如下:-
<dw:transform-message doc:name="Transform Message">
<dw:input-payload doc:sample="empty.xml" />
<dw:set-payload><![CDATA[%dw 1.0
%output application/xml
---
{
Customer:
Number: "WEB001" when payload.order.billing_address.state == "Indiana"
otherwise (
"WEB002" when payload.order.billing_address.state == "Kentucky"
otherwise (
"WEB003" when payload.order.billing_address.state == "Illinois"
otherwise "WEB004"))
}
]]></dw:set-payload>
</dw:transform-message>