Flow

A Flow consists of a Trigger, an optional filter on the data contained in the Trigger event, and a sequence of one or more Actions. When a Trigger event is received, the Flow is initiated, and based on any filter present, the Flow's Actions are executed in the order defined in the Flow. The Orchestrator has the responsibility for the execution of Flows.

Trigger

A Flow can only have one Trigger configuration. If a different Trigger configuration is required to execute the same Actions two different Flows must be created.

Actions

A Flow can contain a sequence of one or more Actions. These Actions will only be executed once a Trigger event has been received. In a Flow with more than once Action, the next Action in the sequence is only executed if the previous Action executed successfully.

Each Action defines the structure of the input it requires, and the output it produces. Part of the configuration of an Action being used in a Flow is deciding how the output from a previous Action is used to create the input for the next Action in the sequence. The Orchestrator uses this configuration to send input to an Action when it is being executed. The values of an Action's input field can be a fixed value, like a literal or number, or a dynamic value picked from the previous Action's output.

Templated literal values can be created by combining fixed text with dynamic values indicated by the name of a field from the previous Action's output surrounded double curly braces e.g. {{step2:field}}.

An example of templated value:

    This is a literal with a dynamic value: {{step2:field}}

To have more control over the execution of a Flow, before every action a Filter and/or a Condition can be defined. Filter controls the execution of the Flow and Conditions controls the execution of the step.

Filter

The Filter contains a collection of expressions consisting of a field from a previous step, an operator, and a value. The value can be a fixed value, like a literal or number, or the value of another field in a step indicated by the field name using the templating system {{step2:field}}.

When all the conditions are true the flow continues executing, otherwise, the flow stops its execution with staus "Not run". The filter is meant to control if a flow must run or not based on data to avoid run it when do not apply (i.e. do not run a flow based on data passed in the webhook).

The list of available operators is:

Condition

The Condition contains a collection of expressions consisting of a field from a previous step, an operator, and a value. The value can be a fixed value, like a literal or number, or the value of another field in a step indicated by the field name using the templating system {{step2:field}}.

When all the conditions are true the immediate following action is executed, otherwise, the step is skipped and the flow continues executing in the next step. The condition is meant to conditionally execute certain actions based on data from other steps (i.e. do not run an HTTP Rest action to create a resource if the resource already exists).

The list of available operators is:

Flow history

The Orchestrator is also responsible for the generation of the Flow history. The output to the Flow history starts when a trigger notification is received and stops when any of the stops conditions are meet (see Orchestrator). If the execution of a Flow ends in failure, the Flow history will contain information concerning the reason for that failure.