Sunday, October 12, 2008

Drools 5.0 M2 New and Noteworthy Summary

5.o M2 New and Noteworthy Summary

The complete JIRA release notes can be found here.

Guvnor (the BRMS component)



  • Fine grained security (lock down access to the app per package or per category). Users who only have category permissions have limited UI capability (ideal for business users)
  • Import/export individual packages (to XML)
  • Execution server - access rules via XML or JSON for execution
  • Many more (check the JIRA logs !)
  • Many fixes (resource leak in M1 was fixed early on)

Drools Flow

Human task management is very important in the context of processes. While we allow users to plug in any task component they prefer, we have developed a human task management component that supports the entire life cycle of human tasks based on the WS-HumanTask specification, which is discussed in the following two blows:
Drools and WS-HumanTask
Creating a DSL for WS-HumanTask and when not to use a Rule Engine
Sample Eclipse views allow users to manipulate their tasks. The code can be found here.

The Drools Flow language itself has also been extended with new powerful functionality, including:
  • Event nodes that allow a process to respond to external events
  • Exception handlers and exception handler scopes to handle exceptions that could be thrown
  • A ForEach node allows instantiating a section of your flow multiple times, for each element in a collection
  • Data type support has been extended
  • Timers are integrated with common node types
As a result, new node types and properties have been added to the Drools Flow editor in Eclipse. You can also find examples of these new features in the integration tests (e.g. ProcessExceptionHandlerTest, ProcessTimerTest, etc.).

Finally, our pluggable work item approach allows you to plug in domain-specific work in your process in a declarative manner. We plan to build a library of common work items and already provide an implementation for sending emails, finding files, archiving, executing system commands, logging and human tasks.

Drools Expert and Fusion


fireUntilHalt()
Drools now supports "fireUntilHalt()" feature, that starts the engine in a reactive mode, where rules will be continually fired, until a halt() call is made. This is specially useful for CEP scenarios that require what is commonly known as "active queries".

Rule Base partitioning and multi-thread propagation
Drools ReteOO algorithm now supports an option to start the rule base in a multi-thread mode, where Drools ReteOO network is split into multiple partitions and rules are then evaluated concurrently by multiple threads. This is also a requirement for CEP where there usually are several independent rules running concurrently, with near realtime performance/throughput requirements and the evaluation of one can not interfere with the evaluation of others. This is a big topic and has several implications that I will discuss in a follow up blog post and the upcoming documentation.

XSD Model Support
Drools now supports XSD models, you can look at the unit test here to see how it works. Remember though the XSD model is generated as pojos local to the Drools classloader. A helper class is there to assist in the creation of the model in the packagebuilder. Once the data model is generated you'll typically use the JAXB dataloader to insert data.

Data Loaders

Drools now supports two data loaders, Smooks and JAXB. Smooks is an open source data transformation tool for ETL and JAXB a standard sun data mapping tool. Unit tests showing Smooks can be found here and JAXB here.

1 comment:

  1. this is nitpicking, but does "drools expert" imply drools is now an expert system shell? an expert system shell is a different beast than a business rule engine, so I think it's good to avoid confusing users.

    ReplyDelete