Nav

Introduction to Mule 4: DataWeave 2.0

DataWeave 2 is largely unchanged from DataWeave 1. However, MuleSoft made many improvements to make it easier to learn and added new capabilities.

Operators Are Functions

In DataWeave 2, all operators are now functions. While this can involve more parentheses, it is less ambiguous and more friendly to learn through auto-completion features. The previous syntax continues to work for functions with two parameters, providing a shorter syntax for power users.

DataWeave 1

sizeOf payload filter $.age > 30

DataWeave 2 - Function Syntax

sizeOf(filter(payload, (value) → value.age > 30)))

DataWeave 2 - Shortcut Syntax

sizeOf(payload filter $.age > 30)

Traits Are Functions

DataWeave 1

payload is :empty

DataWeave 2

isEmpty(payload)

Type Names

DataWeave 2 uses a type name syntax, which removes the : from the name.

DataWeave 1

payload.foo as :string

DataWeave 2

payload.foo as String

XML Format

The default for the reader property nullValueOn is empty for DataWeave 2.0.

For DataWeave 1.0 (which is compatible with Mule 3.x), the value is none, for example:

DataWeave Script

         
      
1
2
3
4
%dw 1.0
%output application/xml nullValueOn="none"
---
payload
Input

         
      
1
2
3
<book>
  <name></name>
</book>
Output

         
      
1
<book/>

New Capabilities

There are also many new capabilities, including: * Typing for reusable functions * Multi-line comments * Ability to call out to Java code * Multipart, URL-encoded, and text readers and writers * Modules and imports * and more