Wednesday, August 13, 2008

Screenshot of some new Drools Flow features

Drools Flow has evolved into a powerful workflow language for describing executable business processes. It is different from other existing workflow languages in that it allows advanced integration between processes and rules and offers unified interfaces and tooling to end users. The complexity of your business logic can be reduced and the agility of your processes can be improved by using rules inside processes in a smart way for managing a part of your logic.

The expressiveness of the Drools Flow language has been extended significantly in our latest version to support advanced business process requirements. This includes support for long-running processes (e.g. using states), human task management (and assignment), integration with external services, timers, exception handling, persistence, etc. The following screenshot shows for example two of our newest features: intermediate events and composite nodes.

Intermediate events (using a star icon) allow you to respond to events that are external to the process itself but may influence its flow. Events have a type (e.g. orderAborted) and can carry additional data that can be accessed inside the process once the event has occured. If a large number of events can occur during the execution of your process, using rules inside your process to handle these events and select the appropriate action can greatly simplify your process definition as well.

A ForEach node is an example of a composite node that allows you to execute a part of your process for each element in a collection (e.g. process each of the order items in an order separately). The process can wait for the completion of that sub-flow for each of the elements in the collection before continuing.

Another key feature is the integration with external services using (declarative, domain-specific) work items, but I'll cover that topic in another blog.

You can expect to see the addition of more of these 'patterns' in the future, as we intend to improve the expressiveness of our Drools Flow languages continuously!