tags:

views:

315

answers:

2

For the last few months my company has been using a product from a company called Informatica (previously AgentLogic) called RulePoint. This product has proven itself very easy to use with a well-developed and easy-to-use SDK for customization. The way we use the product for CEP is fairly trivial, we have 2 sources which we monitor for our rule data, the first being a JMS Queue, the second being a Jabber IM account. The product runs on any java-based application server (WebLogic, Tomcat, etc) and runs just about flawlessly.

Last week my boss says, "Hey, I've heard that we may be able to do the same thing we are doing with RulePoint with an open-source product called Drools. Check it out and let me know what you think."

I've heard of people using Drools for flow-based operations (validation, etc), however, I've never heard of anyone using their CEP product (Fusion) in practice. So, being the diligent worker, I have undertaken this task. I've downloaded all the files (version 5.0) and accompanying documentation and have started to read. I've read through just about all the docs and run most of the examples, but I still don't really see HOW drools works for CEP.

While there are examples for using Data (or Facts, I guess) from JMS, I don't see how this thing stays "running", continuously monitoring a queue until the application is actually stopped. RulePoint pretty must just sits and listens, however, Drools seems to not.

I could probably write a full-blown command-line application for our needs, however, I was hoping to leverage some of the benefits of using a application server provides.

I guess I'm looking for some good tutorials or an example of how someone is using Drools and CEP in production.

Thanks in advanced for any information, advice you may be able to provide.

+1  A: 

The CEP stuff is known as "Drools Fusion" - and what you probably want is "runUntilHalt" method to run and listen for event streams continuously.

Michael Neale
Thanks for your reply, I've built a prototype using the "runUntilHalt", however, I'm still kind curious as to how to implement this in a production environment. Is it proper to run this in a web container, as a stand-alone application, etc? That's probably my most serious concern is "how to run this nifty new CEP thingy I've built?". I know Spring has a lot of hooks for Drools, but is it for CEP, or just the rules engine (I believe that is the Expert or Flow product).
El Guapo
yeah normally a dedicated app would be listening for events - actually typically 2 - hot standby incase one goes down (fedex do that) - I think they use JMS to get events into it.
Michael Neale
A: 

Hi EI Guapo,

I am in the same boat. I am also looking curiously for the best choice for CEP in production environment.

I am planning as follows:

  1. Receive Events in Enterprise Service Bus (ESB)
  2. There will be two standalone Java applications (one as standby) for Drools execution
  3. ESB will feed events to first application
  4. In case it could not connect to first application then it will attempt to second
  5. Using JBoss POJO Cache working memory of first application will be synchronized with second
  6. After execution results will be posted to a JMS Q, from where it will be picked for further flow

This design will have high-availability/failover capability. The standby will always be ready to start execution in case first one fails.

You can get in touch with me, if interested. Together we can find a solution and publish it for others.

Raghuram