vincentlowe icon

dwmerge.xml

vincentlowe | PRO | 10/19/21 09:01:22 PM UTC | 0 ⭐ | 183 👁️ | Never ⏰ | []
text |

3.64 KB

|

None

|

0 👍

/

0 👎

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