This is a BPMN example that shows the use of Cancel Activity pattern.
The Cancel Activity Pattern is used when it is necessary to terminate all concurrent activities if one of them is terminated.
In the example, the Receive Status Notification has no human interaction and is waiting for an external notification that might never come.
Adding a Discriminator and N-out-of-M Join pattern helps solve this problem for individual activities. The upper leg inside the Split/Join in this example has the transition with the long running activity with no human interaction. The lower transition was added here to:
1. Give the clerk the chance to view the orders that are pending in the upper leg and
2. Allow the clerk the chance to cancel any orders that are pending in the upper leg.
Once the clerk cancels an instance, it reaches the Complex Gateway Join activity. The instance is removed from the Receive Status Notification activity and it continues on through the rest of the process.