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!


  1. Are any persistent layer in drools flow?

  2. we should have persistence and transactions support very soon.

  3. Yes, process definitions are persisted in a (readable) XML format, while the state of running process instances can be persisted using a custom binary format. And as Mark already said, we are working on creating an out-of-the box solution offering persistence and transactions for the final 5.0 release.

  4. How does this relate to jbpm?

  5. It doesn't. jBPM 3.2 is not suitable for extension and/or embedding in our given use cases - which is why jBPM4 is a complete rewrite from scratch. jBPM4 did not exist when we started this and the two teams have not been able to reconcile their approaches - specifically we believe in a unified approach to rules and processes each as first class citizens, they don't and want processes to be a separate entity.

  6. Ease of communication with the team was highlighted as the strength of UI design companies . They are satisfied with the overall quality of work across all projects and the personal relationship that was formed.