I am looking for ideas about the most efficient (compact) way to model an external event that would “interrupt” my “normal” process and can happen at any time. This event is generated by an external party and must carry information with it (a Message) and can be received only by a certain participant. If this message arrives, compensation of certain tasks that happened until then must also happen.
This same external party sends also messages that are needed for the “normal” flow to progress.
So I come up with this, which is an event based gateways after each task where I need to wait for another message to arrive:
External_bad-msg_triggering_compensation.bpmn (20.1 KB)
What I don’t like in this representation
- While the “good news” after the gateway is definitely needed to progress, (i.e. it contains information I need to process in the following task), It is just arbitrary that I check for the interrupting message at the same stage. In reality this “bad news” can come any time and can even interrupt a task while it is performed. So my representation is not accurate. Would the signal event be better? But how do I get lose of the event-based gateway??
- the flow is incredibly cluttered. Readability affected
Any hints / remodel appreciated
PS: I use BPMN only for functional representation, not real automation (I suppose you would call it “strategic modelling”), so for my purposes I value readability and ease-of-understanding more than “correctness” / automation-oriented representation.