= Spring Statemachine

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 master 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 spring-code-of-conduct@pivotal.io.

== 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 git@github.com: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].

