Sarasvati is an open source workflow/business process management engine for Java and Haskell. It is currently in beta, and is already suitable for use in many projects.
New in this release:
It includes the following major changes:
1. Support for nested processes has been fully implemented. Earlier versions did not work correctly.
2. The domain specific language for guards/flow control GuardLang has been replaced with Rubric
* An introduction to Rubric can be found here: http://code.google.com/p/sarasvati/wiki/Rubric
* In addition to what GuardLang was capable of, Rubric statements can return strings, numbers and dates, and has a simple syntax for date offsets.
* The Rubric AST implements the visitor pattern, so Rubric statements can be traversed, validated and otherwise inspected.
* It is implemented in ANTLR, so it now has a proper lexer.
* Rubric can be used as a simple rules engine for specify task properties.
3. A new node type has been added for the hibernate engine: HibPropertyNode
* The node type has an associated String -> String map, which can be used to store arbitrary properties in the database.
4. A new CustomNode type has been added. Subclasses of CustomNode can be used by both the memory backed and hibernate backed engines.
* You can now generally avoid writing the same node logic twice, if you are using both engines. If need to control how your node is mapped to the database, you can still subclass HibNode directly.
* It uses HibPropertyNode on the hibernate side to persist the node attributes.
5. Custom node attributes must now be wrapped in tag.
The full changelog can be found here: http://code.google.com/p/sarasvati/issues/list?can=1&q=label%3A1.0.0-beta3
For those unfamiliar with Sarasvati, these are some of the features:
* Simple, well documented, graph execution based core
* Process modularity via load time or run time process composition
* Process and token level attributes
* Actions can be implemented in scripting languages.
* Execution history available through tree structure of immutable tokens
* Node guards which allow bypassing nodes or discarding tokens for flow control
* Domain specific language (Rubric) for user understandable guards
* Java implementation with Hibernate and memory backed engines
* Alpha Haskell implementation with HDBC and memory backed engines
* LGPL license
Why might you want to use Sarasvati?
* Load time process composition gives you tremendous flexibility in modularizing your process definitions
* You want to provide transparency to your users
* Extensible and customizable
* You don't want the workflow engine to dictate how users, groups and tasks should be modeled.
Why might Sarasvati not yet be useful to you?
* It currently has no graphical editor (planned for a future version).
* It only runs on Java 1.5 or newer
* It does not yet have a turn key solution for users/groups/tasks.
What is workflow? http://code.google.com/p/sarasvati/wiki/Workflow
Core Concepts Documentation:
User's Guide: http://code.google.com/p/sarasvati/wiki/UsingSarasvati
Sarasvati welcomes users and contributors.
Please send comments, questions, etc to the user forum at: