Collapsed Subprocess
Introduction
This page describes a sub-process which is collapsed. That means by default only one task is visible and multiple tasks are hidden behind this task.
A Sub-Process is an Activity whose internal details have been modeled using Activities, Gateways, Events, and Sequence Flows. A Sub-Process is a graphical object within a Process, but it also can be “opened up” to show a lower-level Process. Sub-Processes define a contextual scope that can be used for attribute visibility, transactional scope, for the handling of exceptions, of Events, or for compensation.
— BPMN 2.0.2 Standard, 10.2.5, Sub-Processes
A Sub-Process is an activity that contains other activities, gateways, events, and so on, which in itself forms a process that is part of the bigger process. A Sub-Process is completely defined inside a parent process (that is why it is often called an embedded Sub-Process).
Sub-Processes have two major use cases:
- Sub-Processes allow hierarchical modeling. Flowable allows Sub-Processes to be collapsed, hiding all the details of the Sub-Process, resulting in a high-level, end-to-end overview of the business process.
- A Sub-Process creates a new scope for events. Events that are thrown during execution of the Sub-Process can be caught by a boundary event on the boundary of the Sub-Process, creating a scope for that event limited to the Sub-Process.
Using a Sub-Process does impose some constraints:
A Sub-Process can only have one none start event; no other start event types are allowed. A Sub-Process must at least have one end event.
Note that the BPMN 2.0 specification allows the omission of the start and end events in a Sub-Process, but the current Flowable implementation does not support this.
A process and a collapsed sub-process share the same BPMN file. Therefore, it is required that model ids are unique across process and all sub-processes. To separate the context the call activity can be used.
Properties
:::palette-item com.flowable.design:flowable-core-palette com/flowable/palette/core.process.palette CollapsedSubprocess