Not "changed" exactly.
Scenario
January 1 2012 we go live with an OrderProcessing system that is event sourced.
This system utilizes a Corticon Business Rules Engine that is running on some other system - in the ether.
A command RouteOrderToFulfillmentCenter is issued. This command results in the domain calling BusinessRuleEngine.DetermineFulfillmentCenter(orderCriteria).
Say I have three fulfillment centers (A,B,C) and on January 1, 2012, for order X, the rule engine says that fulfillment center B should get the order.
This, in turn causes an event OrderSentToFulfillmentCenter(B)
Now, fastforward to 2013 and some business person makes a change to the rules such that orders that used to go to B now go to A (maybe we closed B and no longer route orders there).
I know we never change events, but what happens if replaying events?
Say, for example, the rules engine is utilized by a read model adapter (something that would get replayed over and over).
How does this work out? Essentially, if I rebuild the read store I need the read model to indicate what the rules engine would have looked like at the time of the event, not at the current status - which would be the case since the business rules engine only knows about "now".
How do we handle these scenarios?
Forgive me, if I ask some novice questions - CQRS and especially ES is very new to me - been in the CRUD world for over 10 years. :)
Thanks!
Will