Branching & Merging
Branching
Deterministic XOR
Oftentimes an explicit decision by an actor or the value of a data determines which path should be chosen, one of the alternatives only. For such cases you can use controllers like Review, Vote (actor based) or Case (value based).
Non-deterministic XOR
Also here there is only one possible branch of all the alternatives, but in this case there is no upfront decision or value that sets the path. Multiple potential next steps are available and whichever one get’s picked up first, is continued while the other ones are removed.
AND
When branches need to be executed in parallel, AND branching is used. It allows to have multiple ongoing tasks in different parts of the program at the same time.
Merging
When a program employs AND Branching, it also has the possibility to merge the multiple active branches back again. Two modes exist for that:
Continue-after-First
This merging condition allows the instance to continue directly. It does not block the execution at any point.
Continue-after-All
Here the execution is blocked until all the steps from the incoming connections have concluded.