One of the more common usages of Mule is as the integration piece of a larger SOA architecture. Mule has traditionally never attempted to offer a complete SOA suite/stack of products as some of its larger competitors do, but has rather focused on the thing it does best, which is integration. Other aspects of an SOA architecture (messaging backbone, data storage, governance, etc.) are generally provided by other best-of-breed solutions for those areas, and Mule allows you to integrate with as many different options as possible.
When it comes to modeling your SOA application’s business logic, you could just code it all up in Java and keep stateful information in an RDBMS. However, if your business logic has a considerable amount of complexity to it, is frequently changing, or is defined/maintained in large part by functional/business analysts, you might consider modeling parts or all of it with a BPMS/Process Engine, Business Rules, or even CEP.
Since these are not exactly household terms, let’s provide a bit of definition:
What is BPM?
A Business Process Management (BPM) system (sometimes referred to as a Process Engine) is used to model an enterprise’s business processes and the interactions among them. These processes may be completely automated or they may involve human intervention. When human intervention is involved, the term “workflow” is often used instead of “process”.
What are Business Rules?
Business Rules are a more declarative approach to modeling business logic where the logic is defined in a ruleset as opposed to a process. Changes to relevant data cause one or more rules from the ruleset to execute.
What is CEP?
Complex Event Processing (CEP) refers to an application where a stream or cloud of multiple events is analyzed by business rules in order to detect complex patterns or relationships within those events, generally in real-time.
Although some SOA vendors will make it sound like BPM competes with an integration software such as Mule, they are actually quite complimentary tools since a Process or Rules engine tends to focus on modeling your business logic while Mule focuses on integrating your business logic with the outside world (internal/external systems, datastores, other applications, services in the cloud, etc.)
There is a case to be made for using each or none of these tools based on the business logic you need to model and other organizational considerations, but it is beyond the scope of this post to explain all of those considerations here.
As to be expected, there are some excellent open source solutions available for these areas, just to name a few here:
BPM – JBoss jBPM, Drools Flow, Activiti, Bonita, OSWorkflow
Business Rules/CEP – Drools, Esper, Prova, Jess
In part 2 of this post, I will discuss what Mule has to offer for integrating with some of these tools.