Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
based on java signals.
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
src
.gitignore add idea files to git ignore
.project
LICENSE.md add maven support
README.md
pom.xml fresh new state machine

README.md

STATEMACHINE

an useless library for refactor ur messy if/else business logic.

Requirements

  • Java 6

Mini DSL

State start = createState("start");
start.enter = new Signal(String.class).add(callee, true, "beep", "<============= start enter helloWorld ===============>");
start.exec = new Signal(String.class).add(callee, true, "beep", "<============= i am in start state ===============>");
// new service state
State service = createState("service");
// add enter and exit signal
service.enter = new Signal(String.class).add(callee, true, "beep", "<============= service enter helloWorld ===============>");
service.exec = new Signal(String.class).add(callee, true, "beep", "<============= i am in service state ===============>");
service.exit = new Signal(String.class).add(callee, false, "beep", "<============= service exit byeWorld ===============>");
// new task state
State task = createState("task");
task.enter = new Signal(String.class).add(callee, true, "beep", "<============= task enter helloWorld ===============>");
// new end state
State end = createState("end");
end.exec = new Signal(String.class).add(callee, true, "beep", "<============= i am in end state ===============>");
// process transition
start.to(service).when("a > 5");
start.to(task).when("a <= 5");
service.to(end);
task.to(end);

Dot Support

Graphviz is open source graph visualization software.

install grapviz

on ubuntu or debian:

apt-get install graphviz

others:

http://www.graphviz.org/Download..php

gen dot file

javac im.saito.dot.Helper.java
java im.saito.dot.Helper

wow:

im.saito.dot folder will found :

dot

Javascript Interpreter

  • use it in Transition class / when method,true or false?

Running Statemachine

exec the src/example Main to run a statemachine.

Architecture Overview

Statemachine is organized into two parts: a state machine and a java signals which is inspired by as3signals.each state has three inject point.(enter exec exit)u can use it do anything u want with signals.

Tips

  • Statemachine is not a "java like" java library. if u dont like this style. u can change it by urself.

Author

License

Statemachine is licensed under the MIT License. (See LICENSE)

Something went wrong with that request. Please try again.