A Subprocess is a separable Activity. Subprocesses are used to border processes, to define abstractions and to hide complexity of a process model.
Collapsed Subprocesses hide their internal implementation. Collapsed Subprocesses can be defined in another or in an appropriate model.
Expanded Subprocesses contain another BPMN-Model, usually with separate Start and End Events.
Ad-hoc Subprocesses only consist of Activities. Every included Activity can be executed in any order as often as the End Condition is fulfilled.
Event-Subprocess (BPMN 2.0)
Event-Subprocesses are optional part of Subprocesses and are used to handle occurring Events in the bounding Subprocess. Event-Subprocesses are initiated (triggered) by an according Start-Event and differ from conventional Subprocesses in the fact that Event-Subprocesses are not part of the regular control flow. They are self-contained but executed in the context of the bounding Subprocess.
There are two types of Event-Subprocesses, interrupting and non-interrupting. To disambigute each case, BPMN 2.0 introduces new types of Start-Events:
- Event-Subprocess Interrupting and
- Event-Subprocess Non-Interrupting Events.
Event-Subprocess Interrupting Start-Events interrupt the control flow of the bounding Subprocess, whereas Event-Subprocess Non-Interrupting Start-Events do not affect the default control flow. If the Subprocess is multi-instance, this applies only to the corresponding instance. The following example demonstrates the use of Event-Subprocesses. During the Subprocesses "Booking Flight and Hotel" two Events can occur: The order can be cancelled, this interrupts the process and terminates after the Bookings are cancelled. Else the customer may send a status request to be informed how far the execution of the process has come. This is not interrupting the bounding Subprocess, the status request is answered in parallel.
An Event-Subprocess can optionally rethrow the event through which it was triggered to cause its continuation outside the boundary of the associated Subprocess. For example if the Subprocesses throws an Error Event it is caught by the according Event-Subprocess. If this cannot really handle the error, it can throw another Error Event to make it globally caught or terminate the whole process.
Call Activity (BPMN 2.0)
A Call Activity is a reference to a globally defined (Sub-)Process. The construct is comprehended as a 'wrapper' for the call of the referenced process while executing the underlying process. The control flow is handed over to the called process.
The call of a globally defined (Sub-)Process via Call Activity resembles the execution semantics of a conventional Subprocess though all not plain Start-Events (like Message Start Event, Timer Start Event etc.) are ignored.
Call Activities which were introduced with BPMN 2.0 match Reusable Subprocesses in BPMN 1.2, Subprocesses in BPMN 2.0 meet BPMN 1.2 Embedded Subprocesses.