繁体   English   中英

Mule ESB在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'
},

试过把我的条件放在括号内,没有快乐,试图把每个条件都包在括号里,没有快乐。 有一个更好的方法吗?

一种非常简单易行的方法如下: -

<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>

您可以将状态和数字之间的映射放在地图/字典中,这样可以提高可读性:

%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
}

这是包含示例数据和结果预览的屏幕截图: 在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM