Fork node
What it does
The Fork node copies every input row to each of its outputs, so several downstream branches process the same data. A Router sends each row to one port; a Fork sends every row to every port in use.
Placed between Start and several Sources, a Fork also sets whether those Sources run at the same time or one at a time.
When to use
- The same rows feed several independent chains, for example a Load and a Notification, or a summary and a full extract.
- A downstream branch needs the complete input before it starts (use
Buffer All). - Several Sources must run in a fixed sequence, for example to fill a Cache before another branch reads it.
Configure
Select the node and press Configure to open Configure Fork.
Save and Done stay unavailable while a required setting is missing. Cancel discards the changes made since the dialog opened or was last saved. A message confirms each save.
- Outputs: how many outputs are in use, from 2 to 10. The + beside Out on the card adds one. Reducing the count deletes the edges on the outputs that are removed.
- Mode:
Streaming (default): forwards rows to every output as they arrive.Buffer All: waits for the full input stream, then sends it to every output.
- Output Labels: an optional name for each output, up to 40 characters. The label shows on the port and on its edges in place of the default name, such as
Out 1. A blank label shows the default name. Reducing the Outputs count clears the labels of the outputs that are removed. - Execution Order: applies when the Fork sits between Start and several Sources.
Current behavior (auto): Sources with separate downstream branches run at the same time. Sources that share a downstream node run one at a time.Sequential (one source at a time): Sources run one after another, in the order they were added to the canvas.Parallel (all sources at once): Sources run at the same time.
Ports
| Port | Direction | Kind | Notes |
|---|---|---|---|
in | in | data | Rows to copy. |
out1 ... out10 | out | data | One port per output. Every row goes to every port in use. Ports past the Outputs count are not shown. A label changes the displayed name only; the port stays out1 and so on. |
error | out | control | Receives the input rows when the node fails. |
Examples
Write and notify. Source > Fork (Outputs 2) > out1 to a Transform and a Load, out2 to a Notification node. Both receive every row.
Full extract and summary. Source > Fork > out1 to a Transform and a Load that write every row, out2 to a Compute node that totals by day, then a Transform and a Load.
Run two Sources in order. Start > Fork (Execution Order Sequential) > out1 to Source A, out2 to Source B. The Sources run one after another, in the order they were added to the canvas.
Troubleshooting
| Symptom | Cause | What to do |
|---|---|---|
| An edge disappeared | The Outputs count was reduced. | Raise the count and connect the output again. |
| Downstream branches start late | Mode is Buffer All, which waits for every row. | Use Streaming unless a branch needs the whole input at once. |
A branch receives rows in several batches under Buffer All | Large inputs are delivered in batches. | No action needed. Every row still reaches every output. |
The run fails with a Variable node and Parallel order | A Variable node is reachable from several Sources set to run at once. | Use Sequential or Current behavior (auto). |