Tuesday, May 8, 2012

BPMS (Business Process Management System)

This post introduces the following BPMS:

  1. JBPM
  2. Activiti
  3. Apache ODE
  4. Intalio
  5. Bonita


1. JBPM

“jBPM is a flexible Business Process Management (BPM) Suite. It makes the bridge between business analysts and developers. Traditional BPM engines have a focus that is limited to non-technical people only. jBPM has a dual focus: it offers process management features in a way that both business users and developers like it” (jBPM) and is written in Java. “The jBPM project has merged with the JBoss Drools project (an open source business rule management
framework) and replaced Drools Flow as the rule flow language for the Drools framework” (Liempd).
In a nutshell, jBPM main functionality is modeling an executing a business process using BPMN2.0.
            In order to define the business process this framework provides four main components:
·         Eclipse Editor is a plugin for Eclipse which adds a designer to graphically define the business process
·         A web based designer, similar to the eclipse editor but for web browsers. An example can be seen in the image bellow.
·         jBPM console which allows the business users to inspect and control the process state.
·         A REST API to interact with the engine.


JBPM Web Designer


A business process is made of nodes which are connected using sequence flows. BPMN 2.0, which is used by jBPM, defines the following types of nodes:
·         Events:  They are used to represent the different kind of events included in the business process. Could be a start event or an end event, for example.
·         Actions: Are responsible for defining the actions to be performed during the process execution. This is where the actual work of the workflow is represented, for example a human task or sending an automated email to users. Actions can be nested within other actions.
·         Gateways: Are used to define multiple paths in the workflow.
            In the following picture it’s possible to see the Events(1), Actions(2) and Gateways(3).


JBPM Eclipse Designer Plugin
How are business process implemented in jBPM? First a process description must be implemented, either through the designers as in Figure 8, or writing the xml directly. Second jBPM needs to know the process descriptions and for that there is an API component called KnowledgeBase which is responsible for maintaining all the process definitions executed by a session. The Session is the connection between the process description, included in the KnowledgeBase, and the engine. Actions that interact with the process instance, like aborting the workflow, are defined in the session interface. With only these two components is possible to run a business process, but jBPM also has the option of implementing listeners to events, which can occurred at any stage of the workflow.

2. Activiti

“The Activiti project was started in 2010 by the former founder and the core developer of jBPM (JBoss BPM), respectively Tom Baeyens and Joram Barrez. The goal of the Activiti project is crystal clear: built a rock-solid open source BPMN 2.0 process” (Liempd). Due to this fact there many similarities with jBoss but some implementation choices make Activiti different enough to be a serious competitor.
            As with jBPM, Activiti also has an Eclipse-plugin to graphically design the business process. It has a web based application called Activiti Explorer which allows users to monitor and control business process but doesn’t provide features to design one. A REST API is also available to support engine related functions from external tools, but is still in experimental phase, meaning “should not be considered stable”(Activiti).
            One obvious difference is the web based designer. Although jBPM has a web designer out of the box Activiti relies on an external solution, from Signavio, forcing extra configuration and installation to make it work. This component name is Activiti Modeler.
            A summary of the Activiti tool stack is visible bellow.

Activiti tool stack
To compare with jBPM, the following picture shows the graphical design plugin for Eclipse. As BPMN defines the visual representation the result is similar to the one in  JBPM Eclipse Designer Plugin.

Activiti Eclipse Designer
In the picture bellow  is visible a business process modeled using the web designer by Signavio, configured to work with Activiti.


Signavio designer customized for Activiti

How are business processes implemented in Activiti? As with jBPM, the workflow engine needs a business process description which can be defined using the various components, might be through the Eclipse Designer, writing the bpmn2.0 xml directly or with the Activiti Modeler. Afterwards the model must be deployed using using the Activiti Explorer or Activiti’s API.
            The Activiti’s API has 2 main components, the ProcessEngine and the Services. The ProcessEngine is responsible for running the process business and exposing the Services, which are an interface to interact with the Engine. While in jBPM there was a component called Session which was responsible for all the interactions with the engine, in Activiti those methods are divided by Services. For example if a developer wants to run a business process he must get the RunTimeService from the ProcessEngine. The same thing happens with the deployment actions, which is made using the RepositoryService returned by the ProcessEngine. With this structure the methods are more fragmented and not as focused on a single component as in jBPM.


3. Apache ODE


