I see the same kind of analysis being required in systems that send their “spraint” – often in the form of messages downstream for subsequent systems to figure out what happened.
We want events (a passenger checked in), but instead we get a giant message with all of the reservation data and somehow we have to deduce what happened.
Knowing the current state of something doesn’t tell us how it got to be in that state. If we are to try to figure out what happened from the state models we have to compare a previous piece of system spraint with the current one and look for differences. That is only sensible if the agent making the change can’t or won’t tell you what the change was.
In this day and age when we are in a mobile, somewhat reliable, but still constrained network world, it is extremely expensive to send giant messages around the system of systems when all that one of the systems might need is a little piece of knowledge that “something happened”.
Being told that something happened, vs having to deduce it makes the job of downstream systems way easier.
This line of thinking is fundamental to the architecture of the enterprise – organizing the enterprise around the business events that can happen, and then having meaningful interpretation and use of those events available instantly should be a goal.
Ask the executive out of whose budget the analysis os coming, “Would you like to be told what happened? Or would you like us to figure it out?” A business taxonomy of events becomes vital.
Would you prefer to know, “Passenger Chris Bird just boarded flight 1234” or here’s are a pair of booking records that show that Chris wasn’t boarded and then he was?