Search code examples
javabpmncamunda

Are signal event and message event interchangeable in BPMN?


They do almost the same thing.

Can I say that they are interchangeable?


Solution

  • No they don't do the same thing. The official documentation says:


    Message events: Message events are events which reference a named message. A message has a name and a payload. Unlike a signal, a message event is always directed at a single recipient.


    Signal events: Signal events are events which reference a named signal. A signal is an event of global scope (broadcast semantics) and is delivered to all active handlers.


    So that means a message event should be used to trigger a SINGLE receiving-task and a signal event should be used to trigger ALL receiving-tasks with that signal

    Furthermore if it comes to designing your processes, you shouldn't always find a solution that 'just works'. You should also consider the fact of readability and understandability when someone else sees your diagram. If there is a message thrown in your process you should definetly model a message-event and not try to model a workaraound that makes the same but looks different.

    For further reading here are the links to the events in the documentation:

    https://docs.camunda.org/manual/7.10/reference/bpmn20/events/message-events/

    https://docs.camunda.org/manual/7.10/reference/bpmn20/events/signal-events/