BPEL Engines …

If you want to work with a BPEL engine, you always have some trouble. Always!

For my diploma thesis, I used the OpenESB engine 2.2 which was originally developed by Sun. I had made good experience working with this engine during other courses at university. The installation is very simple as there is a single installer which installs and configures NetBeans, Glassfish and the OpenESB engine in one step. Everything can be controlled from within NetBeans (starting and stopping of Glassfish, (un)deployment of BPEL processes, debugging!). Additionally, NetBeans provides extensive validations to ensure that the BPEL process is correct.

After Sun’s acquisition by Oracle, the engine has not been maintained anymore. Many pages of its documentation are broken and it is very very hard to find a download link in this mess. A few people are trying to keep it alive under http://openesb-dev.org/. They released a new version (2.3) at https://openesb-dev.org/file/showfiles.php?group_id=102. This version is from February 2011 and has only been declared a milestone instead of a stable release. I do not have much hope that this project will be relevant for praxis in the future.

For a paper of mine, I wanted to use the OpenESB engine 2.2. I had required a specific construct which is valid according to the BPEL standard. The engine, however, only threw NullPointerExceptions when it executed the problematic part of the process. Therefore, I had to look for alternatives.

Next, I evaluated the Apache ODE 1.3.5, however, I could not get it working. I had so many NullPointerExceptions in the log files … it was simply ridiculous.

Consequently, I said to myself, lets just use industry proven product which have to be great. This is how I began looking at the BPEL engine from Oracle which is shipped with their Oracle SOA Suite 11g product. Its installation is quite cumbersome and takes half a day to complete. When it is installed, the start of the server takes more than 5 minutes. It is hard to handle as everything feels very slow, but, I got it working! Thus, I used it for my paper and it worked out well.

As this product is very heavy-weight, I was still looking for a more light-weight alternative running only in a simple servlet container for other research projects.

This week, my collegue Jörg Lenhard pointed me to the bpel-g engine. This engine is based on the open sourced code of the ActiveBPEL engine and looks really promising according to their own comparison with other open source BPEL engines. It starts within ca. 20 seconds on a simple servlet container like tomcat. Here is a small guide on how to get this engine running as the project site does not contain one:

  1. Download Tomcat 7.0.26, unpack it and start it using startup.bat/startup.sh
  2. Download bpel-g-web-5.2.war and copy it into $TOMCAT_HOME/webapps
  3. Download h2-1.2.122.jar and copy it into $TOMCAT_HOME/webapps/bpel-g-web-5.2/WEB-INF/lib
  4. Restart tomcat and point your browser to localhost:8080/bpel-g-web-5.2

Note: You have to use the version 1.2.122 of the in-memory database h2 as newer versions do not work!

Maybe this engine suffices for my work? I will investigate!

PS: It is a pity that bpel-g is hosted using SVN instead of git …


The use of soapUI

In order to test huge BPEL processes (around 9000 lines of code) soapUI can be leveraged to test the bpel process.

Plan how to do this:

  1. Create a MockService for each BPEL.PartnerLink of role partnerRole
  2. Create a SOAP Binding for each BPEL.PartnerLink of role myRole
  3. Create a TestSuite that contains Testcases for Success and Failure Scenarios
  4. For each Scenario use the following steps to produce the test environment
    1. For Each BPEL.receive create a SOAP Request
    2. For Each BPEL.invoke create a Mock Service Response
    3. Use properties, PropertyTransfer or Scripting to ensure the correlation set correctness
    4. IF soapUI itself does not suffice, you can extend it with Groovy

I am planning to do this in the next days for my project and will present my results to you then.

Netbeans and BPEL *Update*

My current project involves the use of BPEL. I decided to work with Netbeans and the Glassfish v2 using openESB as it provides quite a good tool integration.

However, I do need to create projects and deploy about 32 BPEL Processes along with quite a few WSDL Web Service implementations.

What is the problem:
1. BPEL validation cannot be automated
I use a MDA approach to generate my BPEL code using Eclipse EMF and cannot automatically validate these files using Netbeans. The BPEL Validator cannot be called from outside Netbeans. I searched a lot, but I haven’t found anyone who could do this and many people said it is not possible.

What a pity …..


It can be done using ANT.

– Make sure ant is installed (by typing ant into the commandline)
– go into the directory and execute the following
ant -Desb.netbeans.home=PATH_TO_YOUR_NETBEANS

– if you need more detailed information, use -verbose

By building the default target, the bpel processes are automatically validated.

2. BPEL Validation in Netbeans does only run fast if each BPEL file with its WSDLs and XSDs is in its own project.

Each BPEL file in own project: Validation Time: 5 seconds
Every BPEL File in same project: Validation Time for each BPEL File: 75 seconds

Time may vary as the size is not always the same, but you can get the dif-factor: 15 …

So, use small projects.

After some thought, the problem arises during the evaluation of the XPath expressions in the copy constructs.

Maybe it is possible to use absolute locations for the BPEL imports to reduce the time to validate, but this results in even more problems when copying and deploying on the glassfish ….