Skip to main content
A workflow graph is built from nodes and edges. Nodes do the work. Edges say where each node’s output goes. Ports let one node send different outcomes down different edges.

Nodes

A node is one step. It has a nodeId that is unique within the workflow, a type naming the plugin that implements it, and a config object holding that plugin’s options. The type decides the node’s role: A workflow needs at least one trigger (no inbound edges) and at least one terminal (no outbound edges), with processors in between. A trigger may emit many messages in one execution.

Edges

An edge is a one-way connection from a source node to a target node. Every message a node emits is delivered to each of its outgoing edges, so a node with two outgoing edges feeds both children (a fan-out). The slowest child sets the pace; see Delivery and back-pressure.

Ports

A node can publish messages on a named output port. An edge can name the port it listens to with sourcePort:
The ports a node offers depend on its plugin. Examples: the process plugin routes by exit code to success and failure, the HTTP plugin can route by status, the branch plugin offers one port per case, and the validate plugin sends rejected messages to invalid. The plugin reference lists each node’s ports. The error port is built in. When a processor is configured with onError: ROUTE, a message that fails all its retries leaves on error, carrying the reason, so you can send it to a dead-letter node. Edges without a port never carry dead letters, so failures cannot leak into the normal path. See Failure handling.
A message emitted on a port that no edge listens to is dropped. Validation rejects an edge that names a port the source plugin does not declare.

Several parents: join rules

A node with several parents receives the messages of all of them. A join rule decides what happens when one parent fails. It is set per node with engine.trigger: The rule belongs to the node, not to an individual edge.

Limits

A workflow can have at most 500 nodes and 2000 edges. Node ids, like every identifier, are limited to 256 characters.