Josh Long gave this topic. We starts by saying…if you’re writing a huge conditional statement based on states in your application, you can benefit from a Workflow engine.
Process state is described by an UML activity diagram — it’s the voyage not the destination.
BPM is as much a business problem as it is a technical problem. It’s helpful because it makes reuse from a given way to tackle a particular business problem. Don’t believe the hype you can take a BP diagram and turn it into the implementation some vendors like you to believe. A techie will be involved and something you should go in knowing.
Workflow engines benefit from multiple steps performed by multiple actors. State of BPM today focuses on two standards: BPEL 2.0 and BPMN 2.0. The latter provides an execution behavior to model directly to an implementation…formerly, you could create stuff in BPMN that wasn’t possible BPEL…ouch!
Drools Flow, Grails Flow and jBPM are the relevant open source tools that you should look at. Note that Drools Flow and jBPM come under jBoss and you probably should use the latter. Oracle AquaLogic, MS Workflow and TIBCO iProcess are commercial alternatives.
jBPM 3.x is the most widely supported and works well with existing ESBs. Spring Modules used to provide jBPMTemplate for Spring users but doesn’t work, so avoid it. jBPM 4.x has integrated Spring support. It’s also embeddable and integrates with many db’s and architectures. Great support for human tasks as well as automated one asynchronously. jPDL is a much simpler alternative to BPEL BPEL 2.0 support is limited in jBPM 4.x.
His demo was very clean but requires XML for configuration. If you done that sort of stuff in Spring, you’ll have no problem here. Borrows a lot from how you configure Hibernate in Spring.