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.

Summary:
  • 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.

Wednesday, 16 September 2009

Jopr plugin for jBPM

Jopr is a management console for JBoss projects and other applications. It has a plugin architecture. Jim Ma now wrote a Jopr plugin for JBoss. Jim's blog post about the jBPM plugin includes screenshots and a simple step by step explanation, he also captured this video:

jopr jbpm plugin from JimMa on Vimeo.

Great work, Jim !

Wednesday, 9 September 2009

Great Free BPMN Training Slides

Thanks to Ronald van Kuijk, I found Jim Arlow's presentation about BPMN.


125 readable slides that give good overview and even some deeper insights into BPMN.

JBossWorld Slides

I've posted the slides from my talk at JBossWorld.

Keep an eye on Joram Barrez' blog as he'll publish the very nice demo movies soon.

Monday, 7 September 2009

Upcoming Speaking Schedule

Last weeks JBossWorld was a blast. We presented the jBPM 4.1 release, which includes our web based modeller powered by Signavio. That was very well received and generated a lot of traction. And of cource, at conferences like that, it's always nice to meet the faces behind the internet names :-)

For those who have missed JBossWorld, here's our list of upcoming jBPM talks:

RivieraJUG in Nice (France) on October 2nd
"jBPM 4: What does it do and why do I need it?"

Java Developer Day in Cracow (Poland) on October 16th
Keynote: "Pimp up your domain model with jBPM"

Devoxx (Belgium)
University talk: "jBPM 4 in Action" on November 16th
Conference session: "jBPM 4 in Action" on November 18th

Don't miss these events if you're in the neighbourhood. If you know any other jBPM related talks, please add them as a comment.

Tuesday, 1 September 2009

jBPM 4.1 Released

Just in time for JBossWorld, we released jBPM 4.1. We're very proud that our collaboration with Signavio and Oryx already lead to the first results.
The web based jPDL process designer is now part of our download. Certainly worth a try.

Other things that we added

  • End-to-end demo: JBPM-2480
  • Improved installer to handle tomcat and more configuration options : JBPM-2409
  • Extended coverage of Continuous Integration and reduced the execution time
  • Tomcat support in the console : JBPM-2353
  • Fix process variables of type hibernate-long-id/hibernate-string-id : JBPM-2474
  • Tomcat continious integration : JBPM-2409
  • Domain model integration : JBPM-2474
  • And a bunch of bug fixes
More details in our JIRA.

Download it from sourceforge and enjoy it.

Thursday, 13 August 2009

JBossWorld: 8 Chances To Learn More About jBPM

There's a big focus on jBPM at next month at JBossWorld. There's 8 talks related to jBPM. Cool!

