I haven't had time to finish the power of events, but I thought I'd ask this questions anyways. Going back to the trading example. Say we want to know what the average bid/ask price is and compare it to the actual transaction price. Assuming the system allows the user to cancel a bid/ask, "should the system recalculate the aggregate?"
Humans are error-prone and make mistakes. If the system didn't update the aggregate, the margin of error could increase over time. Say we have a rule that gets a running average every 10 minutes, 20 minutes, 30 minutes and hour.
At T0 Joe Trader enters a buy order for 100,000 shares of IBM.
At T1, Joe's boss notices he made a mistake and tells joe
At T2 Joe cancels the order and changes it to 1,000 shares of IBM.
From a business perspective, I want the aggregates to be correct. This means the system must recalculate any aggregate related to that transaction. From an end user perspective, I see several challenges.
1. how should the EP language handle this?
2. if the EP language allows extensions and/or built in libraries for calculations, how should the system handle this? Clearly, we need to tell the system the corrective calculation for each function. We might have average and updateAverage.
3. In the situation where other rule uses the average, the system needs to provide Logical truth maintenance. My question is this, "Which CEP engines support logical truth maintenance?" If a CEP engine doesn't provide logical truth maintenance, my question is "why? and what is the justification?"
Related to the issue of mutability is temporal versioning. If the user wants to see the cause of any given event at any given time, the system must provide temporal versioning. If it doesn't, it wouldn't provide accurate information. How many CEP engines address these issues?
I ask because the last 8 months I've been building a multi-dimensional temporal versioning system in my day job. I'm curious to hear if other people have ventured into these issues in the context of event processing.
peter
