BeanFlow is a lightweight Java library for building flows workflows using beans to orchestrate events. You can think of BeanFlow as a simple alternative to BPEL where the flows workflows are all specified and implemented using Java code rather than declarative XML.
...
Now you certainly can use things like BPEL to solve these kinds of problems. However often this is a bit heavy weight & complex and you just want to have a bean based flow using regular Java code to represent the flow.
Transforming the traditional workflow approach
One of the main goals of BeanFlow is to reuse what the Java platform is good for in the workflow space; then supplement it with missing abstractions rather than inventing the wheel in a sub-optimal way.
Traditional approach | BeanFlow approach |
---|---|
use a declarative workflow definition to specify a workflow | write a Java class |
use workflow language to write loops, manage state, deal with persistence | use regular Java code (if/for/while) |
implement a generic state and persistence framework for workflow instances | use regular Java fields in your workflow class, then use JDBC/DAO/JPA to deal with persistence |
Use cases
When working with concurrent or distributed applications there are many use cases for needing to orchestrate among multiple concurrent events. Here are a few examples from our use cases implementing ServiceMix and ActiveMQ
...