StatusMachina is a Java state machine library. I designed it from the start to be lightweight, and easy to use. It shines when used to implement small workflows and micro-services sagas.
Design Principles
Easy to use
Status Machina uses the builder pattern to define state machines. As a result, it is very easy to define a state machine. The code is also very readable, as you can see in the examples on GitHub.
Easy Application Framework Integration
Status Machina is easy to integrate into your favorite application framework. The Spring Boot integration arrived first, but it is equally easy to integrate with Micronaut, Quarkus, or VertX.
Extensibility
User defined persistence is one of the core principles applied to Status Machina.
The Spring Boot integration uses a Spring Data JPA persistence implementation by default. But you only need to implement an interface to define a new persistence layer.
As a result, it is very easy to provide an implementation for your favorite stack: Mongo, Redis, Casandra.
Open Source
Status Machina is available as open source software under the Apache 2.0 license.