Simplified BPM integration with JBoss jBPM

JBoss jBPM is a workflow and Business Process Management (BPM) engine that enables the creation of business processes that coordinate between people, applications and services. In this article, S.Satyamoorthy, Director of Operations – Asia Pacific, JBoss Inc. takes a close look at what JBoss jBPM has to offer.

Simplified BPM integration with JBoss jBPM

Abstract

JBoss jBPM is a flexible, extensible workflow management system. Business processes, expressed in a simple and powerful language and packaged in process archives, serve as input for the JBoss jBPM runtime server. JBoss jBPM bridges the gap between managers and developers by giving them a common language : the JBoss jBPM Process definition language (jPdl). This gives software project managers much more control on their software development efforts. After loading the process archive, users or systems perform single steps of the process. JBoss jBPM maintains the state, logs and performs all automated actions. JBoss jBPM combines easy development of workflow-applications with excellent enterprise application integration (EAI) capabilities. JBoss jBPM includes a web-application and a scheduler. JBoss jBPM is a clusterable J2EE application.

Business Process Management

BPM (Business Process Management) offers a structure and approach for designing business actions/transactions and executing them preferably using automated processes, actions, tasks and flows.

For eg. an insurance company can use BPM to automate the steps involved in processing insurance claims, a finance company can use BPM for loan approval, an HR department for employee performance management etc.,.

There have been several attempts to provide enterprise application integration, unified view of the business, homogenous flow of information across islands in an enterprise, but wide scale BPM acceptance have been very slow. This is due to several reasons including: cost and complexity.

One obstacle however, is that BPM platform solutions typically require a major investment of time and training, without any guarantee of success. As a result, developers frequently choose to avoid the complications and risk of BPM and instead code state and business logic directly into enterprise applications as usual.

The Marketplace

The BPM market is very fragmented with several standards and tens of vendors offering very costly but proprietary implementations. Most tools either cater to Managers / Business analysts and makes integration effort of developers a nightmare or are easy to develop, but extremely complicated to design real life application scenarios.

Many vendors of BPMS and Work Flow systems want you to believe that with their graphical process designer it only takes a business analyst to create process definitions. The reason for this is – programming is hard. The sales people tell you: “look, you don’t have to write a single line of code”. While not having to write code is a good thing, most vendors go overboard on this and don’t foresee a mechanism to integrate code into a process definition in cases where this is appropriate. This means that instead of programming, you fight the tool to perform custom processes. In real life when using a WFMS as an EAI-platform, integrating code into a process is a must. Developing process definitions requires input from and collaboration between business analysts and software developers.

JBoss jBPM

JBoss jBPM bridges the gap between business managers and developers by giving them a common language : the JBoss jBPM Process definition language (jPDL). This gives software project managers much more control on their software development efforts. After loading the process archive, users or systems perform single steps of the process. JBoss jBPM maintains the state, logs and performs all automated actions. JBoss jBPM combines easy development of workflow-applications with excellent enterprise application integration (EAI) capabilities.

JBoss jBPM is a standard Java application and does not need an application server. Enterprises that are interested in automating business processes can use JBoss jBPM without more application server complexity. JBoss jBPM can also be deployed by ISVs in a Web application or a standalone Java application.

The primary focus of JBoss JBoss jBPM development has been the BPM core engine. Properly orchestrating business processes across multiple applications is a complicated task. To meet this challenge, a business process engine needs a solid technical basis. JBoss jBPM is based on a powerful and simple core engine with bottom up approach naturally combining a declarative model and java deployment freedom. Its easy programming model enables applications to be up and running in less then half a day.

JBoss jBPM is a workflow management system (WFMS). Figure1 shows the interfaces between JBoss jBPM and all actors involved in the form of a use case diagram.



Figure
1: Interfaces of a WFMS

JBoss jBPM takes process archives as input. A process archive is a formal description of a business process. After a process archive is deployed, JBoss jBPM can manage the executions of this process. ‘Managing the executions’ means keeping track of the state of a process (State layer), storing information associated with a process execution (Context layer), integrating custom programming logic like e.g. sending emails, interacting with an ERP, … (Programming logic layer) and optionally allow users to complete tasks by submitting forms (User interfaces layer).

State Mangament

The main responsibility of a WFMS is to maintain the state of process executions. The state model of JBoss jBPM is based on a graph with nodes and transitions. Nodes and transitions are the main ingredients of a process definition. A state is an example of a node. For a detailed description of the states refer to http://www.jbpm.org/state.of.workfow/

Runtime interaction

The 2 most important interactions with JBoss jBPM are: starting an instance of a process definition and signaling the end of a state. As a result of both these interactions JBoss jBPM will calculate the next state of the process instance.

Actions

The state graph provides the structure of the process. Actions are pieces of programming logic that can be executed upon events in the process. There are three types of events: entering a node, leaving a node and taking a transition. While JBoss jBPM is calculating the next state, a number of these events will fire.

Process archives

The main file in a process archive is processdefinition.xml. This file contains the formal description of the processes. The act of parsing the processdefinition.xml and storing it in the database is called deploying a process. All other files in a process archive are stored as attachments with the process definition (either in the database or as files on the filesystem).

