18.1Scenario 1 — Build a simple Mule API flow
Prompt:
“Write a Mule flow that accepts a customer request and creates or updates an Account in Salesforce.”
Input:
{
"customerId": "C001",
"companyName": "Acme Corporation",
"phone": "305-555-1234"
}
You can sketch:
<flow name="create-or-update-customer">
<http:listener
config-ref="HTTP_Listener_Config"
path="/customers"
allowedMethods="POST"/>
<set-variable
variableName="originalCustomer"
value="#[payload]"/>
<ee:transform>
<ee:message>
<ee:set-payload>
<![CDATA[
%dw 2.0
output application/java
---
[{
External_Customer_ID__c: payload.customerId,
Name: payload.companyName,
(Phone: payload.phone)
if (payload.phone != null)
}]
]]>
</ee:set-payload>
</ee:message>
</ee:transform>
<salesforce:upsert
config-ref="Salesforce_Config"
type="Account"
externalIdFieldName="External_Customer_ID__c"/>
<ee:transform>
<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>
You do not need to memorize every <ee:message> wrapper.
Memorize the architecture:
HTTP Listener
↓
save original payload
↓
DataWeave
↓
Salesforce Upsert
↓
DataWeave response