简体   繁体   中英

Looping in DataWeave in MuleSoft

i have a requirement where in i need to extract the LoadReferenceNumber and assign to a variable which is initiated inside the data weave when the LoadReferenceNumberType is MB in mule, below is the xml

 <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <CIS> <LoadReferenceNumberList> <LoadReferenceNumberType>MB</LoadReferenceNumberType> <LoadReferenceNumber>8070296</LoadReferenceNumber> </LoadReferenceNumberList> <LoadReferenceNumberList> <LoadReferenceNumberType>ACT_SP_DATE</LoadReferenceNumberType> <LoadReferenceNumber>20160404T14:12:00</LoadReferenceNumber> </LoadReferenceNumberList> <LoadReferenceNumberList> <LoadReferenceNumberType>SP_DATE</LoadReferenceNumberType> <LoadReferenceNumber>20170404T14:12:00</LoadReferenceNumber> </LoadReferenceNumberList> </CIS> 

The example below is a dataweave component which extract the LoadReferenceNumber from LoadReferenceNumberList where LoadReferenceNumberType == 'MB':

<dw:set-variable variableName="LoadReferenceNumber"><![CDATA[%dw 1.0
%output application/java
---
value: ((payload.CIS.*LoadReferenceNumberList filter $.LoadReferenceNumberType == 'MB')[0].LoadReferenceNumber) default null]]></dw:set-variable>
        </dw:transform-message>

The result is a LinkedHashMap, the example below is logger which logs the LoadReferenceNumber:

<logger message="#[flowVars.LoadReferenceNumber.value]" level="INFO"
                doc:name="Logger" />

Hope this helps :)

you use that data weave

%dw 1.0
%output application/java
---
value: ((payload.CIS.*LoadReferenceNumberList filter $.LoadReferenceNumberType == 'MB')[0].LoadReferenceNumber) default null

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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