Sarasvati
Overview
Sarasvati is a workflow/bpm engine based on graph execution. It has a simple core which allows for different implementations. For example one may change the persistence mechanism (or avoid it altogether), change token representation or build additional functionality on top.
Features
- Simple graph execution based core
- Backtracking
- Process Definition/Graph Visualizations
- Process Visualizations
- Process level attributes
- Token attributes
- Efficient copy-on-write database storage of token attributes
- Execution history available through 'immutable' tokens
- Node guards allow bypassing nodes or discarding tokens for flow control
- Domain specific language (Rubric) for user understandable guards
- XML file format for process definitions
- Java implementation
- Hibernate backed engine for DB persistence
- Memory backed engine for cases where persistence is not required.
- Haskell implementation
- HDBC backed engine
- Memory backed engine
Introduction to workflow
Getting started with Sarasvati
- Getting the source code
- Sarasvati core concepts
- How to use Sarasvati and integrate it into your project
- Why is the project named Sarasvati?
- The project README, which lists required Java version and libraries
News
- March 17, 2009 - v1.0.0-rc2 of Sarasvati released for Java.
- February 23, 2009 - v1.0.0-rc1 of Sarasvati released for Java.
- December 9, 2008 - v1.0.0-beta3 of Sarasvati released for Java.
- October 27, 2008 - v1.0.0-beta2 of Sarasvati released for Java.
- Minor API improvements and bug fixes
- October 6, 2008 - v1.0.0-beta1 of Sarasvati released for Java.
- Cleaned up process definition file format somewhat, including fixing validation
- Added support for embedding script (such as javascript) in process definition files, to be executed when the node is executed
- Bug fixes
- September 4, 2008 - v1.0.0-alpha2 of Sarasvati released for Java.
- Added Adaptable interface for Nodes
- Removed visual components into separate project
- Fixed several bugs
- August 22, 2008 - v1.0.0-alpha1 of Sarasvati released for Java.
- Support for event listeners (global and per-process)
- Support for nested processes
- Standardized GraphFactory and GraphRepository
- Allow direct bean style setting of node attributes from XML
- Updated model to allow better recovery from failed node execution. Paves way for transaction boundaries.
- August 10, 2008 - v0.3 of Sarasvati released for Haskell.
- Updates support for process states
- Changes library name from Sarasvati to sarasvati-haskell, for consistency.
- July 29, 2008 - v0.3 of Sarasvati released for Java
- Introduces explicit process states allowing for asynchronous process completions.
- Bug fixes
- July 24, 2008 - v0.2 of Sarasvati released for Java and Haskell
- This introduces process level variables. Previously variables were only allowed on tokens. There are also some minor fixes.
- June 29, 2008 - v0.1 of Sarasvati released for Java.
- June 23, 2008 - Examples for Sarasvati Haskell released. I refreshed the v0.1.0 release with some updates to the build, including a dependency on Cabal 1.4.
- June 22, 2008 - v0.1 of Sarasvati released for Haskell. This is an alpha release. Documentation is incomplete. This will be the focus of release v0.2. Some Haskell example code as well the Java version should be released in the next week or so.
- June 12, 2008 - Java loader complete. Work on memory backed engine is also complete.
- June 12, 2008 - XML Process definition file format reworked. Now has XML Schema Definition rather than DTD. This is allows embedding of elements defined in other schemas.
- June 2, 2008 - More documentation and packaging work on Haskell version. Once XML -> Memory and XML -> DB loaders are documented and packaged, should be ready for an alpha release.
- May 26, 2008 - Start memory backed engine for java version. Basic engine is implemented. However,will need memory backed graph loader before this is useful or testable.
- May 26, 2008 - Implemented GuardLang for java version
- May 21, 2008 - Documenting and building out wiki pages.
- May 20, 2008 - Source code imported. I used svn2svn to extract two projects out of the many in my home repository.
- May 18, 2008 - Project created on Google Code. Thank you to Stefan Webb, for allowing me to use the name.