Introduction
Globus Flows provides the ability to define flows: compositions of discrete tasks called actions (e.g., API requests, conditional branching, etc.) that can be invoked as a single, logical operation. Flow definitions are finite state machines written in JSON. A definition must contain two fields:
-
States
-
StartAt
and optionally may contain a Comment
.
StartAt
is a string, and must match one of the keys in States
.
States
is an object whose keys are state names and whose values are states, each of one of the types documented here.
Terminology: Runs, Flows, and States
A flow is a state machine, declared as a network of states with transitions between them. Each state performs a task of some kind and describes how to transition to the next state.
Every execution of a flow is called a run.
A run refers to a flow for its definition, but it also has
-
a current state — flows are abstract definitions, but runs are concrete
-
a data payload which is passed between states
Data Within Runs
Runs manage a data payload which is passed from each state to the next.
By default, the output of each state is written to the current payload, but
this can be manipulated by setting a ResultPath
which defines where in the
payload the data should be stored.
Data is referred to using JSONPath notation in flow definitions, and evaluated by runs against the current data.