vincentlowe

dwmerge.xml

Oct 19th, 2021
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.64 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns="http://www.mulesoft.org/schema/mule/core"
  4. xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
  6. http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
  7. <flow name="updateFlights" doc:id="64b02657-d2cc-45bf-b52b-10b5c0ac1edd" >
  8. <ee:transform doc:name="Transform Message" doc:id="6dfdd151-971b-4a8d-b9c4-5b9d1f5c349f" >
  9. <ee:message >
  10. <ee:set-payload ><![CDATA[%dw 2.0
  11. output application/java
  12. ---
  13. {
  14. }]]></ee:set-payload>
  15. </ee:message>
  16. </ee:transform>
  17. </flow>
  18. <flow name="enrichPassengerRecords" doc:id="39a3c6e6-b76f-4cfa-9dd3-c1b549a8b0d0" >
  19. <ee:transform doc:name="Transform Message" doc:id="1a29d01b-bdd1-495e-bb7f-f73891618690" >
  20. <ee:message >
  21. <ee:set-payload ><![CDATA[%dw 2.0
  22. output application/xml
  23. import safeRead,objectArrayToXml from training::utils::Inputs
  24.  
  25. var passengerRecords = safeRead ("localdata/passengerRecords.csv","application/csv")
  26. var flightsWithDetails = payload..*flight
  27.  
  28. var joindPassengerData =
  29. dw::core::Arrays::join(
  30. passengerRecords as Array<Object>,
  31. flightsWithDetails as Array<Object>,
  32. (pass) -> upper(pass."Flight Code"),
  33. (flight) -> upper(flight."flight-code")
  34. )
  35.  
  36. fun combinePassengerData (jd:Array) =
  37. jd map (p) ->
  38. p.l ++ flight: p.r
  39.  
  40.  
  41. var pdata = combinePassengerData(joindPassengerData)
  42.  
  43. ---
  44. objectArrayToXml(pdata,"passenger")]]></ee:set-payload>
  45. </ee:message>
  46. </ee:transform>
  47. </flow>
  48. <flow name="objectConstructor" doc:id="fbdce3fa-e9d4-4db8-b702-b2bb12c7a2bd" >
  49. <ee:transform doc:name="Transform Message" doc:id="1033a3e5-2c70-45e1-a877-b3906823b45e" >
  50. <ee:message >
  51. <ee:set-payload ><![CDATA[%dw 2.0
  52. output application/json
  53.  
  54. var o1 = {one:11,two:2,five:5}
  55. ---
  56. {
  57. originalData: o1,
  58. // encapsulatedObject: {o1}, // error
  59. evaluatedObject: (o1), // same as first one
  60. enhancedObject: {(o1), six:6},
  61. adHocObject: [o1,{(o1), six:6}],
  62. evaluated: {([o1,{(o1), six:6}])}
  63. }]]></ee:set-payload>
  64. </ee:message>
  65. </ee:transform>
  66. </flow>
  67. <flow name="enrichFlightRecords" doc:id="8f111488-2959-41b7-8831-0358534e7594" >
  68. <ee:transform doc:name="Transform Message" doc:id="55ffd361-efe7-4af2-a0c4-df58e14dbbc4" >
  69. <ee:message >
  70. <ee:set-payload ><![CDATA[%dw 2.0
  71. output application/json
  72. import training::utils::Inputs
  73. import USCurrency from training::utils::Inputs
  74.  
  75. var airports = Inputs::safeRead("localdata/airportInfoTiny.csv","application/csv")
  76. groupBy $.IATA
  77.  
  78. var fieldMask = [
  79. "openFlightsAirportId",
  80. // "airportName",
  81. // "city",
  82. "country",
  83. "IATA",
  84. " ICAO",
  85. // "longitude",
  86. // "latitude",
  87. // "altitude",
  88. "timeZone",
  89. "DST",
  90. "timeZone",
  91. "type",
  92. "source"
  93. ]
  94.  
  95. fun reduceAirportInfo (ai:Object,mask:Array<String>) =
  96. ai -- mask
  97.  
  98. fun joinAirportDetails (p) =
  99. p map (f) -> (f - "destination") ++
  100. destination: reduceAirportInfo(airports.LAX[0],fieldMask)
  101. ++ "IATA": f.destination
  102.  
  103. fun getAirportDetails (f:Object) =
  104. destination: reduceAirportInfo(airports.LAX[0],fieldMask)
  105.  
  106. fun joinAirportDetailsV2 (p) =
  107. p map (f) ->
  108. f mapObject (v,k) ->
  109. k match {
  110. case "destination" -> getAirportDetails(f)
  111. case "price" -> price: f.price as USCurrency
  112. else -> (k): v
  113. }
  114.  
  115. ---
  116. joinAirportDetailsV2(payload)
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141. ]]></ee:set-payload>
  142. </ee:message>
  143. </ee:transform>
  144. </flow>
  145. </mule>
  146.  
Advertisement
Add Comment
Please, Sign In to add comment