Contact Us 1-800-596-4880

Transform Message Component XML Reference

This version of Mule reached its End of Life on May 2, 2023, when Extended Support ended.

Deployments of new applications to CloudHub that use this version of Mule are no longer allowed. Only in-place updates to applications are permitted.

MuleSoft recommends that you upgrade to the latest version of Mule 4 that is in Standard Support so that your applications run with the latest fixes and security enhancements.

Instead of using the Studio UI to include DataWeave language in your Mule projects, you can also create and configure a 'Transform Message' component entirely through XML, either from the XML tab in Studio or from an external editor.

Note that if you use the UI to create and configure the element, the corresponding XML configuration is created automatically in the XML editor.

Namespace and Schema Location

At the very start of your Mule Project, you must include the following dependencies:

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
      ...
      xsi:schemaLocation="
      ...
      http://www.mulesoft.org/schema/mule/ee/core
      http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
</mule>

Note that Studio automatically adds these dependencies when you drag and drop the Transform component to your canvas.

<ee:transform/>

The <ee:transform> element is the top-level XML tag for the Transform component.

<ee:transform> Attributes Description

doc:name

Defines the name of the element as it appears in the Studio canvas.

mode

Refers to Deferred Execution. Accepted values: immediate or deferred. See DataWeave Memory Management.

Adding DataWeave Scripts to the Transform Component

You can either type your DataWeave code into your XML using CDATA within a Transformation element, or you can reference an external .dwl file.

This example that writes a DataWeave script inline within a <dw:set-payload> transformation element:

<ee:transform doc:id="747f74d4-cb66-4f8e-8222-24784e6863ae"
  doc:name="Transform" doc:timestamp="1510861248434">
    <ee:message>
        <ee:set-payload>
          <![CDATA[%dw 2.0
            output application/json
            ---
            {
              // YOUR DW SCRIPT
            }
          ]]>
       </ee:set-payload>
    </ee:message>
</ee:transform>

Here is same example, calling an external .dwl file:

<ee:transform doc:id="747f74d4-cb66-4f8e-8222-24784e6863ae"
  doc:name="Transform" doc:timestamp="1510861248434" doc:mode="immediate">
    <ee:message>
      <ee:set-payload resource="transform.dwl" />
    </ee:message>
</ee:transform>

The default location for these files is in the src/main/resources folder in your project.

Transformations

A single Transform component element (<ee:transform/>) can specify content for all parts of the Mule Event:

  • <ee:message/> can contain <ee:set-payload/> and <ee:set-attributes/>.

  • <ee:variables/> can contain one or more <ee:set-variable/> elements.

Example
<ee:transform doc:id="747f74d4-cb66-4f8e-8222-24784e6863ae"
  doc:name="Transform" doc:timestamp="1510861248434">
    <ee:message>
        <ee:set-payload resource="transform.dwl" />
        <ee:set-attributes resource="myattributes.dwl" />
    </ee:message>
    <ee:variables>
        <ee:set-variable variableName="myVar" resource="myvar.dwl"/>
    </ee:variables>
</ee:transform>

The child elements contain some of the same attributes.

Attributes Description

resource

Points to a .dwl file containing a DataWeave transformation script. These values are solved statically. For example, using <ee:set-payload resource="myscript-${env}.dwl"/> generates this error in the Transform Message UI: Unexpected end of input, expected header or content.

variableName

For output variables only, defines the name of the variable.

Full XML Sample

Here is an example that creates transformations for the payload, an attribute, and a variable.

<ee:transform doc:id="747f74d4-cb66-4f8e-8222-24784e6863ae"
  doc:name="Transform" doc:timestamp="1510861248434">
    <ee:message>
        <ee:set-payload><![CDATA[%dw 2.0

output application/json
---
(payload map (value0, index0) -> {
id: value0.id,
username: value0.username,
address: {
street: value0.address.street
},
website: value0.website
})]]></ee:set-payload>
        <ee:set-attributes><![CDATA[%dw 2.0

output application/json
---
{
reasonPhrase: attributes.reasonPhrase
}]]></ee:set-attributes>
    </ee:message>
    <ee:variables>
        <ee:set-variable variableName="myVar"><![CDATA[%dw 2.0

output application/json
---
{
a: payload[0].phone
}]]></ee:set-variable>
    </ee:variables>
</ee:transform>