At the level of this library, you must construct a graph using the underlying APIs. There’s no “pipeline language” support. Broadly speaking, there are atomic steps, containers, pipelines (the top-most container), inputs, outputs, variable bindings, and edges.

You can construct any graph that you like with these nodes and edges between them. An edge is a connection between an “output port” on a “source” node and an “input port” on a “destination” node. The edges are arbitrary; asserting that an edge exists between two ports creates the ports if necessary. (Some steps impose constraints on the ports that can be used, those constraints are enforced.)

For more information,