Add the Split plugin type: choose which live flows a node takes

Splitting becomes a pluggable node policy, the outgoing counterpart to a join. After the engine filters a node's outgoing flows to the live ones (those whose condition holds), the node's split decides which of them the token follows:

  • all (the default): take every live flow -- a parallel fork, or an inclusive split when the flows carry conditions.
  • first: take only the first live flow -- combined with conditions, this is the exclusive choice.

Split and condition compose cleanly: conditions say which branches are eligible, the split says how many. A node with no split takes all, so existing definitions are unchanged. Custom splits (weighted, random) are now just plugins.

The node config gains an optional split ({plugin, settings}); the engine applies it in both the normal advance path and a firing gateway's outgoing. Kernel test covers first taking one branch and first + conditions giving the exclusive choice.

Merge request reports

Loading