Subprocesses
The subprocess represents a group of tasks which act together to perform a part of the process.
Reusable

BPMN element:
<bpmn2:callActivity>
.Description: Lets you call a process whose definition resides outside the current process.
Configuration: Use
CalledElement
,Independent
, andWaitForCompletion
to configure which existing process definition to call and how to call it: as part of the calling process or as a new process instance (Independent
), in a synchronous or asynchronous fashion (WaitForCompletion
). UseAssignments
,DataInputSet
, andDataOutputSet
to map variables from/to the calling process.
Multiple instances

BPMN element:
<bpmn2:subProcess>
Description: Lets you loop (create multiple instances of a group of elements)
Configuration: Use
CollectionExpression
,Variable Definitions
, andVariable Name
to configure the loop and assign the variable to pass inside the loop
Ad hoc

BPMN element:
<bpmn2:adHocSubProcess>
Description: Lets you define an unstructured subprocess definition
Configuration: The
AdHoc ordering
attribute tells the engine to execute a multi-instance subprocess in parallel or sequentially
Embedded

BPMN element:
<bpmn2:subProcess>
Description: Lets you define an embedded process definition (not reusable from other process definitions)
Configuration:
Variable definitions
lets you configure variables at the subprocess scope
Events

BPMN element:
<bpmn2:subProcess>
Description: Lets you define an embedded subprocess that can be triggered by a specific event (for example,
Signal
) and is executed in an asynchronous fashionConfiguration: No specific configuration required