Wiring data and nesting
Two authoring features go beyond drawing boxes: wiring data between steps, and editing nested workflows in place. Both are part of the free builder, so you get them whether or not you ever connect a cluster.
Two kinds of edge
Section titled “Two kinds of edge”An edge between two nodes is one of two things:
- A run-after edge is ordering only. The downstream step waits for the upstream one, and nothing is passed between them.
- A data edge connects an output of one step to an input of the next. It creates the same ordering dependency, and it also binds the producer’s output into the consumer’s arguments, so the value flows down the graph.
You draw a data edge the same way you draw any edge: from an output port on one node to an input port on another. A run-after port only connects to another run-after port. You can’t wire an edge that loops back, so any connection that would create a cycle is refused.
Typed ports
Section titled “Typed ports”Every node exposes typed ports. A port is either a parameter (a string value) or an artifact (a file or directory). Because the ports carry types, dagweave only lets you connect ports that fit. An edge that would not make sense, like feeding an artifact into a parameter, is rejected on the canvas instead of failing later at runtime.
For example, a git-checkout node exports its checked-out working tree as an artifact output. Wire that into a container node’s repo input and the container runs against the checked-out code, with no YAML plumbing to write by hand. A step that writes a value to its result file exposes a parameter output you can wire into a downstream field or a loop.
Imported and plain leaf steps get ports too. When you import a manifest, dagweave reads each template’s declared inputs and outputs and exposes them as ports, so even hand-written steps become wireable on the canvas.
Nested workflows
Section titled “Nested workflows”A workflow can contain another workflow. dagweave models this with a subflow node, and it does not treat the nested workflow as an opaque blob. It recursively lays the nested workflow out as its own nodes and edges, so every step inside it is editable on the same canvas. The nested template’s inputs and outputs are preserved exactly and rebuilt when you compile, so nesting round-trips.
You can also reference a reusable WorkflowTemplate by name rather than inlining it, which points at a template that lives elsewhere instead of copying its steps into the current workflow. See the template catalog for where those reusable templates come from.
One thing to know: a nested template written with Argo Workflows steps is
flattened to a dag when dagweave recompiles it, the same as any top-level
steps workflow. See Import and round-trip for the full list of
accepted deltas.