Expressions are evaluated by the workflow engine and the output is used at the time of execution.

You can use expressions for any input field in the workflow editor.


You can use the basic arithmetic operators +, -, *, / and % (modulo) in expressions.

25 / (3 + 2)

The devision operator / will always return a floating point number. If you want to get a floored integer, use the // operator.

31 // 5


The comparison operators ==, !=, <, <=, >, >= can be used to compare values.

5 > 3


The logical operators and, or and not can be used to combine multiple expressions.

5 > 3 and 3 > 1


You can use variables in expressions, by referring to their names.

(var1 + var2) == 5

Object properties

You can access properties of objects by using the dot or bracket notation.

Array items

You can access items of arrays by using the bracket notation.


Expression helpers

Conversion functions

Convert values from one data type to another.

doubleAccepts an attribute of type string or integer and returns a double.double("5")
intAccepts an attribute of type string or double and returns an"5")
stringAccepts an attribute of type integer, double, or boolean and returns a string.string(5)

Data type functions

Operate on lists, maps, and strings.

inChecks whether a given key is present in a list or map."Foo" in ["Foo", "Bar"]
keysAccepts an attribute of type map and returns a list of key elements in the map.keys({"Foo": "Bar"})
lenAccepts an attribute of type list, map, or string and returns its length.len("Foo")

Conditional functions

Support conditions within expressions.

ifAccepts a boolean expression and returns the first value if true, else null.if(5 > 3, "Foo", "Bar")
defaultAccepts a value and returns it if it is not null, else returns the default value.default("Foo", "Bar")

Type functions

Check the type of an attribute.

get_typeAccepts an attribute and returns its type.get_type("Foo")