He was reading one of the articles I've written, "Why do developers need an Enterprise Service Bus?" (Which, BTW, he describes as "exactly the article I was looking for." And no, I didn't have to pay him anything. Although come to think of it, he is buttering me up so that he can ask me a question.)
Bob Sutor addressed this topic briefly in his wishful predictions for 2005:
- The volume of public technical arguments will increase around whether Business Process Execution Language (BPEL) support belongs within an ESB implementation or is accessible via a service on the bus. (.8) Eventually people will decide it doesn't make much difference. (.9)
Some people feel that one of the capabilities of an ESB should be to execute business processes. Others feel that business process is outside of an ESB's duties, but that a business process can and should use an ESB to invoke its activities implemented as services.
So does workflow run inside an ESB or does it use an ESB? I fall into the latter camp, that a workflow uses an ESB, but runs in something separate, a workflow engine.
An area of confusion is that workflow is similar to mediation flow (aka message flow, managed by a process manager). The latter is an ESB's ability to intercept a message in transit and mess with it by transforming its contents and/or routing it to a new destination.
Message flows are a lot like non-interruptible workflows (aka microflows) in that they have no human interaction activities and tend to run in a single transaction with no persistence. A difference is that a message flow is focused on manipulating a message, whose transmission kicks off the flow; whereas a workflow (interruptible or not) is more of a service that can be invoked whenever needed via messaging or otherwise. Message flows (and non-interruptible workflows) tend to be stateless; they don't wait for events or timings. For this reason, mediations are much better for, for example, implementing splitters than aggregrators because the latter requires state to store the messages before merging them.
So the generally accepted answer is that ESBs implement mediation flows but not business processes. The latter run outside of an ESB in a process engine, but implement their activies as service consumers that use ESBs to invoke the service providers.