spring-statemachine icon indicating copy to clipboard operation
spring-statemachine copied to clipboard

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

= Spring Statemachine

image:https://github.com/spring-projects/spring-statemachine/workflows/CI/badge.svg[link="https://github.com/spring-projects/spring-statemachine/actions"] (GitHub default)

The Spring Statemachine project aims to provide a common infrastructure to work with state machine concepts in Spring applications.

It is advised to check the actual state of this project by referring to the latest releases found on https://projects.spring.io/spring-statemachine/[Spring Statemachine Project Page]. The git repo default branch may be relatively unstable when new features are added into the source code.

== Code of Conduct This project adheres to the Contributor Covenant link:CODE_OF_CONDUCT.adoc[code of conduct]. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].

== Downloading Artifacts See https://github.com/spring-projects/spring-framework/wiki/Downloading-Spring-artifacts[downloading Spring artifacts] for Maven repository information.

== Documentation https://projects.spring.io/spring-statemachine/[The Spring Statemachine Project Page] contains links to currently available JavaDoc and Reference Documentation for particular releases and versions.

== Samples Samples can be found under spring-statemachine-samples. Check the reference documentation more about what those do.

== Building from Source Spring Statemachine uses a https://gradle.org[Gradle]-based build system. In the instructions below, https://vimeo.com/34436402[./gradlew] is invoked from the root of the source tree and serves as a cross-platform, self-contained bootstrap mechanism for the build.

=== Prerequisites https://help.github.com/set-up-git-redirect[Git] and the https://www.oracle.com/technetwork/java/javase/downloads[JDK8 build].

Be sure that your JAVA_HOME environment variable points to the jdk folder extracted from the JDK download. While build requires JDK8, created artifacts are JDK7 compatible.

=== Check out sources [indent=0]

git clone [email protected]:spring-projects/spring-statemachine.git

=== Install all spring-* jars into your local Maven cache [indent=0]

./gradlew install

=== Compile and test; build all jars, distribution zips, and docs [indent=0]

./gradlew build

Discover more commands with ./gradlew tasks. See also the https://github.com/spring-projects/spring-framework/wiki/Gradle-build-and-release-FAQ[Gradle build and release FAQ].

== Contributing https://help.github.com/send-pull-requests[Pull requests] are welcome; see the https://github.com/spring-projects/spring-statemachine/blob/master/CONTRIBUTING.md[contributor guidelines] for details.

If you want to contribute, search github tickets marked with help wanted or come up with your own ticket but please first open a ticket to discuss in order to avoid duplicate work on a topic or issue. Nobody wants to see the same work done twice!

== License Spring Statemachine is Open Source software released under the https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].