Workflow management with BPEL

Creating Structure

The process engine has the task of allocating a success message to a process instance long after the corresponding request has been issued, and in some cases, many instances are active at the same time in the engine. For example, some instances of "Approve trip" could be running simultaneously in the process engine because several members of staff are planning to visit a trade fair. If it is impossible to add a transaction ID to the request because the interface is defined externally, the WFMS attempts to identify the process instance by reference to the parameters. In the case of a business trip, the name and departure date would probably suffice. Attributes comparable to primary keys are referred to as correlation sets in BPEL.

Scopes in modeling are similar to blocks in C++ or Java. A scope is an area with local variables, process sequences, and fault handlers that allow a developer to keep a process definition tidy, in that local structures and local variables are available just in the local scope.

A delivery example modeled with the use of scopes will help to illustrate: A company charges an amount to a credit card (subscope invoice), but can't deliver the goods because the address is wrong (subscope delivery). The corresponding fault handler passes the error on to the surrounding scope, which also has a fault handler. The fault handler notifies the order processing clerk and compensates the activities after having done so by crediting the amount to the credit card account. The advantage is that the process designer can assign error handling and countermeasures locally for each step.

Example: Booking a Business Trip

Using the travel example described at the beginning of this article, I can now model and later start a simple process. Once the application server and the BPEL are downloaded and installed, the designer models part of the business trip reservation. This simple example does without compensation and asynchronous calls. The result is a collection of XML files that the designer can bundle into an archive and transfer to the engine.

The input for the process comprises four records: the username of the person going on the trip, the starting and finishing points of the trip, and the date and time. The process starts by selecting a method of transport. To allow this to happen, a web service refers to the duration of the trip and the identity of the person traveling to decide whether to book a train or a plane ticket. CEOs and service engineers could have a higher flight priority, for example. After making this decision, the process engine books the tickets. The schedule for the trip is then sent to the traveler (see Figure 3).

Figure 3: When a business trip is booked, a web service decides which method of transport to use, after which the workflow engine triggers a rail or flight reservation.

Point and Click

The graphical ActiveBPEL Designer [5] helps convert the individual modeling steps to XML files. BPEL strictly separates interface information from web services. The languages uses operations, parameter descriptions, and partner links (abstract representations of the actual service addresses). The model itself defines the structure, sequence, and exception handling. The files are available at the Linux Magazine website [6].

To follow this example, BPEL newcomers can download the ActiveBPEL Designer, unpack it, then launch it as follows:


Once the license file has been mailed to you, there is nothing to stop you from installing. If you prefer not to use the test version, you can use any other BPEL designer. A wizard installs a full version of the engine, allowing users to test the engine directly from the editor.

After installing, users can fix the encoding problem with version 6.0.2 for Linux and recode the file:

cd ./Designer/designer
recode ibmpc..latin1 jre/lib/i386/jvm.cfg

Then type ./designer to launch the designer and accept the path suggested for the workspace. Closing the tab closes the welcome page. Eclipse users will soon feel at home. In the designer's default workspace, you can select File | New | Orchestration Project to create a new project.

The WSDL file, services.wsdl describes all the interfaces. First store the file in the project tree below wsdl; the same applies to the BPEL process description, travelbooking.bpel, below bpel. The deployment descriptor contains the address details for the services. The important thing is that all the definitions find each other; if the designer makes a mistake, you need to check the WSDL references in the BPEL and PDD files.


ActiveBPEL implements version 2.0 of the BPEL standard. The engine is licensed under the GPLv2. As a JEE web application, BPEL cooperates with a servlet container like Apache Tomcat. The visual editor for BPEL processes, known as the Designer, is an Eclipse RCP application. A free 30-day trial version is available. You can apply for the trial license, which is sent to you by the vendor in the form of an email, from the download page [5]. Developers can use other designers with the ActiveBPEL engine. For example, the Eclipse Foundation has developed its own editor.

Active Endpoints offers the designer for Windows and Linux as an Eclipse plugin. The plugin supports process debugging in combination with the engine, allows programmers to set breakpoints, step through the code, and simulate process execution. Processes are either deployed via a disk-based directory or a web service. The developers provide a free web forum or commercial support to end users, and third party commercial support is also available.

Installing the BPEL Engine

The ActiveBPEL run-time environment takes the form of a Java servlet and requires a JEE-compliant servlet container and JRE 1.5 or newer. The software includes a script for Tomcat 5.5, which simplifies the installation.

Administrators can download the "Tomcat Core Distribution" [2] and unpack the tarball in a directory of their choice. Additionally, you need to unpack the ActiveBPEL [3] "Community Edition Engine" in the same directory and set CATALINA_HOME to the Tomcat path, as shown in the following code:

export CATALINA_HOME=$(pwd)/apachetomcat
cd activebpel5.0.2

After changing to the BPEL engine directory and starting the installation, you need to wait for the Tomcat server to launch:

cd ../apachetomcat/bin

Tomcat normally offers an administration interface via port 8080. To do so, it runs a browser against http://localhost:8080/BpelAdmin/. In the default configuration, the software uses an in-memory database that does not save any data when you shut down. Both the web service interface and an additional designer make it possible to integrate processes. Details of the configuration and some tutorials are available on the web [4].

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.