A process A sends BPMN message to a process B. What if A sent the message before B has become ready to receive it, i.e. before a token arrived to B2?
- The message will be lost and B will wait for the next message, probably forever.
- Process engine will store the message sent and B will receive it when ready.
BPMN 2.0 doesn’t provide an answer. BPMS vendors didn’t come to consensus - some follow (1), others (2).
Under such circumstances if an analyst wants to stay within pure В, he/she should better follow (1) as a safer option: “not promised - can’t rely”.
Couple of thoughts on the matter.
1. The envelope-like BPMN marker is misleading. An envelope sent by convenient mail will wait in the mailbox until someone would get it from there - it’s behavior (2). A phone-like marker would be more adequate: if an addressee didn’t accept the call, it’d be lost - it’s behavior (1).
2. Try to completely avoid a situation when message is sent before an addressee is ready to receive it.
The next example is more or less safe - process B jumps to awaiting response message without delay:
Now let’s assume that B should continue as soon as some activity B2 is over and response from A is received:
It’s not safe: if B2 delays, the response message could be lost and B would be stuck at B3 forever.
So it’s better this way: