/sarit

A tiny state machine workflow engine written in Go.

GNU Affero General Public License v3.0AGPL-3.0

sarit

Original author: Srinivas JONNALAGADDA <js@ojuslabs.com>

Status

sarit is in early development currently, and does not yet have usable releases.

Introduction

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.

TIP TIP

sarit is a Sanskrit word meaning 'stream', 'river' - something that flows!

Principles

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.

Non-goals

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).

(Informal) Specification

An informal specification of sarit can be found at SPEC. It is mandatory reading for anyone who intends to either use or understand sarit.

Footnotes

  1. Requires >= v1.19.

  2. Requires >= v3.37.