Thursday, January 27, 2011

Getting started with jBPM5

With the release of jBPM 5.0 around the corner, lots of people are very eager to start using it. And luckily for us, they are willing to share their experience, so that other might be able to benefit as well. So here are some blogs you might find interesting if you're getting started as well.

Vignesh has kindly created a "Getting started with jBPM 5" video. He's put it up on his blog here.
"I once wrote a blog on setting up jBPM 3 with jBoss ESB which proved useful to lot of folks. Now I am going to present a similar one for the all-new jBPM5. There is indeed a huge difference between the two and I must admit that the new product stack is looking very good, loaded with many must-have options any BPM product should ship with.
I will write about all the technical insights in a separate post. One good news you should know is that the installation has got a lot easier in this version. Let's just get started with jBPM 5, install it, and see it for ourselves."
The guys at Plugtree have also created a tutorial that helps you create a process that includes variables, constraints, etc.
"This posts aims to teach the basics of modelling your processes into JBPM5. You’ll learn how to use the builtin Eclipse editor to create simple processes, with branching, joining, external variables and code constraints."
Looking for even more? Here's a post that groups a number of posts, videos and tutorials about jBPM5.

Enjoy !


Tuesday, January 18, 2011

A process repository using Guvnor

One of the missing pieces in the jBPM 5.0 CR1 release was the inclusion of a process repository. Luckily, your waiting time is over!

A process repository is an important part of your BPM architecture if you start using more and more business processes in your applications and especially if you want to have the ability to dynamically update them. The process repository is the location where you store and manage your business processes. Because they are not deployed as part of your application, they have their own life cycle, meaning you can update your business processes dynamically, without having to change the application code.

Note that a process repository is a lot more than simply a database to store your process definitions. It almost acts as a combination of a source code management system, content management system, collaboration suite and development and testing environment. These are the kind of features you can expect from a process repository:
  • Persistent storage of your processes so the latest version can always easily be accessed from anywhere, including versioning
  • Build and deploy selected processes
  • User-friendly (web-based) interface to manage, update and deploy your processes (targeted to business users, not just developers)
  • Authentication / authorization to make sure only people that have the right role can see and/or edit your processes
  • Categorization and searching
  • Scenario testing to make sure you don't break anything when you change your process
  • Collaboration and other social features like comments, notifications on change, etc.
  • Synchronization with your development environment
Actually, it would be better to talk about a knowledge repository, as the repository will not only store your process definitions, but possibly also other related artefacts like task forms, your domain model, associated business rules, etc. Luckily, we don't have to reinvent the wheel for this, as the Guvnor project acts as a generic knowledge repository to store any type of artefacts and already supports most of these features.

The following screencast shows how you can upload your process definition to Guvnor, along with the process form (that is used when you try to start a new instance of that process to collect the necessary data), task forms (for the human tasks inside the process), and the process image (that can be annotated to show runtime progress). The jbpm-console is configured to get all this information from Guvnor whenever necessary and show them in the console.


If you use the latest snapshot version of the jbpm-installer, that should automatically download and install the latest snapshot of Guvnor as well. So simply deploy your assets (for example using the Guvnor Eclipse integration as shown in the screencast, also automatically installed) to Guvnor (taking some naming conventions into account, as explained below), build the package and start up the console.

The current integration with the jbpm-console uses the following naming conventions to find the artefacts it needs (though we hope to update this to something more flexible in the near future):
  • All artefacts should be deployed to the "defaultPackage" on Guvnor (as that is where the jbpm-console will be looking)
  • A process should define "defaultPackage" as the package name (otherwise you won't be able to build your package on Guvnor)
  • Task forms that should be associated with a specific process definition should have the name "{processDefinitionId}.ftl"
  • Task forms for a specific human task should have the name "{taskName}.ftl"
  • The process diagram for a specific process should have the name "{processDefinitionId}-image.png"
If you follow these rules, your processes, forms and images should show up without any issues in the jbpm-console.

Wednesday, January 12, 2011

Migrating to jBPM5

With jBPM 5.0 almost out of the door, users are looking for ways to migrate their existing processes to jBPM5. To avoid any confusion about what is (and is not) planned, let's summarize what you can expect from us.


Migrating your process definitions

If you've been using jBPM in the past, you've probably been using the proprietary jPDL language to represent your processes. With the arrival of BPMN 2.0 however, there now is a new standard for representing business processes. jBPM5 supports native execution of BPMN2 processes. This means however that your existing jPDL processes need to be translated to BPMN2 before they can be executed on the jBPM5 engine.

Most of the old jBPM node types can be mapped directly to an equivalent in BPMN2. For some features (for example the java callbacks), we might require you to choose between a few possible transformation, or to fill in additional details. That's why we will be offering a tool for a one-shot semi-automatic transformation of jPDL processes to BPMN2.

The following screencast is a preview of what you can expect (in this case for a fully automatic transformation.) It shows how a simple jPDL process can be transformed into BPMN2 format, so that it can be executed on the jBPM5 engine.



Updating your integration code


You also need to update your integration code, i.e. how your application talks to the process engine. While the API to talk to the execution service itself hasn't changed significantly, e.g. startProcess(..) or signalEvent(..), how you set up your session and deploy processes has been generalized. As a result however, jBPM is no longer an isolated process engine but your processes can be combined with powerful business rules and complex event processing! We'll be documenting how you can migrate your existing integration code to the new API so you can start taking advantage of this.

At this point, we're not planning to support runtime data migration. If you're curently using jBPM3 in production, you shouldn't be afraid to keep using it, as it currently is supported by JBoss and will be for many years to come. You can start developing new processes on jBPM5, and migrate your existing processes whenever you're ready.

We have set up a migration project and Eric Schabell and Maurice de Chateau are already working hard to get the first transformations out there. You can find more information on their Wiki and Eric has also written a few blog entries about it. The migration project will initially focus on migration from jBPM3 to jBPM5. With a little community contribution however, it should also be possible to use the same approach to support jBPM4 to jBPM5 migration. So let us know if you want to help out! ;)

