As you can see, there are some problems. Some of these standards are ill-suited to real business
needs, even once the busywork is surmounted. Some of these standards lack adequate support for work
lists—essentially making the processes useless for anything that models human interaction, a fairly
While a lot of this is slowly getting better, there's no reason to wait. There are viable de-facto
standards that meet a lot of these problems and offer a compelling alternative. In this chapter, we will
review jBPM, a popular open source environment. You might take a look at the alternative open source
workflow engines (Enhydra Shark, or OpenWFE, for example) or, indeed, the proprietary engines from
Tibco, IBM, Oracle, WebMethods, and so forth, before you decide on jBPM. In our opinion, it's powerful
enough for easily 80% of the situations you're likely to encounter, and can at least facilitate solutions for
Ultimately, jBPM integrates well with Spring, and it provides a very powerful complement to the
features of the things we've discussed in this topic and indeed to the core Spring framework itself. Just
as a page-flow description language threads together multiple requests in a web application, workflows
thread together many disparate actors (both people and automatic computer processes) into a process,
keeping track of state. Workflow support becomes far more compelling in an architecture using even a
few of the technologies we've covered in this topic: messaging, distributed computing, ESB endpoints,
web services, and long-lived processing infrastructure, for example! Workflow orchestrates these
different, powerful tools and provides cohesion. Eventually, you'll even begin to reuse processes much
like you might reuse a class or a Spring Integration endpoint.
11-1. Understanding Workflow Models
You understand the “why” behind business processes, and have identified types of problems that might
be well-suited to this technology. Now you want to understand how—after all, it all sounds so nebulous
and abstract. How do you describe and speak about a workflow, exactly?
It turns out, happily, that you probably already know most of what you need to describe a workflow
engine. This is part of why a workflow engine is so powerful—it formalizes and facilitates solutions
you're already struggling to build in other technologies. In fact, when you draw an activity diagram, the
result is likely directly translatable into a workflow. As you'll see, a lot of the constructs used to build a
business process are familiar. We've discussed many of them in our discussions of Spring Integration
and Spring Batch and of the map/reduce pattern with GridGain.
One metric by which you might judge an engine is how well it lets you express workflow patterns. The
workflow patterns describe different idioms that you might apply to a pattern. All patterns ultimately are
built out of any mixture of a few key concepts, many of which we've discussed in other chapters of this
book, as with Spring Batch and Spring Integration.