Skip to content

Flow to flow ​

Split a large integration into flows that each do one job, and let them use each other. Pick the way by what the calling flow needs back.

You needUse
To start another flow, without passing dataStart flow
To send records to a running flow, and get an answer backPipe client → Pipe listener
To reuse a flow as a component in many flowsPublish the flow as a plugin
To reach a flow on another machine, or from another systemHttp client → Http listener, webhooks, or Kafka, MQTT or NATS

Start another flow ​

Start flow starts the flow you pick, as if you pressed Start. Its Continue pin fires as soon as the flow has started or, with WaitForFinish, when it has stopped. Use it to chain jobs that run once:

text
Timer → Start flow (import, WaitForFinish) → Start flow (report)

The started flow gets no data from the caller. A flow that keeps running, because it has a Timer or a listener, never finishes.

Call a running flow ​

A Pipe listener is the entry point of a flow that serves other flows; a Pipe client calls it. With a two-way listener the client waits for the answer and sends it on.

text
Customer service:  Pipe listener (GetCustomer) → Table reader → Data mapper → Pipe listener Response
Caller:            Http listener → Pipe client (Customer service/GetCustomer) → Http response

When you pick the listener in the client, the client takes over its request and response types. The called flow is started if it is not running. Errors in the called flow come back as errors of the Pipe client, so a Try catch in the caller handles them. Pipes run between flows on the same machine.

Reuse a flow as a component ​

Publish a flow as a plugin and it appears in the toolbox like any other plugin. A Plugin port receives the record and a Plugin port response sends the result back. See Publish a flow as a plugin.

Across machines ​

Between machines, or to and from other systems, use the transport that fits: Http client and Http listener for request and answer, Webhook sender and Webhook receiver for notifications, and the event plugins for streams.

Sync call does not call other flows: it orders steps inside one flow. See Pins and routing.

Viaducta documentation