Skip to content

Pins and routing ​

Every component sends and receives records through its pins, and every connection between two pins carries one type. This page shows how a record finds its way: which connections it takes, and how you branch, fan out and route by name.

Pin kinds ​

KindWhat it does
InputReceives records.
OutputSends records on. Plugins name their outputs after what they carry: Output, NoData, Timeout, Catch.
ContinueSends the record on after the component's own work is done, usually unchanged.
StartStarts the component. Leave it unconnected and the flow calls it once when it starts.

The plugin's page lists its pins and what each one carries. Select a pin in the designer to see its types.

How a record picks its connections ​

When a component sends a record out of a pin, each connection on that pin decides whether to take it:

The connection hasIt takes
A Route IdOnly records sent with that route id, such as the branch a Decision router picked
The type NoInputDataOnly the start signal of the flow
The type AnyDataEvery record, whatever its type
Any other typeRecords of that type

The route id is used once: after the record has left the pin, it is cleared, so the next component sends its records without one.

One pin, several connections ​

Draw several connections from one output pin and every connection that takes the record is called, one after another, with the same record. A change one branch makes to the record is visible to the branches after it.

To run branches in parallel, use these flow plugins:

  • Scatter sends the record to every connected branch at the same time; Gather waits for all of them and combines the answers.
  • Fork runs its branch in the background and returns at once, with an optional limit on how many run together.

To run steps in order with the same record, use Sync call: it runs its Output branch to the end, then sends the same record to Continue.

Branch by condition ​

Put a Decision router in front of the branches, give each outgoing connection a Route Id, and return the name of the branch from the condition. See Decision conditions.

When nothing matches ​

  • The pin has no connections. The record stops there. That is how you end a branch.
  • The pin has connections, but none takes the record. The flow stops with an error, because a record has nowhere to go. Give the connection the right type, use AnyData, or add a branch for the missing route.

To stop one request on purpose and keep the flow running, use Stop execution; to fail it, use Error and handle the failure with Try catch or Retry.

Viaducta documentation