Red Hat Training

A Red Hat training course is available for JBoss Enterprise SOA Platform

Chapter 1. Introduction

This Guide has been written for developers and administrators. Read on in order to learn how to use jBPM and JPDL in your corporate setting. Note that this book not only teaches how to use the software but explains, in significant detail, how it works.

Note

This Guide contains a lot of terminology. Definitions for the key terms can be found in Section 6.1, “ Some Helpful Definitions ”.
The JBoss Business Process Manager (jBPM) is a flexible and extensible scaffolding for process languages. The jBPM Process Definition Language (JPDL) is one of the process languages that is built on top of this framework. It is an intuitive language, designed to enable the user to express business processes graphically. It does so by representing tasks, wait states (for asynchronous communication), timers and automated actions. To bind these operations together, the language has a powerful and extensible control flow mechanism.
The JPDL has few dependencies, making it is as easy to install as a Java library. To do so, deploy it on a J2EE clustered application server. One will find it particularly useful in environments in which extreme throughput is a crucial requirement.

Note

The JPDL can be configured for use with any database. It can also be deployed on any application server.

1.1.  Overview

Read this section to gain an overview of the way in which the jBPM works.
The core workflow and business process management functionality is packaged as a simple Java library. This library includes a service that manages and executes JPDL database processes:
Overview of the jPDL components

Figure 1.1. Overview of the jPDL components

1.2.  The jPDL Suite

This suite contains all of the jBPM components and the following sub-directories:
  • config
  • database
  • deploy
  • designer
  • examples
  • lib
  • src
The JBoss Application Server consists of the following components:
The jBPM Web Console
This is packaged as a web archive. Both process participants and jBPM administrators can use this console.
The jBPM Tables
These are contained in the default Hypersonic database. (It already contains a process.)
An Example Process
One example process is already deployed to the jBPM database.
Identity Component
The identity component libraries are part of the Console Web Application. It owns those tables found in the database which have the JBPM_ID_ prefix.

1.3.  The jPDL Graphical Process Designer

The jPDL also includes the Graphical Process Designer Tool. Use it to design business processes. (It is an Eclipse plug-in and is included with the JBoss Developer Studio product.)
It facilitates a smooth transition from business process modeling to practical implementation, making it of use to both the business analyst and the technical developer.

1.4.  The jBPM Console Web Application

The Console Web Application serves three purposes. Firstly, it functions as a central user interface, allowing one to interact with those run-time tasks that have been generated by the process executions. Secondly, it is an administrative and monitoring console that allows one to inspect and manipulate run-time instances. The third role of this software is that of business activity monitor. In this role, it presents statistics about the execution of processes. This information is of use to managers seeking to optimize performance as it allows them to find and eliminate bottlenecks.

1.5.  The jBPM Core Library

The Business Process Manager has two core components. These are the "plain Java" (J2SE) library, which manages process definitions, and the run-time environment, which executes process instances.
The jBPM, itself, is a Java library. Consequently, it can be used in any Java environment, be it a web or Swing application, an Enterprise Java Bean or a web service.
One can also package and expose the jBPM library as a stateless session Enterprise Java Bean. Do this if there is a need to create a clustered deployment or provide scalability for extremely high throughput. (The stateless session Enterprise Java Bean adheres to the J2EE 1.3 specifications, mearning that it can be deployed on any application server.)
Be aware that some parts of the jbpm-jpdl.jar file are dependent upon third-party libraries such as Hibernate and Dom4J.
Hibernate provides the jBPM with persistence functionality. Also, apart from providing traditional O/R mapping, Hibernate resolves the differences between the Structured Query Language dialects used by competing databases. This ability makes the jBPM highly portable.
The Business Process Manager's application programming interface can be accessed from any custom Java code in your project, whether it be a web application, an Enterprise Java Bean, a web service component or a message-driven bean.

1.6.  The Identity Component

The jBPM can integrate with any company directory that contains user (and other organizational) data. (For those projects for which no organizational information component is available, use the Identity Component. This component has a "richer" model than those used by traditional servlets, Enterprise Java Beans and portlets.)

Note

Read Section 8.11, “ The Identity Component ” to learn more about this topic.

1.7.  The JBoss jBPM Job Executor

The JBoss jBPM Job Executor is a component designed for the purpose of monitoring and executing jobs in a standard Java environment. Jobs are used for timers and asynchronous messages. (In an enterprise environment, the Java Message Service and the Enterprise Java Bean TimerService might be used for this purpose; the Job Executor is best used in a "standard" environment.)
The Job Executor component is packaged in the core jbpm-jpdl library. It can only be deployed in one of the following two scenarios:
  • if the JbpmThreadsServlet has been configured to start the Job Executor.
  • if a separate Java Virtual Machine has been started so that the Job Executor thread can be run from within it

1.8.  Conclusion

Having read this chapter, you have gained a broad overview of the jBPM and its constituent components.