# spring-attic/spring-statemachine

Spring Statemachine is a framework for application developers to use state machine concepts with Spring.

Repository: https://github.com/spring-attic/spring-statemachine
Canonical: https://ross.abutalabs.com/products/spring-statemachine
Homepage: http://spring-attic.github.io/spring-statemachine/
Language: Java
License: Apache-2.0
License Family: permissive
Topics: java, spring, statemachine
Archived: true
Last push: 2026-07-05T20:45:56+00:00

## Health v2 (maintenance only)
Score: 10/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 91, release rhythm 56, longevity 100
- inputs: {"age_days": 4228, "days_push": 59, "days_rel": 83, "gap_med": 347, "n_releases_24m": 2}
- flags: archived, no_readme
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1662, forks 638 (observed 2026-08-28T04:05:18.720924+00:00)

## What it is
Spring Statemachine is a Java framework that lets Spring application developers model application logic as finite state machines, supporting flat, hierarchical, and regional state configurations with triggers, guards, and actions. It integrates with Spring IOC, offers UML Eclipse Papyrus modeling, persistent machine configuration, and Zookeeper-based distributed state machines.

## Use cases
- model order lifecycle states in a Spring application
- implement hierarchical state machines for complex workflows
- manage device or session states with guaranteed consistent transitions
- persist and restore state machine configurations
- build distributed state machines coordinated via Zookeeper
- define state transitions with guards, actions, and event triggers

## When to choose
- you are building a Spring or Spring Boot application with complex state-dependent behavior
- you need hierarchical states, regions, or UML modeling support
- you want state transitions managed declaratively with Spring IOC integration

## When to avoid
- you are not using the Spring/JVM ecosystem
- your state logic is trivial and a simple enum or if/else suffices
- you need a framework under active development, as this project is in the Spring Attic

## Facets
- artifact type: framework
- maturity: maintenance
- function: state-management, workflow-automation, middleware
- domain: backend, developer-tools
- platform: jvm
- tags: state-machine, spring-ecosystem, finite-state-machine, uml-modeling, zookeeper, automation, spring

## Member repositories
- spring-attic/spring-statemachine (main) score 10

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:18.720924+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:44:35.765240+00:00, confidence not recorded.
  - homepage: http://spring-attic.github.io/spring-statemachine/ (fetched 2026-08-29T11:16:48.679304+00:00, sha 037dcf8eaa66)
- Data as of 2026-08-30T08:39:29.467469+00:00.