This open source solution from Apache is quite different from the ones analyzed so far. Mainly because, instead of BPMN2.0, Apache ODE supports the WS-BPEL description, meaning there isn’t a standardize graphic representation of the business process. As such, the main focus of Apache ODE is the business process execution through the interaction of web services. While Activiti and jBPM have a complex API, the Apache solution relies on the execution description of BPEL, by running the process in conjunction with the data received through web services. This results in a far simpler solution, installation wised, but the interaction is not as strait forward.

            How are business processes implemented in Apache ODE? As with the other Workflow Engines the first step is describing the business process, might be using the Eclipse BPEL designer Plugin, like in the picture bellow, or writing the xml directly. Then the web services interface must be defined where the interaction and evolution of the business process is exposed. Using the WSDL Editor in Eclipse is an easy way to do it, as in the second picture. The components defined using the web services description language are the binding between the port where the process service is available, the process itself and the service. The final stage is the deployment descriptor, which is responsible, among other things, to connect the interface with the client.
            ”The deploy.xml file configures one or several processes to use specific services. For each process, deploy.xml must supply binding information for partner links to concrete WSDL services” (Apache).

Business Process in Eclipse BPEL Editor

WSDL using Eclipse WSDL plugin
The web based tool for monitoring the processes is illustrated next. It gives an overview of the amount of processes running, displays the .wsdl of each service, has a deployment feature to start new business processes and provides some management hover the running workflow.


Apache ODE web tool

4. Intalio


“Intalio|BPMS is the world's most widely deployed Business Process Management System (BPMS). Designed around the open source Eclipse BPMN Modeler, Apache ODE BPEL engine, and Tempo WS-Human Task service developed by Intalio, it can support any processes, small or large.” (Intalio).
            Intalio is the most commercially driven solution of the ones analyzed so far. In fact, if the free version is chosen only 80% of the source code is available and other features like DBMS compatibility are fewer than in the paid option.
            The software is divided in two components, the server and the designer plugin for eclipse. The server package has the actual business process engine which is the Apache ODE. A web app to interact with it, much like the Apache solution, can be seen in the picture bellow. A nice detail is the language localization which detects the user idiom, setting it, in this case, to Portuguese.
            While jBPM, Activiti and Apache ODE are based only in one language, BPMN 2.0 or BPEL, Intalio uses two. For the graphical design it uses BPMN, but for execution Intalio converts it to BPEL. How this conversion is preformed is not documented and because there isn’t any standard for it, figuring how it’s made is not trivial. The BPEL code is necessary because Intalio uses the Apache ODE engine, but adds a layer of BPMN with the designer.

Intalio process web app
How are business processes implemented in Intalio? Intalio relies heavily on the designer when describing the business process. Even the web services layer, as Apache ODE also has, is done graphically. This would be a great way to simplify things but the designer isn’t as well developed as the others used in the other suites. For instance while undoing a considerable amount of actions made using the eclipse plugin, some elements appeared even if not added previously, connection arrows, empty tasks, among others. Nevertheless, after having the business process defined using BPMN, the interface layers must be added. For example, if the user wants to monitor the process using the Intalio|BPMS console a new layer must be added to the design. The same for exposing the business process through web services. To better understand how all is put together an example is show in the next picture, with the interface for the console in the top layer and the web services interactions in the lower one. The binding for how the messages are exchanged is defined using a XML Schema. After all these artifacts are correctly implemented the process is ready for deployment and because the execution engine is Apache ODE this phase is similar to the one described in the Apache solution.


Intalio Designer


5. Bonita

The most user friendly and intuitive solution analyzed in this section, being clearly more focused on the user than the developer. As such, it’s very easy to quickly design and run a business process but implementing advanced external communication is not very strait forward. Proving is the fact that “BOS [Bonita Software] does not yet provide a public API to build processes so you'll have to develop them using the studio. So no possibility using a web browser yet” (Bouquet).
            The studio, shown in the picture bellow, is a designer where all the business process implementation takes place. Bonita’s approach with the studio is to define all the process’s aspects through graphical elements, even implementing web services is made using components called connectors. By having this structure it’s very easy for a process Engineer to describe and run a business process but at the same time it also limits the possibility of expanding its functionalities, as seen with the constraint of using a customized web designer.

BonitaSoftware Studio

In order to monitor and control de running business processes BonitaSoftware has the User Experience mode, visible in the next picture, which is web based and has an email like layout.
BonitaSoftware User Experience

How are business processes implemented in BonitaSoftware? There really isn’t much to it, just design the business process or import one, which can be in BPMN 2.0,XPDL or jPDL, and run the process, which will then be available through the User Experience application. All these actions are made through the self-explanatory GUI.

Referencies: Liempd (Activiti in Action - Book)

No comments:

Post a Comment