Here are some comments and questions on CEP as a discipline, based on recent experience writing the Knol.
I happen to find use in some of the software that bills itself as CEP when working with real-time data. Mostly, I find that this software adds some good functionality that works in cooperation to traditional techniques like custom coding, or connecting ILOG or some statistical software to a message stream.
When I talk with people involved in mathematical finance, signal processing or pattern detection and analytics, and if they have a need for real-time processing, I'll show them some of this "CEP" software. Usually they get the idea pretty quickly and determine that to use this software, they would need to evaluate the EPL and other functionality in the context of solving their particular problem.
But then the question comes: "so, what exactly is CEP?" Is it just a term for "all the stuff involved in real-time processing" or is there some concrete structure to CEP that can help me in a definable way? Most people, in my experience, who do a little research into CEP find that, even though there is a book (the PoE) on this topic, it is very rarely referenced. Again, most people see a value in the products themselves, but don't understand exactly what CEP purports to add to existing disciplines.
For example, a friend read the Wikipedia page and asked me if all there is to CEP is the practice of looking at signals (in the form of events) and inferring a context, state or situation? He asked this in a skeptical tone because there are plenty of better established disciplines that deal with this.
He then asked me if there is any component of CEP that is not handled better by another, better established discipline.
So I started thinking about whether CEP wants to add anything, or if it's just an umbrella under which people combine ideas from other disciplines. In other words, is there a discipline called CEP?
If not, then what is CEP?
Is it an architecture paradigm? And if so, how is it different from an EDA?
Is it a collection of terminology and design patterns for detecting patterns in events? If so, in what way is it more useful than (or even as useful as) the multitude of existing terminologies and design patterns?
Is it the integration of several disciplines in order to process events? And if so, how exactly does CEP integrate these disciplines, other than just listing a bunch of stuff and stating that you might want to use some of it?
Does it have something to do with pattern detection? If so, what exactly? Does this boil down to using causality? And if so, what about other disciplines that also have algebraic operators like causality?
So I thought that I'd start writing the Knol in order to see if I could discern some concrete component to CEP. And I have to say that I found some things, but putting it together is tough.
I was trying to stick to CEP literature rather than just supplying my own advice on building software and detecting patterns. And clearly I was able to make some progress, but I have to say that there is no clear path to describing exactly what CEP adds to the many existing disciplines in this field. There are surely some design patterns to describe, although most of them come from other disciplines. And the work on causality and the causality operator is applicable to many problems.
Of course, no one said that CEP has to be its own discipline. It would be fine, I think, to use CEP as a word to describe the building of real-time applications or real-time pattern detection, or whatever.
So at the moment, what I have found is some interesting work on causality and event-related terminology, and mostly references to those disciplines from which CEP gets its design patterns.
So does that summarize CEP? I don't mean to imply something negative here, because even as a term for combining many disciplines, CEP has value.
