Branching and repetition
A flow is rarely a straight line. Four steps handle decision, joining, and repetition.
Condition
Chooses between two paths based on a comparison. The exits are called Yes and No.
You build the comparison by choosing a value, an operator and, when the operator needs one, a value. The operators offered depend on the value's type — you cannot ask for "is greater than" on a text.
And that is intentional: implementing them as "contains" would approve xyzABC for "starts with ABC". When the operator genuinely exists, it will appear.
Without the No path, the run simply does not continue when the comparison is false. If the "otherwise" matters, connect it.
Choose a path
For three, four, or more alternatives, use Choose a path rather than chained conditions.
- The paths are evaluated top to bottom; the first match wins.
- The order is a visible list, not a consequence of the layout.
- The value is evaluated once, before all the cases — two cases never see different values.
- Up to 12 paths.
Use the default path. Without it, an unexpected value stops the run without taking any path. Publishing warns when it is missing.
The path taken is recorded in the step's output. Routing consults that record rather than re-evaluating — what the audit shows is what the run did.
Combine results
When two or more paths need to meet again, connect them to Combine results. It waits for all of them to resolve and gathers what each produced.
| Choice | Options |
|---|---|
| How to combine | One field per step (recommended) · A list, in connection order |
| Name of each source | Left blank, the step's name applies |
| If a source brings no data | Include as empty (recommended) · Leave it out · Fail |
The sources come from the connections arriving at the step, not from a typed list: a typed list could disagree with the layout, and it is the layout you believe.
A path that did not run appears named among the sources with no data. Including the empty explicitly is the default so an incomplete result does not look like a complete one.
If two sources produce the same key, publishing is refused. Without that, one would silently overwrite the other — and an object with one key fewer is still a valid object.
For each item
Repeats the same treatment for each item in a list, delegating to a published agent: each item becomes a run of its own.
| Field | Use |
|---|---|
| List | Where the items come from |
| Agent | Who handles one item |
| What it receives | Assembled with "the item" and "the index" |
| Maximum items | Required. Ceiling of 50 |
| If an item fails | Stop, or continue and record |
Produces: the results, the items that failed, how many were handled, and the total.
Two properties matter in practice:
- The list is frozen on the first pass. If the run resumes, "item 3" still means the same thing.
- Progress is stored. A resume continues where it stopped; no item is processed twice.
The maximum is required on purpose. A list coming from outside can have a thousand elements, and a thousand child runs is not a loop — it is an incident. A list longer than the maximum fails; it is never silently cut.
An empty list is a legitimate result, not an error.
What publishing checks
- Every step must be reachable from the start.
- There must be no cycle.
- Every step that is not a Result must have an exit.
- Every path declared in a switch must be connected to some destination.
Next steps
Was this page helpful?
Report a problem on this pageDo not send passwords, keys, tokens, or customer data.