Business Process Management (BPM)

Leave a comment

April 29, 2010 by huionn

Since I have one week of vacation, I decide to learn jBPM which is a popular open source BPM from JBoss by Red Hat.

It uses jPDL natively for business process modeling and supports BPMN 2.0 in jBPM 4 release.

After a few days exploration, it seems jBPM is quite flexible and customizable. jBPM allows customization through various handlers and extension through dependency injection by XML bindings. It can interact with external information such as Hibernate entities (such as User and Account) through process variables either in custom codes or expression. In addition, it even has built in integration support with Spring (


After exploration, I tried to model a asset request process which I implemented as “prototype” previously.

From this business process model, I found there are a few mistakes I made. For example, the asset reserved will be locked in this state forever unless someone release it manually. This is fixed by adding timeout to release the reserved asset automatically.

I have not seriously considered activity diagram or process model as part of design before, because I thought it is useless in implementation. Now, I know that I was wrong. Activity diagram/process model can provide dynamic view of system which complements with static view of domain models. It provides a big picture of the system which helps in communication and to verify the correctness of process before implementation starts. The more detailed business process model can even have exception handling such as escalation, notification, retry, etc.

Leave a Reply

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

You are commenting using your 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

%d bloggers like this: