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 …


7 thoughts on “BPEL Engines …

  1. Hey Simon,

    long time no see!

    We use the Oracle BPEL Engine in our current project. Proprietary BPEL engines work fine (not only Oracle, but also IBM etc.). The tool support is also good. Though, as you mentioned, they are very heavyweight and cost a fortune! Nevertheless, there is no good open source BPEL engine IMO.

    Why do you still use BPEL, by the way? 🙂 I would recommend BPMN 2.0, which is also executable. Good and stable open source frameworks are available. My favorite is Activiti.

    Best regards

  2. Hi Kai,

    I would like to use BPMN 2.0 if there is an engine which works better than the currently available BPEL engines. 🙂

    As far as I know, it is very hard to exchange SOAP messages with Activiti. According to http://www.activiti.org/userguide/index.html#bpmnWebserviceTask the feature of sending synchronous messages is experimental while there is no statement about asynchronous messages. Additionally, the receipt of web service messages is directly supported as there is only a Java receive task (http://www.activiti.org/userguide/index.html#bpmnReceiveTask).

    How do you exchange messages with Activiti?


  3. Hey Simon,

    honestly, I am no expert in Activiti. I thought it is as good as a BPEL engine 🙂

    I use Activiti in combination with Apache Camel (F&E only, no project). This way you can communicate with every technology, not just Java, SOAP Web Service or Script. Besides, you have a clear separation of concerns. Again, I am still into this and no expert (yet), maybe the activiti-camel component is not production ready, too. I did not try Web Services yet. Though, if it is ready, you could do all (Web Service) communication using Apache Camel.

    I really love the idea behind this combination. Separation of concerns and the possibility to integrate every thinkable technology in a BPMN flow very easily will be a huge win in more complex projects. At the moment, I am preparing a session about this topic for CamelOne 2012 in Boston (http://fusesource.com/apache-camel-conference-2012/)…

    Best regards,

  4. First off: Please share your NPEs with the ODE community. Since its open source, it is important to feed such information back into the project so that it can be improved. I haven’t seen NPEs for a while when working with ODE, so I’m curious what was causing them. I consider ODE the most mature open source BPEL engine around, but I’m of course kind of biased 😉

    Second, to my knowledge your gut feeling about Activiti is right. Activiti lacks the message correlation engine that is needed to route messages to process instances and which is a key component for asynchronous message processing with BPMN 2.0 — until this functionality is added, I’d also stick with BPEL, which is taylormade for this kind of scenarios.


  5. Hi
    I m new in BPEL process execution & need to implement it on .net side how it is possible for Human Task. I m using WSO2 BPS server

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s