First look: JBoss Drools grows up, and out

Red Hat's open source rule engine turns full-goose enterprise BRMS, and decision management suite, in Version 5.0

Page 2 of 3


Fusion is an extension to the rules engine that allows writing about events that occur over time. Take this rule, for example:

StockTick( symbol == "IBM" ) over window:time( 60s )

It filters the working memory for any StockTicks for IBM over the last 60 seconds, which would be difficult to write using traditional rules engines due to a lack of infrastructure for accessing clocks and expiring facts when they no longer match rules. Thus, they quickly run out of memory when trying to process such a rule.

This type of reasoning is often referred to as Complex Event Processing (CEP), although there is more to processing and correlating events than time components. CEP is a relatively new branch of applied artificial intelligence, and it's one of the most exciting new features in Drools 5.0. Unlike some competing commercial products in this space, which lack commonly used operators such as "not" and "exists," Fusion fully implements all first-order logic operators. Sadly, support for persistence of working memory, a requirement for long-running time windows and high availability, did not make it into Drools 5.0.


A significant percentage of the work in Drools 5.0 went into the enhancements to the simple rule flow for orchestrating rules found in Version 4.0. The Flow module, an integrated environment for both rules and processes, is in many ways the central component of the suite, where rules, events, and process orchestration are unified.

The idea of an integrated environment to manage rules, processes, and business events is an appealing one. Good decision models use all three, and there are several more or less accepted standards for modeling and executing business processes. Unfortunately, Flow does not adhere to any of them -- neither BPMN for process modeling, nor BPEL for execution on existing process engines. This is partly because the ideas developed in this version can't be adequately expressed in existing standards and partly due to the size of the task. There is some support for WS-HT (human tasks) semantics, but none for the Web services endpoints, so integration again becomes an issue.


Guvnor is a business-friendly front end for managing the business rules of an organization. This version is a nearly complete overhaul of the old BRMS component of Drools 4.0. It includes a deployment manager, fine-grained access control (with integration to LDAP repositories), integration with the Eclipse developer rule environment (via an Eclipse plug-in), WebDAV, and the ability to automatically run regression tests over rules, Web-based decision tables, and more. Guvnor makes use of the Apache Jackrabbit repository, so high availability and version control are possible through this JCR-170 storage mechanism.

Although feature complete, the user interface has clearly not received the spit and polish that commercial vendors have. It has the look and feel given to many applications by engineers, with usability taking a backseat to functionality. Decision tables, which lack the ability to span cells, could also stand some improvement. Generally, though, this module is a good foundation to build a customized rule management interface aimed at business users.

The Flow module is an integrated environment where rules, processes, and business events are brought together. Unfortunately, BPMN is not supported for modeling, nor is BPEL for orchestration.
| 1 2 3 Page 2