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.