Event Subprocess
An event subprocess is a special subprocess type in that it is triggered by an event caught in the same process level. In the diagram, an event subprocess has a dashed border and no incoming or outgoing sequence flows. Like a regular subprocess, it may be drawn either using a collapsed shape, with the trigger icon shown in the top left corner and the child level defined in a separate diagram, or using an expanded shape, with the trigger indicated by the start event.
Event Subprocess Type
The Event Subprocess trigger is specified using the Change Shape context menu. Selection of interrupting vs non-interrupting behavior is specified using either the Attributes context menu on the event subprocess or the start event of the child level. An interrupting event subprocess is indicated by a solid ring shape for the start event, and a non-interrupting event subprocess is indicated by a dashed single ring.
Behavior
The trigger of an event subprocess has the same meaning as the trigger of a boundary event on an imagined subprocess containing the process level. For example, in a top-level diagram, an event subprocess with a Timer duration trigger fires if the process does not complete before the trigger fires. Or, in a child-level diagram, an event subprocess with a Message trigger fires if the message flow arrives while the child level is running.
If the trigger is interrupting, the regular process level terminates when the event subprocess starts, and the process level is complete when the event subprocess completes.
If the trigger is non-interrupting, the regular process level continues when the event subprocess starts. In this case, the event subprocess represents a parallel thread of execution, and the process level does not complete until both the regular process level and the event subprocess are complete.