Tuesday, December 14, 2010

jBPM-5.0-CR1 is out

We're glad to announce jBPM-5.0-CR1. This release candidate includes many small improvement on the core process engine, the web-based monitoring and management console and the human task integration.


Want to give it a try, but don't know where to start? Download the installer and follow this chapter that will guide you through the different components using a simple example.

Here are a bunch of useful links:
Should you have any problems, feel free to contact
If all goes well, we'll be doing a final release in a few weeks. So give this one a try and let us know if you still discover some issues, so we can do the final fixes.

Friday, November 19, 2010

jBPM5 webinar online now

For those who missed the JBoss Developer Webinar on jBPM5 last Wednesday, a recorded version is now available. It gives a short intro on BPM and gives an overview of the new features of jBPM5.

If you're only interested in the slides, you can see (and download) them here.

There were a lot more questions than we actually could handle in the Q&A part of the presentation, so I'll try to compile a list of additional answers and publish them on this blog next week.

Hope you all enjoyed it!

Tuesday, November 9, 2010

JBoss Developer Webinar on jBPM5

As part of the bi-weekly JBoss Developer Webinar Series, I will be giving a presentation on jBPM5 next week Wednesday, November 17, 12:00 PM EST / 17:00 GMT.

This presentation will be suited both for people that are not really familiar with jBPM but would like to get an introduction what it is all about as well as for people that have experience with previous versions of the project and would like to know what's new. With the possibility to ask your questions afterwards of course.

I will also touch on how jBPM5 is tackling exciting hot topics like case management, event-driven BPM, etc.

So don't miss out and register now!

Monday, November 8, 2010

Should you bet on jBPM?

In a recent webinar from Active Endpoints called "Should you bet on jBPM?", Michael Rowley described the findings of his evaluation of jBPM. This includes what he believes jBPM is good at and what it is bad at, relation to standards, etc. It's always a good thing if competitors think they need to do a comparison, right? ;)

Unfortunately, he decided to evaluate jBPM v3. Fair enough, jBPM5 isn't out yet, so selecting jBPM3 probably made sense. But luckily, a lot of the "issues" he has with jBPM3 have already been improved significantly in jBPM5! For those that might have seen the presentation and are wondering what is still applicable for jBPM5, some highlights ...

Standards
jBPM5 is using existing standards wherever possible. BPMN2 is used for process definitions (both at the graphical level as well as the underlying XML). This means that concepts like exception handling, event signaling etc. are all offered using the concepts as defined in the specification (which were agreed upon as the best possible solution to represent these concepts by many experts in the working group). But it's not just BPMN2, but also WS-HT for human tasks (see below), JPA / JTA for persistence and transactions, etc., as we believe the use of these standards only brings benefits to our users.

Human tasks
Instead of having an embedded, proprietary human task solution, the new human task service is an independent service based on the WS-HumanTask specification, and allow more advanced features like escalation, reassignment, etc.

Low-level details
We try to hide low-level implementation details from the end user as much as possible. For example, there's no more concept of a "token" that the user needs to know. Also, we strongly encourage users to keep implementation details out of their process definitions. No more low-level Java integration code is needed inside your process (or handlers) to link to external services, this all can be handled as domain-specific extensions. The use of code inside a process should be limited to simply expressions / actions.

XML editing
While people are allowed to edit the underlying XML (used for storing process definitions) themselves, this is not are recommended approach and users should not be forced into doing that. There are property panels, but more importantly, there are user-friendly editors that pop up when double-clicking specific nodes (and yes, you can contribute your own!). For example, a screenshot of how you could specify the details when you need to send an email below.



Service Orchestration
It is true to say that jBPM is (currently) more focused on a Java environment. This doesn't mean you can't do web service invocations, but if all you're currently interested in is web service orchestration, you might find the default support for process interface generation, correlation and XML data handling a little bit limited. We'll be working on improving that after jBPM 5.0, but luckily JBoss has another project called RiftSaw which does exactly that: offer web service orchestration using WS-BPEL execution based on the Apache ODE engine. Both projects share a few components already and we're working on a combined long-term strategy, but definitely take a look there as well if you need pure service orchestration.

As you can see, lots of improvements and new features have already been added in jBPM5. Want to know more? There's a webinar next week where I will give a one-hour introduction to jBPM5! So register now!