I'm currently reading the BPMN spec (Version 2.0.2). I'm a little bit confused about the number of allowed message flows in BPMN:
- For End Events the Message Flow Connections section states (10.5.3):
An End Event MAY be the source of a Message Flow; it can have zero (0) or more outgoing Message
Flows. Each Message Flow leaving the End Event will have a Message sent when the Event is
triggered.
For
Send Tasks the spec. says (10.3.3):
... One or more corresponding outgoing Message Flows MAY be shown on the diagram.
... The Message is applied to all outgoing Message Flows and the Message will be sent down
all outgoing Message Flows at the completion of a single instance of the Task.
- For Receive Tasks the spec. says (10.3.3):
... One (1) or more corresponding incoming Message Flows MAY be shown on the diagram.
... The Message is applied to all incoming Message Flows, but can arrive for only
one (1) of the incoming Message Flows for a single instance of the Task.
For Intermediate Events the
Message Flow Connections section states (10.5.4):
- A Message Intermediate Event MAY be the target for a Message Flow; it can have one incoming
Message Flow.
- A Message Intermediate Event MAY be a source for a Message Flow; it can have one outgoing
Message Flow.
The last statements for Intermediate Events is what makes me wondering:
1. Why is an Intermediate Throwing Message Event not allowed to have multiple outgoing message flows? (It could have the same semantics like the Send Task.) Or is it allowed, since the UML diagram seems to always allow multiple (sourceRef) message flows for all InteractionNodes (section 9.4)?
1.1 Am I right that the semantic of multiple outgoing message flows for an End event is to send exactly the same message like it is with the Send Tasks? Or is it allowed to send different messages to other participants, because this is not further specified?
2. Why is an Intermediate Catching Message Event not allowed to have multiple incoming message flows? Or is it allowed, since the UML diagram seems to always allow multiple (
targetRef) message flows for all
InteractionNodes (section 9.4)?
2.1 For Receive Tasks without a multiple instance marker it is allowed to have multiple incoming message flows. Is my understanding correct that this is useful, if someone can get the same message from
multiple participants? (This would be a race condition, but I think
it is not a big problem for BPMN since the remaining incoming messages are
simply discarded.)
Thanks in advance,
Kai