Workflows
Workflows let you chain multiple jobs into a directed acyclic graph (DAG) where each step runs a scheduled job and the engine coordinates execution order, data passing, conditional branching, and failure handling automatically.
What Is a Workflow?
A workflow is a named, versionable pipeline made up of:
| Concept | Description |
|---|---|
| Step | A node in the DAG — either a Job (Task), a Condition, or a Merge point |
| Edge | A directed connection from one step to another |
| Run | A single execution instance of the workflow |
| Data Mapping | A rule that passes an output field from one step as an input to another |
Core Concepts
Node Types
Every step in a workflow is one of three node types:
| Type | Description |
|---|---|
| Task | Dispatches a scheduled job. This is the primary building block. |
| Condition | Evaluates an expression and routes execution through a true or false port. Does not run a job. |
| Merge | Waits for all incoming branches to complete before allowing downstream steps to proceed. Does not run a job. |
Condition and Merge are virtual nodes — they control flow without dispatching any job.
Edges and Ports
Edges connect nodes and define execution order. They can carry optional source ports for conditional routing:
Step A ──────────────────► Step B (unconditional)
Condition ──── true ────► Step B
└── false ────► Step C (conditional)
Condition node outputs are named ports: true and false. Connect downstream steps to the appropriate port in the Workflow Builder.
Runs
Each time a workflow is triggered (manually or by cron), a WorkflowRun is created. It tracks:
- Overall status (
Pending→Running→Completed / Failed / PartiallyCompleted / Cancelled) - Start/end time, total duration
- Individual step statuses (one
JobOccurrenceper Task step) - Trigger reason