BookatlasTwo-Day MuleSoft → Salesforce Bootcamp
31 / 1048 · Module 2 — Building a Real Mule Flow← prev⊞ allnext →

2.12Put the entire flow together

Conceptually:

<flow name="customer-api-flow">

    <http:listener
        config-ref="HTTP_Listener_config"
        path="/customers"
        allowedMethods="POST"/>

    <set-variable
        variableName="originalCustomer"
        value="#[payload]"/>

    <ee:transform doc:name="Map Customer to Salesforce Account">
        <ee:message>
            <ee:set-payload><![CDATA[
%dw 2.0
output application/java
---
[
    {
        External_Customer_ID__c: payload.customerId,
        Name: payload.companyName,
        Phone: payload.phone,
        BillingCity: payload.billing.city,
        BillingState: payload.billing.state
    }
]
            ]]></ee:set-payload>
        </ee:message>
    </ee:transform>

    <salesforce:upsert
        config-ref="Salesforce_Config"
        type="Account"
        externalIdFieldName="External_Customer_ID__c"/>

    <ee:transform doc:name="Build API Response">
        <ee:message>
            <ee:set-payload><![CDATA[
%dw 2.0
output application/json
---
{
    customerId: vars.originalCustomer.customerId,
    salesforceId: payload[0].id,
    success: payload[0].success
}
            ]]></ee:set-payload>
        </ee:message>
    </ee:transform>

</flow>

Again:

Don't memorize the XML.

Memorize:

Listener
   ↓
preserve
   ↓
transform
   ↓
connector
   ↓
transform