Skip to Content

BPMN Error (interrupting) and Escalation (interrupting and non-interrupting) Events can be used in the PROCEED Engine. Throwing this events is possible from a Script and User Task, or from within a Subprocess. Catching is only possible with a boundary event.

Script and User Tasks Catching Events

The following shows a BPMN diagram with a Script Task having two catching, interrupting error events and two catching escalation events.

BPMN Process

If you create this diagram in PROCEED’s Management System, the following elements/attributes are automatically added for execution:

  • if you specify the (visible) name attribute for the boundaryEvent, an error or escalation element are added with a unique id on the root level next to process
    • the name and errorCode/escalationCode attributes of error or escalation are set to the same value of the name attribute from the boundaryEvent by default
    • an errorRef or escalationRef is linking the boundaryEvent with the respective error/escalation element
    • you can trigger a specific attached error or escalation event inside a Script Task or a User Task with a reference to the boundaryEvent name or errorCode/escalationCode
  • if no name attribute is specified on the boundaryEvent, no error or escalation element is automatically created
    • on one task there must at a maximum one not-named error and escalation event
    • if an error is thrown within a Script or User Task without any specific reference, then this not-named event is triggered
<bpmn:error id="Error_0p5lm2q" name="Problem_1" errorCode="Problem_1" /> <bpmn:escalation id="Escalation_07t55lw" name="Escal No 1" escalationCode="Escal No 1" /> <bpmn:process id="Process_1u7agcv" isExecutable="true"> <bpmn:scriptTask id="Activity_0re3sgy" name="Script with errors and escalations" /> <bpmn:boundaryEvent id="Event_0dmzh52" name="Problem_1" attachedToRef="Activity_0re3sgy"> <bpmn:outgoing>Flow_1wosgix</bpmn:outgoing> <bpmn:errorEventDefinition id="ErrorEventDefinition_062kbu7" errorRef="Error_0p5lm2q" /> </bpmn:boundaryEvent> <bpmn:boundaryEvent id="Event_1795ba4" attachedToRef="Activity_0re3sgy"> <bpmn:outgoing>Flow_0w2ip3t</bpmn:outgoing> <bpmn:errorEventDefinition id="ErrorEventDefinition_15vocsh" /> </bpmn:boundaryEvent> <bpmn:boundaryEvent id="Event_0j6ky2q" name="Escal No 1" cancelActivity="false" attachedToRef="Activity_0re3sgy"> <bpmn:outgoing>Flow_1tgumwe</bpmn:outgoing> <bpmn:escalationEventDefinition id="EscalationEventDefinition_0xpf778" escalationRef="Escalation_07t55lw" /> </bpmn:boundaryEvent> <bpmn:boundaryEvent id="Event_0htafdc" attachedToRef="Activity_0re3sgy"> <bpmn:outgoing>Flow_13j3ojn</bpmn:outgoing> <bpmn:escalationEventDefinition id="EscalationEventDefinition_0kx2mnk" /> </bpmn:boundaryEvent> <bpmn:endEvent id="Event_1vpjmsf"> <bpmn:incoming>Flow_13j3ojn</bpmn:incoming> </bpmn:endEvent> <bpmn:sequenceFlow id="Flow_13j3ojn" sourceRef="Event_0htafdc" targetRef="Event_1vpjmsf" /> ... </bpmn:process>

Subprocesses and Throwing/Catching Error and Escalation Events

BPMN Process

For throwing escalation and error events inside a subprocess, nearly the same rules apply as for catching boundary events:

  • instead of being triggered inside a script or user task, this events are automatically thrown by the BPMN engine
  • if the event’s name attribute (visual) is given, then an error or escalation element are added with a unique id on the root level next to process
    • the name and errorCode/escalationCode attributes of error or escalation are set to the same value of the name attribute from the event by default
    • an errorRef or escalationRef is linking the event with the respective error/escalation element
  • if no name attribute is specified on the event, no error or escalation element is automatically created
    • if an event that has no name is specified, then a not-named boundary event is triggered
