Branching occurs when two or more flows are available at a certain point of the workflow. Branching can be exclusive or parallel.
If the branching is exclusive, a condition must be set to determine which path to go through. That condition can be expressed in FEEL language and rely on a data object.
When an exclusive branching is reached, two paths could be available. One at least must express a condition to determine if it should be used. The other one can be set to default so instead of creating two branching conditions, one for each path, just one branching condition is created and the other is set to default. It means that if the condition expressed in the path failed, then, automatically, the default tagged path would be used.
In the figure above, a parallel branching is presented. When it is reached in the workflow, two paths will exist concurrently and will be executed at the same time.
Like exclusive gateway, conditions are expressed to determine which path should be used. But with inclusive gateway, conditions are independent. It means that more than one path can be used if the condition expressed is fulfilled.
A default path can also be set. It will be used if no other expressed condition is fulfilled and so no other path can be used.
Event based branching is based on intermediate catch events (like message, timer, conditional) that are defined behind the gateway. The first event that arrives will trigger the path associated with the event and the remaining paths will be canceled.