Skip to content
← All terms

Signal Event

An event marked with a triangle that broadcasts or catches a named signal — a fire-and-any-catcher message.

What a signal event does

A signal event is a circle with a triangle marker. A throwing signal event broadcasts a named signal; a catching signal event listens for one. Unlike a message, which has exactly one recipient, a signal is fire-and-anyone-catches — any process instance (in any process, in any pool) that is waiting on a catching signal event with the matching name will react.

Signals are the BPMN equivalent of event-bus broadcast in software architecture. They are how you model "when this happens, everyone who cares knows" without listing every recipient explicitly. A message would force you to draw a message flow per recipient; a signal lets one event reach all of them.

When a signal beats a message

  • Company-wide announcements — "product launched", "acquisition closed", "incident declared". Any process that listens reacts.
  • Pub/sub patterns — many listeners, one publisher, and the publisher does not need to know who is listening.
  • Cross-process coordination — a signal fired in process A is caught by process B and process C without drawing explicit message flows between them.
  • Broadcast cancellation — a terminate-all-listeners signal kills every active instance waiting on it. Useful for "stop everything, emergency".

Signal events in LucidFlow

LucidFlow emits signal events when the source document describes one-to-many notifications ("announce to all teams", "notify the entire organisation"). Each signal gets a canonical name derived from the trigger; matching catching events across different diagrams share that name and thus the same broadcast semantics in the exported XML. The cost dashboard does not multiply signal cost by the number of listeners — that is a logical property of the broadcast, not a physical one — but the duration of every catching instance is tracked separately.

Frequently asked questions

What is the difference between a signal and a message?

A message has one sender and one recipient — a point-to-point communication across pools. A signal is broadcast — one sender, any number of listeners, no message flow needed. Different markers (envelope vs triangle), different runtime semantics.

Can a signal be scoped?

By name. Signals are matched on their `signalRef` — a catching event reacts only to thrown signals with the same reference. There is no built-in namespace or access control, so naming conventions matter.

Do signals cross pool boundaries?

Yes. Unlike sequence flows (pool-internal) and message flows (pool-to-pool, one-to-one), signals are global. Any catching instance in any pool can react to a matching thrown signal.

Related terms

← Back to the full glossary