【问题标题】:Mule ESB Multiple when conditions in Dataweave当 Dataweave 中的条件时,Mule ESB Multiple
【发布时间】:2017-04-14 03:51:36
【问题描述】:

我正在使用 dataweave,由于每个州的销售税,我需要将来自特定州的每个客户分配给预定义的用户。 但是,当我在 dataweave 中创建它时,我最终将它作为我的 XML:

<Customer>
<Number>
  <Number>
    <Number>
      <Number>WEB002</Number>
    </Number>
  </Number>
</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'
},

尝试将我的条件放在括号内,不高兴,尝试将每个条件包装在括号中,不高兴。 有没有更好的方法来做到这一点?

【问题讨论】:

    标签: mule esb dataweave


    【解决方案1】:

    一个非常简单的方法如下:-

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

    【讨论】:

      【解决方案2】:

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

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

      这是一个包含示例数据和结果预览的屏幕截图:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-05
        • 1970-01-01
        • 2017-02-16
        • 1970-01-01
        • 1970-01-01
        • 2020-04-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多