So, What is This CEP Good For?
When talking to other developers I need to explain, at least once a week, what this CEP stuff that I’m working on is good for.
Developers, with a slightly simplified view of the world, falls into surprisingly few categories.
- There’s the database guys, they solve everything with a database in the middle.
- There’s the Java crowd, everything is built around a application server. They don’t like the database guys.
- Then there’s the poor souls (a joke, I promise) stuck in .net lalalaa land. They use at least two products from Microsoft in each solution. They fear the Java crowd.
- Then there’s the free spirit Linux coder. He (She…) codes in php, mysql, python, perl, bash or whatever it takes to make it work. They never understood why the others complicate things.
That’s it. Ok, there’s the wannabe coders too. They write macros in every application that supports it. And they proudly display their achievements to other non-coders.
So, for this crowd (drove, sloth, wake, train, murder, charm, crash or whatever a collection of programmers is called) I often need to explain why we need just another technology…. easy. yeees…
From now and I’ll try to explain things using pictures and non-technology. Here’s my first attempt:
This is a screen dump of FleetNotice (think real-time temporal geofence and much more), an application built ontop of ruleCore.
Basically what is does is to tell a poor guy who is sitting at his console looking at 348 couriers moving downtown manhattan if all his couriers are doing the right thing. Or to be more precise, it tells him when someone is doing something they are not supposed to, otherwise it shuts up. Looking at 348 moving icons and trying to figure out if somebody is doing something wrong is mildly fun. So he calls in help in the form of FleetNotice.
So, back to explanation. What if you would be required to code this application without CEP? Pick your favorite tool – Application server, database or just plain code.
How long would it take? How complex would the resulting application be?
With a CEP server like ruleCore it’s just a matter of a couple of rules. About 20 or so to do more or less all types of monitoring that a sane person can think of.
FleetNotice can produce alerts like this without breaking a sweat:
"Alert me if Couriers Ben, Jerry and Mr Smith diverts from their designated route for more than five minutes and they take more than 20 minutes between the waypoints (40 minutes is ok if it’s between 4pm and 6pm on fridays, except last friday of month), but only on working days. Also alert me if the courier does not arrive before 6pm to it’s destination and alert me also if he does not leave the starting point before 1pm"
And to add to misery you must deliver the alert within one minute to the operator and if the server reboots in the middle you really can’t loose track of things. And yes, there’s not only Ben, Jerry and Mr Smith in reality. I made those up. In reality they are thousands of moving objects.
So, there’s the case for CEP that most developers understand. Or at least they slowly start to appreciate the beauty of CEP. It’s not a replacement for their beloved databases or application servers. But for the right type of problems, it’s feels so much more natural.
Get it?

What’s CEP good for? I would add real time Business Intelligence:
http://blogical.se/blogs/jahlen/archive/2009/09/24/a-first-look-at-sql-server-2008-r2-streaminsight.aspx
/Johan
Real-time business intelligence is indeed an area where some CEP can be used. Not entirely sure where the benefits of CEP would be the biggest as there seems to be all kinds of business intelligence tools already doing a good job. I suppose many of these existing tools can handle things more or less in real-time if required.