Example

ABC Company is working on a model for Pay Rise management. The process is as follows:


Figure
2.The pay raise process


This process is expressed as an XML file.

How to Deploy?

JBoss jBPM stores its process definitions in the database. So deploying a process into JBoss jBPM actually means parsing the processdefinition.xml and store it in the JBoss jBPM database. This can be done by

The JBoss jBPM ant-tasks par and deploypar. par allows creation of a process archive from a set of files. deploypar deploys a process archive to the database. The deploypar takes a JBoss jBPM.properties file as an attribute. This file specifies the JBoss jBPM configurations including the database to which the process archive has to be deployed.

Programmatically parsing and storing the processdefinition.xml into a datastore.

Where can I Use this?

JBoss jBPM can be applied in several enterprise scenarios. A sample representation includes:

1. In an enterprise application as an application component: A company developing an HR system on a J2EE platform can incorporate JBoss JBoss jBPM functionality as easily as including a library.

2. To deliver process based applications: An ERP vendor can include JBoss JBoss jBPM in their product and implement their process-based software above it. The application can additionally expose the JBoss jBPM engine to power users of the ERP product. That allows the application to be easily extendible and customizable, a benefit not well-addressed by in current-generation ERP packages.

3. As a component in an enterprise architecture: An enterprise can deploy JBoss jBPM as a separate component in the enterprise IT infrastructure. JBoss jBPM provides standardized, reliable business process management that parallels the status of database software in managing corporate data.

Features & Benefits

JBoss jBPM 3.0 combines workflow, BPM and orchestration into a single product. New features include:

Simplified Persistence – Increased flexibility of the API (Application Programming Interface) is achieved by decoupling persistence from the JBoss jBPM workflow operations. Simplified persistence enables easier business process and workflow development.

Pluggable Architecture – JBoss jBPM is designed to run as a standalone solution or be seamlessly embedded within any Java application. JBoss jBPM’s pluggable architecture allows extensibility and customizability on every level; within the process engine, for each process definition and every corresponding process instance. JBoss jBPM’s pluggable architecture provides workflow, orchestration and BPM in one platform, simplifying business development. Traditional standalone BPM, orchestration and workflow products force users to deploy multiple platforms to offer a similar range of capability, thereby adding complexity to the development process.

Improved Extensibility – The native JBoss jBPM process definition language (jPDL) now provides Java integration. For integration of web services and SOA, JBoss has implemented the BPEL specification as an extension to JBoss jBPM. Using these Java and BPEL extensions, enterprises can easily include their customization and use JBoss jBPM to orchestrate their business processes.

Extended Task Management – JBoss jBPM offers extended task management features such as tracking all tasks assigned to individuals, systems and groups. This functionality enables greater flexibility to create workflows targeted to specific business process problems.

Differentiators of JBoss jBPM

  1. No unnecessary dependencies
    1. no web services required
    2. no message queues required
    3. no ejb container required
    4. enables TDD for workflow
    5. If you grow and you can integrate later!
  2. Powerful process language
  3. Scalability
    1. start simple, scale to enterprise
  4. Open source

Rapid deployment – Within a Day!

JBoss JBoss jBPM 3.0 is released under the open source LGPL license and includes a tutorial that lets developers build sample applications in half a day.

Not only is JBoss jBPM a core product of the JEMS suite, it is also available as a standalone product that runs on its own, or on any J2EE application server. JBoss jBPM combines easy development of workflow applications with a flexible and scalable process engine. It can be used in the simplest environment or scale to handle the most complex clustered J2EE application scenarios.

JBoss jBPM delivers the capability to develop new automated business processes and workflows with its business process management (BPM) foundation as well as orchestrate business processes using industry-standard Business Process Execution Language (BPEL).

How to get help?

JBoss provides a full fledged training on JBoss jBPM in India and all over the world – both public training and in-house custom training. This caters to both developers and Business Analysts. JBoss also provides 24X7 Support & Indemnification protection. JBoss has a robust Partner Network who can help you in implementing solutions using JBoss jBPM. For more information on JBoss jBPM and to download a copy, visit www.jboss.org.

Acknowledgements:

1. Tom Baeyens – JBoss Architect and Project Lead for JBoss jBPM.

The author, S.Satyamoorthy is the Director of Operations – Asia Pacific, JBoss Inc. He can be reached at Satya dot satyamoorthy at jboss dot org

Related:
>> JBoss Expands Global Presence with New Office in India
>> JBoss’ Market Expansion and launch of the JBoss Open Source
>> JBossWorld Update: Drools, jBPM & JEMS
>> jboss vs geronimo
>> JBoss is light years ahead of other open source application servers

Content Team

The IndicThreads Content Team posts news about the latest and greatest in software development as well as content from IndicThreads' conferences and events. Track us social media @IndicThreads. Stay tuned!

