Note

The documentation you're currently reading is for version 2.10.4. Click here to view documentation for the latest stable version.

Expressions

Expressions can be employed almost anywhere in the workflow definition, from the action name, to assigning value to action input, to evaluating criteria in the task transition, and data transformation when publishing variables.

Here are some of the things that an expression can accomplish:

  • Select key-value pairs from a list of dictionaries.
  • Filter the list where one or more fields match condition(s).
  • Transform a list to dictionary or vice versa.
  • Simple arithmetic.
  • Evaluation of boolean logic.
  • Any combination of select, filter, transform, and evaluate.

Applied to workflows, here are some use cases:

  • Define what action to execute.
  • Define input values to action execution.
  • Define criteria for task transition.
  • Publish variables to the runtime context on task completion.
  • Reference variables from the runtime context.
  • Define output values for workflow.

Types

Orquesta currently supports YAQL and Jinja expressions. Both types of expressions can be used throughout the workflow. Note that mixing of both YAQL and Jinja expressions in a single statement is not supported. To tell Orquesta which expression is which, each type of expression should be encapsulated with different symbols. For YAQL, the expression is wrapped in between <% YAQL expression %>. For Jinja, expression is wrapped in between {{ Jinja expression }}. Code block using {% %} is also supported for Jinja. The symbols { and } conflict with JSON and the entire Jinja expression with the encapsulation should be single or double quoted.

Where it’s used?

The following are attributes in the Workflow model that accept expressions:

Attributes Accept Expressions
version No
description No
input Yes, at each item
vars Yes, at each item
tasks See Task
output Yes, at each item

The following are attributes in the Task model that accept expressions:

Attributes Accept Expressions
delay Yes
join No
with Yes, see With Items
action Yes
input Yes, entire dict or at each item
next See Task Transition

The following are attributes in the task With Items model that accept expressions:

Attributes Accept Expressions
items Yes
concurrency Yes

The following are attributes in the Task Transition model that accept expressions:

Attributes Accept Expressions
when Yes
publish Yes, at each item
do No

Usage

The following sections go into more details on specific topics.