Moving code from BPM to ESB

We have an application that uses BPM for managing long running processes. We don't want to use this product anymore and we're looking at moving it to an ESB (i.e. Mule).

My view on this is that complex and long-running processes don't belong in an ESB. Also it would need to manage state which is not what an ESB should be doing in my opinion. An ESB is designed to handle high-volume, short-lived, real-time type messages? Am I correct in saying this?

Does anybody agree/disagree with this and what would the best solution be? For example, should the BPM code be rewritten as a java application with a database behind it to manage state and use maybe quartz in Mule to handle periodic tasks to replace timers that are used in the BPM application?

I'd be interested to hear as many opinions on this as possible. Many thanks.



Here i want to bring the basic difference between BPM and ESB and the purpose of it.

BPM - Specially for Orchestration and Choreography.
ESB - Acts as a broker that can seamlessly handle interactions with other/different applications.

The reason for bringing the basic difference is each concept has its own significance.


Architecture is a backbone of any system, the Era continues for deriving new system from old system with an additional features that means anything can be possible!

Answer to your question is, if you have good architecture and control on java we can derive a kind of Intalio with more features and the current MULE or any ESB versions might not have some features to support long running state machines but wait for a future.


Moving a BPM layer to ESB is not a straighforward choice. Even though there are places where they overlaps each other, both have their own specialities and belong to certain areas of a system.

ESB has large support for different protocols as well as format mediation which makes it stronger in message processing. Also it solves complex system integrations and can handle high volume of transactions. On the other hand, when it comes to ochestrate a complex business logic, ESB is less flexible compared to the ability of a BPM. Also, BPM maintains state of a trasaction and can support long lived transactions which may last for months. This is not the case with ESB which is usually stateless and support short lived transactions. So, ESB and BPM are not complimenty to each other always. There are situations where each should be used to take care of their strong areas.

The choice between ESB or BPM or whether to use both together solely depends on the requirements. Based on complexity of business logics, transactions volume, performances, protocols and data format etc the choice should be made. Normally ESB is assigned to the middle layer orchestrating low-level services into larger service units, which will be exposed to the business for use in processes. The business logic is designed with the use of these services in a higher level.

On the second topic, whether to redesign BPM with java, db etc: Again, it is kind of developing another process engine without bpel. If the process logic is not much complex, it is ok to develop kind of a rules engine to replace BPM layer. But when it comes to complex business logic, interations etc, it is always good to go for BPM instead of trying to simulate one with a custom component. The choice should be to select the right BPM product from the list available, not to develop a similar component from scratch.


Ideally BPM should be used to handle the business flows, and act as a controller and give command to the applications that will do the processing. And an ESB should be used to integrate the applications in the enterprise. As long as your application is concerned, if the BPM is just used as a scheduler, then it is ok to have those process running in Mule using Quartz.


At high level, BPM's support Human task activity and reduce low level (coding)activities.

You can move your BPM code to MULE ESB Side. But you have to take care of Human Task, Timer, Low level stuff.

Mule is not free for Production. There is other Open source ESB's Service Mix ESB. But it is not having IDE like Mule Studio.

Please give more details about your BPM application.. if it is very highly used prefer to go other BPM .. if it is small scale then you can move to ESB..



I disagree with your plan to dis-integrate the BPM and replacing it entirely with Mule ESB.
As you said Mule ESB is a complex-system integrator for short lived and stateless transactions.
On the other side BPM models and orchestrates business processes,integrating the stateful and long-lived transactions.

BPM,controls the entire workflows-ESB helps it interact with all the systems using all the connectors,transports and in-built routing techniques.Basically using these two provides a centralized approach to solve complex business integration problems.
On a whole the concept of SOA will be justified when these two,ESB and BPM were used hand-in-hand.
The upcoming/updated versions of both ESB and BPM's helps us in generating dynamic code without we actually writing long and meaningless code.


At first, BPM cannot be substituted with ESB completely since both are fit for unlike tenacities (e.g. ESBs are consigned for middle layer), but they can be used together for enterprise designs. However, any BPM or implementation of business processes can be effortlessly done by Java/J2EE application along with SOA.


Changing the code from BPMS to ESB is not advisable especally statefull flows.

You can change your timer processes from BPMS to ESB if they are gonna run for long hours/days. The timer can be implemented using a database based approach, where you can save your time values in DB and trigger them using a scheduler from mule.

BPM was designed for handling long running processes which are stateful. In the case of leave approval there are several manual intervention. Once you apply a leave in a portal the manager has to approve it and then the Hr has to approve. After the approval the leave has to be deducted from your wallet. So theses approvals are long running tasks , will you be able to do such things in mule or Java. It is possible, will it be easy to read and maintain? maintanence will be a big question. The code will be easier to see in a single flow rather than several classes of Java code.


ESB and BPMS are two different technologies and one cannot replace other although some BPMS can have integration capabilities.

Post a Reply
Captcha Image