Advanced Branch and Join Patterns-Multi-Choice
Earlier I have posted the basic Patterns of P4 in Real modeling Process . These were the basic patterns which we use all the time and are fundamental in process modeling. Furthermore we must mention that advanced patterns are also a necessity in modeling world as they are also used extensively.
Starting from the common pattern which is called Multi Choice, we refer to a pattern which is placed so as to choose one or more parallel branches in which each branch is taken only if it satisfies a particular condition. This pattern is also called as Inclusive Or split. The difference between exclusive and inclusive OR is that exclusive_OR allows only one branch to direct the process where inclusive OR allows more than one path to be spawned.
The intent of synchronizing merge is to join branches spawned by a Multi-Choice(see above). That is to wait for all active paths in a parallel to complete. This Pattern is also known as Inclusive_OR_Join. Though the idea is intuitive and this pattern can help us solve many problematic areas, many BPM products cannot support it because of its implementation difficulties of tracking which branch was executed. Languages that use the Petri-Net conception of token passing to model control flow can implement such a pattern.
As far as BPEL is concerned, it uses the principle of dead path elimination, another Petri_Net inspired concept, to solve this problem.