Deferred Choice
Deferred Choice is a workflow pattern. It it used to express a situation when the action you're going to take is not known till the point of executing it.
So, Deferred choice: When the choice is deferred to the point when we execute something
- for Petri Nets, visually looks identical to Exclusive Choice
-
Deferred Choice vs Exclusive Choice
- in Exclusive Choice after execution of $a$ you already know what activity to run
- but for the deferred choice there's a race condition between the activities
Example
Consider a flight:
- you can either print ticket at home or check in at reception
- based on this the following procedures are different
- it's a deferred choice: the company doesn't know which option you chose
In YAWL it's possible to tell the difference between XOR-split and Deferred choice
Consider this:
-
- we start with deferred choice:
- both actions are enabled, and both are offered to the user
- and the user decides what to do next
- but XOR-split is different
- based on some variables that were set before it (itself, not the user!) chooses the route
- for example, if variable
dosomething
is set to true, we follow the top branch
In BMPN the deferred choice is represented by a special-purpose gateway
Sources