Original author: Srinivas JONNALAGADDA <js@ojuslabs.com>
sarit
is in early development currently, and does not yet have usable releases.
sarit
(IPA: sʌrɪt) is a tiny state machine + workflow engine.
It is developed using the Go programming language 1.
sarit
provides primitives that can be used to define and manage:
- business process flows and
- policy chains.
These can be used in process-driven applications, in which logical documents move through different states in response to user and system actions.
Examples include front-office — back-office document flows, issue ticket kind of flows, and maker — checker flows such as leave approvals, expense approvals or resource requisition approvals.
sarit
is a Sanskrit word meaning 'stream', 'river' - something that flows!
The following are the high-level guiding principles of sarit
.
sarit
should be small and easily maintainable.sarit
should have low cognitive load.sarit
should provide flexible primitives that enable a rich variety of use cases.sarit
should minimize external dependencies.
The following are the current dependencies.
- SQLite3 for persistence 2.
- mattn's go-sqlite3 as the database driver
- julienschmidt's httprouter for efficient routing
- oklog's ulid for easily sortable database IDs
- Uber's Zap for logging
sarit
is expressly not intended to be an enterprise-grade workflow engine.
The following features are not supported.
- Import from, and export to, workflow modelling formats like BPMN and XPDL.
- Executable specifications like BPEL and Wf-XML.
- Hierarchical regimes (only graph-like regimes are supported).
- Choreography (only orchestration is supported).
An informal specification of sarit
can be found at SPEC.
It is mandatory reading for anyone who intends to either use or understand sarit
.