21 thoughts on “Simplified BPM integration with JBoss jBPM

  • October 14, 2008 at 11:19 pm
    Permalink

    Hi,
    I am new to jbpm. I have no idea how to integrate it to a application. Can you please guide me with a simple code sample. I will be greatful to you.

    thanks,
    Mousumi

  • October 14, 2008 at 11:19 pm
    Permalink

    Hi,
    I am new to jbpm. I have no idea how to integrate it to a application. Can you please guide me with a simple code sample. I will be greatful to you.

    thanks,
    Mousumi

  • August 19, 2008 at 5:59 am
    Permalink

    I have got one existing application having its own database user tables etc.. Application is using flex as front end and struts, spring in middle tier. Hibernate for ORM. Can anyone give me details of efforts required for intigrate jbpm workflow in this app. where can i get details of tables used in jbpm examples.. jbpm documentation and wiki is not sufficient enough to get into details.. any link will be great help…

  • August 19, 2008 at 5:59 am
    Permalink

    I have got one existing application having its own database user tables etc.. Application is using flex as front end and struts, spring in middle tier. Hibernate for ORM. Can anyone give me details of efforts required for intigrate jbpm workflow in this app. where can i get details of tables used in jbpm examples.. jbpm documentation and wiki is not sufficient enough to get into details.. any link will be great help…

  • June 18, 2008 at 4:53 am
    Permalink

    Can u plz give me the example to access deployed jbpm process with struts application……and i am not able to understand the procedure to access jbpm by using struts application after reading \’jboss jbpm\’ document. So plz send me the example to my mail id \’[email protected]\’

  • June 18, 2008 at 4:53 am
    Permalink

    Can u plz give me the example to access deployed jbpm process with struts application……and i am not able to understand the procedure to access jbpm by using struts application after reading ‘jboss jbpm’ document. So plz send me the example to my mail id ‘[email protected]

  • June 12, 2008 at 11:28 pm
    Permalink

    As I am making very good use of jbpm workflow engine, I added security and as well as I did user mapping but my main concern is, how I integrate any process project with DB. As I wanted to retrieve data from DB and show in process forms(dynamically). plse guide me, I will remain highly grateful to you

  • June 12, 2008 at 11:28 pm
    Permalink

    As I am making very good use of jbpm workflow engine, I added security and as well as I did user mapping but my main concern is, how I integrate any process project with DB. As I wanted to retrieve data from DB and show in process forms(dynamically). plse guide me, I will remain highly grateful to you

  • May 8, 2008 at 6:19 am
    Permalink

    HI ,
    I was having on workflow which was deployed on jbpm server. Now I have changed the business logic (java) in the existing workflow, like previously it was oneClass.someMethod() now I changed it to otherClass.someMethod(). I deoployed the new workflow successfully but when my appliction invokes the workflow it is giving me some jbpm error that oneClass.someMethod() does not exists.

    So can you tell me how can I invoke new workflow ?

  • May 8, 2008 at 6:19 am
    Permalink

    HI ,
    I was having on workflow which was deployed on jbpm server. Now I have changed the business logic (java) in the existing workflow, like previously it was oneClass.someMethod() now I changed it to otherClass.someMethod(). I deoployed the new workflow successfully but when my appliction invokes the workflow it is giving me some jbpm error that oneClass.someMethod() does not exists.

    So can you tell me how can I invoke new workflow ?

  • March 12, 2007 at 4:47 am
    Permalink

    Hi ,
    I have created one process using Jboss JBPM I can deploy it into jbpm server with having any problems. Now I want to know how to deploy the same process definition into any java application server?

    And the one more question is how to change database hsql to user defined database. I want use mysql in the place of hsql how can I do this?

    Thanks and Regards,
    Suresh.
    mail to: [email protected]

  • March 12, 2007 at 4:47 am
    Permalink

    Hi ,
    I have created one process using Jboss JBPM I can deploy it into jbpm server with having any problems. Now I want to know how to deploy the same process definition into any java application server?

    And the one more question is how to change database hsql to user defined database. I want use mysql in the place of hsql how can I do this?

    Thanks and Regards,
    Suresh.
    mail to: [email protected]

  • December 5, 2005 at 3:07 am
    Permalink

    Hello

    We are using the JDeveloper IDE for our project, And our project is based on the Struts. Please can any one tell me how to integrate the jBPM with JDeveloper IDE

    With Thank & Regards
    Srinivasa.R

  • December 5, 2005 at 3:07 am
    Permalink

    Hello

    We are using the JDeveloper IDE for our project, And our project is based on the Struts. Please can any one tell me how to integrate the jBPM with JDeveloper IDE

    With Thank & Regards
    Srinivasa.R

  • November 27, 2005 at 10:23 am
    Permalink

    hello
    i don’t know who are you but if you can help me i’ll be very happy

    i don’t understand the parte when you speak about ‘dploying an process on the database’ i don’t know how to do it??
    you can answer me on [email protected]

    thank you

  • November 27, 2005 at 10:23 am
    Permalink

    hello
    i don’t know who are you but if you can help me i’ll be very happy

    i don’t understand the parte when you speak about ‘dploying an process on the database’ i don’t know how to do it??
    you can answer me on [email protected]

    thank you

Leave a Reply