<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
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
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
<flow name="updateFlights" doc:id="64b02657-d2cc-45bf-b52b-10b5c0ac1edd" >
<ee:transform doc:name="Transform Message" doc:id="6dfdd151-971b-4a8d-b9c4-5b9d1f5c349f" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="enrichPassengerRecords" doc:id="39a3c6e6-b76f-4cfa-9dd3-c1b549a8b0d0" >
<ee:transform doc:name="Transform Message" doc:id="1a29d01b-bdd1-495e-bb7f-f73891618690" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/xml
import safeRead,objectArrayToXml from training::utils::Inputs
var passengerRecords = safeRead ("localdata/passengerRecords.csv","application/csv")
var flightsWithDetails = payload..*flight
var joindPassengerData =
dw::core::Arrays::join(
passengerRecords as Array<Object>,
flightsWithDetails as Array<Object>,
(pass) -> upper(pass."Flight Code"),
(flight) -> upper(flight."flight-code")
)
fun combinePassengerData (jd:Array) =
jd map (p) ->
p.l ++ flight: p.r
var pdata = combinePassengerData(joindPassengerData)
---
objectArrayToXml(pdata,"passenger")]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="objectConstructor" doc:id="fbdce3fa-e9d4-4db8-b702-b2bb12c7a2bd" >
<ee:transform doc:name="Transform Message" doc:id="1033a3e5-2c70-45e1-a877-b3906823b45e" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
var o1 = {one:11,two:2,five:5}
---
{
originalData: o1,
// encapsulatedObject: {o1}, // error
evaluatedObject: (o1), // same as first one
enhancedObject: {(o1), six:6},
adHocObject: [o1,{(o1), six:6}],
evaluated: {([o1,{(o1), six:6}])}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="enrichFlightRecords" doc:id="8f111488-2959-41b7-8831-0358534e7594" >
<ee:transform doc:name="Transform Message" doc:id="55ffd361-efe7-4af2-a0c4-df58e14dbbc4" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
import training::utils::Inputs
import USCurrency from training::utils::Inputs
var airports = Inputs::safeRead("localdata/airportInfoTiny.csv","application/csv")
groupBy $.IATA
var fieldMask = [
"openFlightsAirportId",
// "airportName",
// "city",
"country",
"IATA",
" ICAO",
// "longitude",
// "latitude",
// "altitude",
"timeZone",
"DST",
"timeZone",
"type",
"source"
]
fun reduceAirportInfo (ai:Object,mask:Array<String>) =
ai -- mask
fun joinAirportDetails (p) =
p map (f) -> (f - "destination") ++
destination: reduceAirportInfo(airports.LAX[0],fieldMask)
++ "IATA": f.destination
fun getAirportDetails (f:Object) =
destination: reduceAirportInfo(airports.LAX[0],fieldMask)
fun joinAirportDetailsV2 (p) =
p map (f) ->
f mapObject (v,k) ->
k match {
case "destination" -> getAirportDetails(f)
case "price" -> price: f.price as USCurrency
else -> (k): v
}
---
joinAirportDetailsV2(payload)
]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
</mule>
Comments