<bpmn:escalation id="Escalation_18e9fre" name="Escalation 1" escalationCode="Escalation 1" /> <bpmn:error id="Error_144jikv" name="Error_1" errorCode="Error_1" /> <bpmn:process id="Process_1ojjagv" isExecutable="true"> <bpmn:startEvent id="StartEvent_1"></bpmn:startEvent> <bpmn:sequenceFlow id="Flow_0nty2qp" sourceRef="StartEvent_1" targetRef="Activity_1w0jsne" /> <bpmn:subProcess id="Activity_1w0jsne"> ... <bpmn:inclusiveGateway id="Gateway_1fdf7ee"></bpmn:inclusiveGateway> <bpmn:sequenceFlow id="Flow_1no4wsz" sourceRef="Gateway_1fdf7ee" targetRef="Event_1vdoptb" /> <bpmn:sequenceFlow id="Flow_1wx0ki4" sourceRef="Gateway_1fdf7ee" targetRef="Event_1s7o6hh" /> <bpmn:sequenceFlow id="Flow_0urj8zs" sourceRef="Gateway_1fdf7ee" targetRef="Event_0143olm" /> <bpmn:sequenceFlow id="Flow_0urj8zs" sourceRef="Gateway_1fdf7ee" targetRef="Event_0143olm" /> <bpmn:sequenceFlow id="Flow_0ce2ytk" sourceRef="Gateway_1fdf7ee" targetRef="Event_12tqyq3" /> <bpmn:intermediateThrowEvent id="Event_1vdoptb" name="Escalation 1"> <bpmn:escalationEventDefinition id="EscalationEventDefinition_15ep28m" escalationRef="Escalation_18e9fre" /> </bpmn:intermediateThrowEvent> <bpmn:sequenceFlow id="Flow_0v5hf7j" sourceRef="Event_1vdoptb" targetRef="Event_1d926ax" /> <bpmn:endEvent id="Event_1d926ax"></bpmn:endEvent> <bpmn:endEvent id="Event_0143olm" name="Error_1"> <bpmn:errorEventDefinition id="ErrorEventDefinition_11syieg" errorRef="Error_144jikv" /> </bpmn:endEvent> <bpmn:endEvent id="Event_1s7o6hh"> <bpmn:errorEventDefinition id="ErrorEventDefinition_1p0uaqb" /> </bpmn:endEvent> <bpmn:endEvent id="Event_12tqyq3"> <bpmn:escalationEventDefinition id="EscalationEventDefinition_0cpfe49" /> </bpmn:endEvent> </bpmn:subProcess> <bpmn:sequenceFlow id="Flow_0bb4gvw" sourceRef="Activity_1w0jsne" targetRef="Event_1tw963x" /> <bpmn:endEvent id="Event_1tw963x"></bpmn:endEvent> <bpmn:boundaryEvent id="Event_1b01on6" name="Escalation 1" cancelActivity="false" attachedToRef="Activity_1w0jsne"> <bpmn:escalationEventDefinition id="EscalationEventDefinition_0kywvic" /> </bpmn:boundaryEvent> <bpmn:boundaryEvent id="Event_1s78a23" attachedToRef="Activity_1w0jsne"> <bpmn:escalationEventDefinition id="EscalationEventDefinition_1nqgx43" /> </bpmn:boundaryEvent> <bpmn:boundaryEvent id="Event_0vjr6qb" name="Error_1" attachedToRef="Activity_1w0jsne"> <bpmn:errorEventDefinition id="ErrorEventDefinition_0uo6nxr" errorRef="Error_144jikv" /> </bpmn:boundaryEvent> <bpmn:boundaryEvent id="Event_0qfyaud" attachedToRef="Activity_1w0jsne"> <bpmn:errorEventDefinition id="ErrorEventDefinition_1mg9f0w" /> </bpmn:boundaryEvent> ... </bpmn:process>

Open Issues

  1. Currently not possbile to use Escalation and Error events on call acticivies
  2. Unnamed Error/escalation events don’t have a global error/escalation element without a value for errorCode/escalationCode
  3. The data mapping (error and escalation) is not standard conform.
Last updated on