Signal Throw and Catch Events

Use signal throw and catch events when the outcomes of certain tasks should determine which of several possible process flows in a process occur. Unlike gateways, signal throw and catch events can start or stop other process flows depending on events in a different branch of the process.

A signal throw event can broadcast a signal that a signal catch event will listen for. Upon receiving the signal, the signal catch event can act on the signal. In BPMN, this is referred to as "throwing" and "catching" a signal. When the signal is received, the process flow that starts from the signal catch event runs.

In the process diagram, signal throw events are represented by the following symbol: . Signal catch events are represented by the following symbol:

Example: A process simultaneously routes a proposal form to a manager, an administrative assistant, and the accounting team for review. This parallel routing ensures proposals are processed by all three parties in a timely manner. However, if the manager rejects a proposal, the administrative assistant and accounting team no longer need to continue their review. To account for this situation, a signal throw event is placed in the process flow that's taken if the manager rejects the proposal. Corresponding signal catch events are attached to the administrative assistant's and accounting team's user tasks. If the signal throw event is reached, the signal catch events attached to the user tasks will cancel the user tasks and the process flow paths out of those signal catch events will be taken. Those process flows lead to email service tasks that alert the administrative assistant and accounting team that they no longer need to continue working on the proposal.

ClosedDiagram 1: Main process.

ClosedDiagram 2: Approval subprocess.

Note: The listening signal catch event will only receive a broadcast when the user task or sub-process is active or has not yet run. If the process has already moved past the user task or sub-process, the signal catch event will not be listening for a broadcast signal.

To configure signal throw and catch events

  1. Drag a signal throw event onto the canvas and connect it to a spot in the process flow.
  2. Double-click the signal throw event to configure it.
  3. In the Name text box, provide a descriptive name for the signal.
  4. Under Description, describe what the event does in the process.
  5. Under Broadcast signal, choose or create a signal that this event will send out when it's reached. Signals can be created by selecting Create a signal from the menu and typing a name in the dialog box that appears. Existing signals can be edited by selecting them in the menu and clicking Edit.
  6. Right-click the user task or sub-process from which you want a process flow to run when the first signal intermediate event is reached.
  7. Select Attach signal event.
  8. Double-click the attached signal event.
  9. In the Name text box, provide a descriptive name for the event.
  10. Under Description, describe what the event does in the process.
  11. Under Listen to signal, select the signal you configured in step 4. This attached signal event will now "listen" for the signal that is "broadcast" when the other signal intermediate event in the process is reached. It will run when it receives that signal.
  12. By default, the user task or sub-process will be interrupted and canceled when the attached signal catch event runs. Select the Do not interrupt the attached activity if you want the user task or sub-process to continue running.
  13. Note: The process flow out of the attached signal catch event will begin running as soon as the broadcast signal is received. It will not wait for the user task or sub-process to finish running.

  14. When you are done, define a process flow that will be taken if this signal intermediate event is run.
  15. Continue to attach signal catch events to any tasks you also want alternate process flows to run from when the first signal throw event "broadcasts" its signal.