Friday, 30 October 2009

jBPM 4.2 Adds A Lot Of Production Goodies

jBPM 4.2 makes it a lot easier to maintain a jBPM installation in production.

We've added automatic upgrades of the DB from previous 4.x versions. There is a script that you can run that automatically upgrades your jBPM DB to the new version. This includes schema updates and data updates. A version check is included that compares the jBPM library version with the jBPM DB schema version. Implementing all this was not the hard part. The hard part was setting up the QA so that every possible upgrade is tested on every possible DB. Phew! That was quite a challenge and I'm very happy we took it on and finished successfully.

We also added process instance migration. When deploying a new version of a process, you can now specify that all the old process instances have to be migrated to the new process version. This jira issue was a serious old-timer (JBPM-165!). Glad we have have it finally covered.

Also we've split up the internal parser. In jBPM 4, process files are stored in xml format in the jBPM repository. In case we would introduce jPDL changes, then old processes that are deployed in a jBPM 4 repository must still work OK in future versions. That strategy is now in place.

Then we refactored classloading to work exactly as in jBPM 3. That means that jBPM will 'see' classes and resources
  • from inside your .war or .ear files
  • from inside your business archives (.bar files). .bar file is the archive file in which you can put your jPDL processes, class files, forms and other resources and deploy them to the jBPM DB.
  • from the server classpath
Furthermore we simplified the way how jBPM was deployed on JBoss so that it is now more portable to other appservers.

Next is a portable id generator. In jBPM 4.0 and 4.1 on MySQL, when you deleted process instances and then rebooted the MySQL DB, the id generation could break down. We've now installed a portable, clusterable id generation mechanism that works the same on all DBs.

The full JIRA release notes.

  • Added business archive (.bar) classloading [JBPM-2200]
  • Simplified jboss jbpm service archive architecture [JBPM-2501]
  • Automated database upgrade tool [JBPM-2509]
  • Portable, clusterable id generation [JBPM-2526]
  • Parser backwards compatibility [JBPM-2565]
  • Enabled programmatic user defined transactions in JTA environments [JBPM-2524]
  • Added In Incubation: Process instance versioning [JBPM-165]
  • Added In Incubation: Process customization to developer api for debugging and simulation [JBPM-2578]
  • A bunch of bug fixes
Download it now!

Or just browse the documentation online.


  1. And if the user guide isn't enough for you ... we also have a developer's guide !

  2. Tom,
    automatically upgrading the db schema in a test environment is certainly a useful feature.
    But in larger enterprises you would rather want to get the SQL DDL scripts for your DB which a database admin would run.

    Developers normally don't have the rights to modify the db schema. Sometimes this is forbidden even in the test environment. Does your upgrading procedure support generating such "diff" SQL scripts?

  3. @DB2:

    We are aware of the limitations of a production environment.

    That's why jBPM also ships with the SQL 'diff' scripts for every database we support. In fact, the upgrade script is executing exactly those scripts when doing the auto upgrade.

  4. can you please give the information about the transient variables which was there in jbpm3 but not in 4. so what equivalent feature has been included in jbpm4.2?

  5. Hi – I am so delighted I found your blog, I really found you by accident, while I was researching on Digg for something else. Nonetheless I am here now and would just like to thanks for a fantastic post and an all round interesting blog (I also love the theme/design).

  6. I found so many interesting in your blog especially its discussion. keep up the good work.

  7. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts.

  8. Brilliant blog posting. It's really a nice and useful piece of info. Thanks for all the work you do with this blog in sharing with us some wonderful inspiring ideas!! I LOVE looking through them.

  9. This blog Is very informative, I am really pleased to post my comment on this blog. It helped me with ocean of knowledge so I really belive you will do much better in the future. Good job web master.