An Escalation Event in BPMN symbolizes a situation where an issue or condition within a process requires attention at a higher level or a different domain.
⚠ Escalation Events are typically used in scenarios where the standard process flow is disrupted, and involvement from other actors becomes essential for resolution.
They are mostly used to communicate from a subprocess to an upper process.
In a production environment, if a machine malfunctions frequently or requires calibration, the issue might be escalated to a specialized technical team.
This team then initiates a comprehensive diagnostic process to identify and fix the root cause.
After a customer's order is processed, a non-interrupting escalation event is triggered.
This event sends a notification to the customer that their order is being prepared for shipment.
The key feature of this event is that it is non-interrupting, which means the notification to the customer does not halt the process of moving the order to the shipping phase.
It allows for parallel processing to allow the process to continue seamlessly to the next step.
When the machine manufacturing a part requires calibration, it can be escalated to a parent process where a process is followed to notify or handle the alternate path by catching the throw event (Escalation End Event) from its child process.
The same can be done for our order processing scenario.
A non-interrupting escalation event is caught by the parent process, alerting the customer that their order is ready for shipment.
This boundary event operates in tandem with the core process, updating the customer in real-time while maintaining uninterrupted progression to shipping.
This parallel processing ensures that there are two active instances within the workflow hierarchy, with one instance continuing the child process and the other managing customer communication on the parent level.
⚠ The same end result was achieved by three different use cases for the escalation events.
The choice of event type should be based on the particular application and context, as this will inform the most appropriate design decision for your process.
In our earlier examples, we demonstrated how to use throw and catch events.
The End Escalation event functions similarly to the Intermediate Throw Escalation event, with the key distinction being its occurrence at the end of a particular pathway.
It's important to note that the End Escalation event doesn't always signify the termination of the entire process.
Particularly in scenarios involving non-interrupting events, the process instance may continue independently even after the escalation event is triggered.
In this scenario, we observe an End Escalation following a Boundary Event.
This thrown End Escalation can be intercepted by the boundary event of a Call Activity or at the start of a sub-process, as shown in previous examples on this page.
In another example, we see an End Escalation event being thrown within a sub-process and caught at the sub-process's boundary.
The application of the last example aligns with the first, where the escalation can be intercepted either on a Call Activity or at the beginning of a sub-process.
It's crucial to remember that whether a process is created or terminated in these contexts depends on whether non-interrupting or interrupting events are utilized.
Setting up an escalation event within a workflow in SpiffWorkflow involves defining both the escalation trigger (throw event) and the point where the escalation is handled (catch event).
**Define the Escalation ID**: Determine the task or process stage where an escalation might need to be triggered due to exceptional circumstances and decide on a unique identifier for your escalation event.
This can be a boundary event attached to a task where the escalation should be caught and handled, or an intermediate event in the workflow where the escalation process converges.
After setting up the escalation event, test the workflow to ensure the escalation is triggered under the right conditions and that the catch event handles it as expected.