L3 - Default
Various events (e.g. signal, escalation) that synchronously cancel the triggering activity do not actually stop execution at that activity.
For example, see the attached process model.
- when "In Subprocess Task" is completed, then only task "Event Subprocess Task" should be active
- when "In Subprocess Task" is completed, both "Event Subprocess Task" and "After Subprocess Task" are active
- the execution tree is in an invalid state: there is the process instance (A) and a scope execution (B) for the event subprocess. B executes "Event Subprocess Task", A executes "After Subprocess Task"
Similar cases can be constructed with escalation events (though a little less obvious) and message events (though sending messages within one process instances is not foreseen by BPMN).
- the decision criterion whether to continue execution after throwing an event is either not existent (signal events) or too weak (escalation events)
- the Execution#isEnded flag should be checked before continuing execution; perhaps there is a good way to do this in a cross-cutting manner