flyteidl/core/workflow.proto and flyteidl/core/workflow_closure.proto.
WorkflowClosure
The top-level container when registering a workflow. It bundles the workflow template with all tasks it references.The complete workflow definition including all nodes and output bindings.
All tasks that this workflow’s nodes execute. Required if any
TaskNode is present.WorkflowTemplate
WorkflowTemplate is the core workflow structure — a statically-analyzable DAG.
Node
ANode is one unit of execution in the workflow graph. Every node has a unique ID within the workflow and may reference a task, sub-workflow, or branch.
NodeMetadata
Node target types
TaskNode
Executes a registered task.WorkflowNode
Executes a sub-workflow inline or launches a separate execution via a launch plan.BranchNode
Conditionally executes one of several branches based on runtime values.GateNode
Blocks workflow progress until an external condition is satisfied.ArrayNode
Maps a sub-node over a list of inputs with configurable parallelism. Equivalent to a fan-out / map task at the workflow level.Minimal workflow spec example
The following is a minimal compiled workflow closure in JSON, representing a workflow with a single task node:WorkflowMetadata failure policies
| Policy | Enum Value | Behavior |
|---|---|---|
FAIL_IMMEDIATELY | 0 | Abort all running nodes as soon as any node fails. |
FAIL_AFTER_EXECUTABLE_NODES_COMPLETE | 1 | Let independent nodes complete before marking the workflow as failed. |