I have been picking through some workflow components recently. The two I am quite keen on are Zebra and Bossa, which both seem to work well in embedded environments.
The problem I have with most workflow engines is that each one appears to be tied to a particular persistence framework. Zebra uses Hibernate (why not torque?) and Bossa uses Prevayler. And embedding components with embedded persistence frameworks is a nightmare.
Workflow based applications are inherently long lived and so persistence is a fact of life for the data involved.
Having written a simple engine myself, the obvious thing to do is to embody a particular persistence paradigm in the structure of then engine. But can easily turn into a show stopper when it comes to using a particular library.
There must be some way to either standardize the integration with the persistence framework or to provide some kind of AOP approach to persistent data that is more geared towards externalisation of the data rather than direct persistence.
I will blog about it when I find it.