jBPM Explained with Simple Use Cases
Tom Baeyens — Founder and Lead of JBoss jBPM (that's me :-)

Using JBoss Enterprise Middleware in NAVTEQ
Boris Lublinsky — Lead Architect, NAVTEQ

How to Combine Web, SOA and jBPM to Deliver a Flexible Case Management Platform for Public/Government e-Services
Jean-Marc Reymond — Team Leader for Java/SOA for Solutions Norway, Redpill Linpro

Using JBoss jBPM and JBoss ESB to build a high customizable multi-tenant platform
Frederico Melo — Senior Solution Architect, Ericsson

Competitive Advantage with Open Source Business Process Automation
Pierre Fricke — Director of Product Line Management, Red Hat

Business Agility with Process Centric Solutions
Jay Liu — Director of System Development, Clarks

A Collaborative Platform for the Pharmaceutical Industry using JBoss Enterprise Portal Platform and Alfresco
Alaaeldin El-Nattar — Principal Architect, Rivet Logic Corporation

Birds of a Feather: SOA, ESB, Rules, BPM, EDA
Kevin Conner, Tom Baeyens, Edson Tirelli, Burr Sutter

I'm looking forward to the event. If you want to meet up with me during JBossWorld, drop me an email.

Wednesday, 12 August 2009

jBPM User Interaction Patterns

Boris Lublinsky posted a high quality article at InfoQ about jBPM User Interaction Patterns that shows how jBPM simplifies interactions with people through tasklists. Certainly worth a read!

Tuesday, 11 August 2009

jBPM Conquers The White House?

Eric Schabell wrote an article Full Scale Straight Through Processing with BPM, explaining how jBPM was used in a Financial Institution. The article got accepted into the 2009 BPM and Workflow Handbook.


And now the good part comes. Eric writes:

As the focus of this book was BPM in government, the publisher has sent a copy to the President of the United States with a personal cover letter.
Awsome !

We can already imagine the next conversation between President Obama and Tim Geithner, the Treasury Secretary:

Monday, 10 August 2009

Starting JBoss And Tomcat Blocking Till Boot Is Completed

Our build is maven based. The jBPM project contains a bunch of modules. We have several integration test suites. Using the maven plugins to set up integration testing turned out to be insufficient. In order to keep our continuous integration builds platform independent we use a combination of ant scripts and mvn builds.

The strategy of our integration testing is that we start from a distribution that we unpack. Scripts like installing jBPM on JBoss are also interesting for our users. So they are included in the distribution. Then our Continuous Integration (CI) scripts leverage those scripts from the distribution. That way also those jBPM installer scripts also get validated by the CI.

For JBoss the CI build works as follows:

  • Build a distribution (mvn -Pdistro clean install)
  • Unzip the jBPM distribution file
  • Unzip JBoss
  • Use the install script from the distribution to install jBPM in JBoss
  • Customzie the jBPM installation for execution of the test suite
  • Start JBoss
  • Recreate the jBPM database schema
  • Run the integration test suite remotely
    • jBPM testsuite uses the plain jBPM API
    • Instead of executing the commands in the testrun itself, jBPM is configured to translate all invocations to remote EJB calls transparantly
  • Drop the jBPM database schema
  • Shut down JBoss
Since jBPM 3 we have an ant task that starts a JBoss instance in the background, but waits for the server boot to complete before the ant task finishes. That way we're sure that after the
task completes, that the server is up and running and ready to serve requests. We've done this in ant for a long time with an ant task and a Launcher. The StartJBossTask will create a Launcher thread, starts it and joins for it to complete.
public class StartJBossTask extends Task {

private static final String END_MESSAGE = " Started in ";

public void execute() throws BuildException {
try {
// build the command string
String command = ...build the command string...;

// launch the command and wait till the END_MESSAGE appears
Thread launcher = new Launcher(this, command, END_MESSAGE, null);
launcher.start();
launcher.join();

} catch (Exception e) {
e.printStackTrace();
}
}
...

The Launcher is a thread that spawns a process and listens to its InputStream till a certain message is displayed on the console by the spawned process.

public class Launcher extends Thread {

Task task;
String command;
String endMsg;
File dir;

public Launcher(Task task, String command, String endMsg, String dir) {
this.task = task;
this.command = command;
this.endMsg = endMsg;
this.dir = (dir!=null ? new File(dir) : null);
}

public void run() {
try {
task.log("starting '" + command + "'...");
Process process = new ProcessBuilder(command)
.directory(dir)
.start();

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while (line.indexOf(endMsg) == -1) {
line = reader.readLine();
task.log(line);
}

task.log("'" + command + "' started.");
} catch (IOException e) {
throw new BuildException("couldn't start '" + command + "'", e);
}
}
}

Last week I wanted to do the same for Tomcat. When leveraging that code just the same way as works for JBoss, Tomcat only showed environment variables and then hanged:
Using CATALINA_BASE:   C:\Software\apache-tomcat-6.0.20
Using CATALINA_HOME: C:\Software\apache-tomcat-6.0.20
Using CATALINA_TMPDIR: C:\Software\apache-tomcat-6.0.20\temp
Using JRE_HOME: C:\Software\jdk1.5.0_11
Can you spot what is wrong ? Well... it took quite some time for me and that is why I'm sharing it here.

The clue is that Tomcat logging used not only standard output, but also standard error as output for logging. I could fix it by adding the .redirectErrorStream(true) like this:
      Process process = new ProcessBuilder(command)
.redirectErrorStream(true)
.directory(dir)
.start();
So now we have Tomcat up and running, we couldn't leverage the same remote EJB configuration as we did with JBoss. So for Tomcat CI, we leverage cactus and run the tests in the webapp.

Conclusion: When you fork a process in Java and you see it hangs unexpectedly, check if you're reading both input *and* its error stream. Or if it is for starting JBoss or Tomcat with ant, simply look in the jBPM sources.

Tuesday, 4 August 2009

Another Good Book On jBPM

Jeff Davis just published his book "Open Source SOA". It includes 3 chapters fully dedicated to jBPM:

Part III Business process management

Chapter 5 Introducing jBPM
BPM: the “secret sauce” of SOA
History and overview of JBoss jBPM
Understanding nodes
Using transitions
Extending using actions
Using events for capturing lifecycle changes in a process
Managing context using variables
Summary

Chapter 6 jBPM tasks
What are tasks?
Task user management
Using timers
Task controllers
Developing with the task API
Summary

Chapter 7 Advanced jBPM capabilities
Important enterprise features of jBPM
Integration with SCA/SDO
Summary
The book also includes some interesting jBPM integrations like Service-enabling jBPM using Apache Tuscany and Integrating Esper with jBPM. Go check it out.

Monday, 3 August 2009

jBPM Interest Peaks

Last month we crossed the chasm to a respectable 30'000 unique visitors on the jBPM.org website.

...and that in a holiday period. Nice. Keep clicking !

Everyone that knows what caused this increase in interest is wins a free jBPM 4 download :-)

Tuesday, 14 July 2009

Getting Started With jBPM 4.0

A lot of getting started materials are already available. The release of jBPM 4 has not gone unnoticed.

Joram Barrez whats-new-series
jBPM4 Hello World
jBPM4: What’s new?
jBPM4: What’s new (part 2)?
jBPM4: What’s new (part 3)?

Joram also spotted and collected the following blog links. Thanks, Joram!

Jeff Yu published a great jBPM 4 intro in 3 parts:
Getting Started with jBPM 4.0 - (Part I )
Getting Started with jBPM 4.0 (Part II)
Getting Started with jBPM 4.0 (Part III)

Bernd Ruecker published a jBPM 4 showcase:
Ein kleiner jBPM 4 Showcase (In German)
English translation

Andries Inze published a demo on the Spring integration:
Spring jBPM4 CR1 Demo

Friday, 10 July 2009

jBPM 4.0 Is Out !

jBPM 4 is ready. Now is an ideal time to try it out and increase your skills cause your boss is on holiday anyways. This is the opportunity you've been waiting for! Grab it!

http://downloads.sourceforge.net/jbpm/jbpm-4.0.zip

There is an extremely easy-to-set-up demo included. Step by step instructions to get started quickly.

jBPM 4 is a very important milestone for jBPM. We've put a lot of effort in lowering the treshold to get started and extending the scalability to the highest load scenarios.

  • Embeddablity in any Java environment remains as it was
  • Full continuous integration matrix in our own test labs
  • BPMN process graphics
  • Completely redesigned, clean and stable API, including an easy to use Query API.
  • Out-of-the box experience with a demo that is extremely easy to set up, showing the new designer, API usgae, console and example processes
  • Simplified and revised database schema
  • Automatic installation scripts
  • Performance improvements
  • Configuration on a more abstract level leaving less chances of getting it wrong.
  • Separation of runtime data and historical data
  • Native support for integrating with the Spring framework.
  • Improved documentation, including a separation between user guide for typical use cases and an developers guide tackling advanced topics.
  • And much much more

Wednesday, 24 June 2009

Workflow Engines: Build Your Own Vs Use An Existing

Bernd Ruecker (Camunda, BPM Guide) posted a very interesting article about the choice between build a home grown workflow engine versus adopting an existing one.

Google translates it from german to english for you.

Original article in german.