Red Hat's JBoss division recently announced the latest release of their Business Process Management System jBPM 5.0. jBPM5 includes a completely revamped API, and adds a number of key features including support for the BPMN 2.0 specification, Eclipse tooling for developers, and web-based tooling for business users. InfoQ spoke to Kris Verlaenen, jBPM project lead, to find out more about the release.
InfoQ: When would you suggest an architect or developer chooses a product like jBPM over building their own state machine?
Projects that are starting to do BPM and only require some simple state machine might consider building their own implementation rather than (re)using an existing workflow engine (for example because they believe a workflow engine is too complex for what they need). The effort and cost of developing, supporting and maintaining a proprietary solution however is usually underestimated significantly. And what starts as a simple state machine usually requires more and more features over time (think about persistence, a process repository, graphical designers, etc.); features that are even more difficult to develop in-house.
jBPM however is built as a combination of modules, where the core engine itself is light-weight and can be embedded into any application. If requirements evolve over time, one can easily add more and more components to the architecture and start using the full potential of jBPM. Because jBPM5 is using the Apache Software License (ASL), you are allowed to use, distribute and modify it (even as part of proprietary software) and it uses standards whenever possible to facilitate integration and interoperability.
InfoQ: What is the relationship between Drools Flow and jBPM5? Have you merged the two projects?
jBPM5 is the merger of the jBPM project and Drools Flow. While Drools Flow started out a few years ago to prototype flexible and adaptive business processes with powerful integration with both business rules and complex event processing. It has proven that such features are not only possible but can bring great value in the long run to better manage the complexity of real-life use cases. This knowledge has been combined with the experience built up in jBPM over the last few years and has resulted in jBPM5. The vision of jBPM however hasn't changed, it has been extended. Drools Flow will no longer continue on its own; the latest version of Drools is already using jBPM5 for its process requirements.
InfoQ: What advantages does jBPM5 have over other products in the market place?
jBPM5 is definitely one of the most powerful and advanced open-source BPMN 2 engines out there. The core engine itself is lightweight, extensible and can be integrated as part of your application or deployed as a service. jBPM5 is also targeting both developers (with very powerful Eclipse plugins for graphical editing, testing and debugging) and business users (with web-based management and monitoring tools). Both developers and business users share the same language by making sure the business process uses higher-level, domain-specific concepts easily understood by the business user and by hiding or, even better, keeping implementation details out of the process itself.jBPM5 is also not just an isolated process engine, but part of a much larger solution that integrates with your environment, your services. For handling the complexity of real-life problems, it allows dynamic adaptations and supports process flexibility. End users can define their business logic as a combination of business processes with business rules and complex event processing. jBPM5 uses standards whenever possible to facilitate integration and interoperability, like BPMN 2 but also WS-HT for human tasks, JPA and JTA for persistence and transactions, etc.
InfoQ: What are they key new features in this release?
The key feature of jBPM 5.0 is definitely the support for the latest BPMN 2.0 specification for modeling and executing business processes. This includes both Eclipse-based and web-based tooling, for developers and business users. jBPM 5.0 also introduces a new process repository, improved support for domain-specific processes (by plugging in your own node types in the palette) and major changes to the core engine to make it more flexible, adaptive and dynamic. Finally, new features like Business Activity Monitoring (BAM) capabilities, simulation, grid and OSGi support are being introduced.
InfoQ: What prompted the decision to change the API in version 5? What are the advantages of the new API?
Early versions of jBPM didn't make a clean distinction between what classes the end user was supposed to be using and what was considered implementation. Having a set of clean and stable interfaces that clearly shows how the programmer should communicate with the engine and that shields implementation details is very important. jBPM5 also uses what we call a knowledge API. We have aligned the APIs for managing business processes, business rules and complex event processing, so that the learning curve becomes much smaller once you know one of these technologies already. And this allows us not only to share the API but also a lot of features and tooling, like a web-based management console, debugging, persistence, knowledge repository, etc.
InfoQ: Are the existing capabilities - for example Spring support - still included?
Yes, we definitely try to move forward. When merging two projects, it's always difficult to make sure you're not missing anything, but we believe we have been able to include all major features. And even with jBPM 5.0 out there, we're still working hard to improve what we have now. We are for example still working on improving and extending the jBPM5 documentation to include some (missing) pieces like for example Spring or OSGi support, etc.
InfoQ: Work flow seems to be rather fragmented with a number of different mark-up/definition languages in play. jBPM5 supports BPMN 2 as well as its own, proprietary jPDL to BPMN2. What advantages does using BPMN have over jPDL?
jBPM5 focuses on BPMN 2 as the process definition language. As a contributing member to the BPMN 2.0 specification, we believe that using this standard (as opposed to for example using the proprietary jPDL format) will only bring you advantages in the long run. BPMN 2 standardizes the visual representation of business processes as well as their underlying XML representation, significantly improving the interoperability between modeling tools (as for example our web-based and Eclipse-based designers). The BPMN 2 standard is solid and extensible, so that new elements and attributes can be introduced when necessary (although we try to only use this when absolutely necessary). In jBPM5, you can already model more using BPMN 2 than you ever could with jPDL for example, and at a higher level. As a result, jBPM5 does no longer support the direct execution of jPDL, although a migration from jPDL to BPMN 2 is being developed.
InfoQ: What other languages can I use for describing work flows? Is BPEL supported for instance?
The core engine itself uses a Java POJO model to represent processes and thus is agnostic of the description format (one can even use a fluent API to create processes in Java). We however focus on BPMN 2 as the process definition language using XML. The generic process engine (also known as PVM) could be extended to support additional formats, although we currently have no concrete plans to add support for additional languages at this point. Other languages with a known mapping to BPMN 2.0, like for example XPDL, and possibly even (a subset of) BPEL in the future, could be migrated. The jBPM5 API however also allows you to plug in your own implementation for different types of business processes. A prototype has shown for example that both BPMN 2 and BPEL processes could be executed and managed using the same API (and tools), even though internally the execution of the BPEL processes was delegated to the JBoss RiftSaw project, which support native BPEL execution.
InfoQ: Where is the best place to start learning about jBPM?
The best place to get started if you want to get some hands-on experience is probably the jbpm-installer (download file). This will download and install all the necessary components for you and run you through the different tools using a simple example. Or you could also start by browsing the different chapters in the jBPM5 documentation, read the latest blogs or watch one of the recorded webinars. The jBPM homepage is probably a good place to find links to all different kinds of information and communication channels out there.
InfoQ: What are your future plans for the project?
We are using a 3-month release schedule, meaning that jBPM 5.1 is targeted early May, etc. For jBPM 5.1, we are planning a new Eclipse-based BPMN 2 editor (that fully supports the BPMN 2 terminology using the latest technology), improved web services support, a repository of domain-specific nodes or connectors (to connect to existing systems and services), and extensions in the area of Business Activity Monitoring (BAM). And we welcome any community contribution of course, eg documentation improvements, small code improvements, or even completely new features.