Monday, December 28, 2009

An update on BPMN 2.0

A few months ago we announced that we would be supporting the Business Process Modeling Notation (BPMN) 2.0 specification as the underlying XML format for our business processes. This blog will give you an update on the work that has been performed so far.

Those that know the BPMN 2.0 specification know that it defines a rather extensive set of constructs that can be used to model business processes, both how they should be visualized and represented using XML. The Drools team has decided, after carefull evaluation of the BPMN 2.0 draft, that using this standardized (yet extensible) XML format could only benefit our users (compared to our proprietary XML format), so we started creating a parser that could read in BPMN 2.0 XML, translate it into our internal process model and execute it. Note that our BPMN 2.0 engine is nothing new! It's simply a different parser for our existing Drools Flow process model (which has proven to be quite powerful already, since we did not have to add new features to the Drools Flow engine yet).

Anyway, these are the BPMN 2.0 constructs that are current included:

  • Activities
    • Script Task (Java or MVEL expression language)
    • Task
    • Service Task
    • User Task
    • Business Rule Task
    • Manual Task
    • Send Task
    • Receive Task
    • Reusable Sub-Process (Call Activity)
    • Embedded Sub-Process
  • Events
    • Start Event (None, Conditional, Signal)
    • End Event (None, Terminate, Error, Escalation, Signal, Message)
    • Intermediate Catch Event (Signal, Timer, Conditional)
    • Intermediate Throw Event (None, Signal, Escalation)
    • Non-interrupting Boundary Event (Escalation, Timer)
    • Interrupting Boundary Event (Escalation, Error, Timer)
  • Gateways
    • Diverging
      • Exclusive (Java, MVEL or XPath expression language)
      • Inclusive (Java, MVEL or XPath expression language)
      • Parallel
    • Converging
      • Exclusive
      • Parallel

For those that might not be familiar with the BPMN2 specification, this means that

  • almost all activity types are currently supported, the ad-hoc sub-process is still under development and the transaction has not been implemented yet
  • most of the event types are supported as well, cancel and compensation are the missing ones, and the aggregation of different types as multiple or parallel multiple
  • events can be used in all the various situations where they can be used (i.e. as start, intermediate or end event, interrupting or non-interrupting boundary events, etc.) except event sub-processes which are not yet supported

There is still a list of issues to be resolved before we can claim full process execution compatibility with the BPMN2 specification, but the most used (and thus most important) process constructs are already supported. Thanks to our community support and contributions, we hope to complete this as soon as possible. The latest code and lots of examples can be found on our SVN repository.

But, more importantly, BPMN2 processes are integrated in the entire Drools tool chain. This means that the entire life cycle of a business process (from modeling, deployment and execution to monitoring and analysis) is supported. For those who want to have a more detailed understanding of all these different phases and how Drools Flow helps you in each of those, I have recently created some web pages that contain a detailed description of each of these phases and how Drools can help you in each of those, including a lot of screenshots and screencasts to give you a first impression.

So if you're looking for a BPMN 2.0 engine, this is what we can offer you:

  • extensive set of BPMN 2.0 constructs
  • tool chain that supports the entire life cycle of the process
  • integration and unification with business rules and complex event processing
  • domain-specific processes