首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

非Java style且没事儿用的Java有限状态机

2012-08-21 
非Java style且没什么用的Java有限状态机.STATEMACHINEan useless library for refactor ur m

非Java style且没什么用的Java有限状态机.
STATEMACHINE
============

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

source: =>github<=



Requirements
------------

* Java 6

Mini DSL
--------


State start = new State("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 ===============>");start.to("service").when("a > 5");start.to("task").when("a <= 5");// new service stateState service = new State("service");service.to("end");// add enter and exit signalservice.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, true, "beep", "<============= service exit byeWorld ===============>");// new task stateState task = new State("task");task.enter = new Signal(String.class).add(callee, false, "beep", "<============= task enter helloWorld ===============>");task.to("end");// new end stateState end = new State("end");end.exec = new Signal(String.class).add(callee, true, "beep", "<============= i am in end state ===============>");



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.Helper.javajava im.saito.Helper


#### gen dot image

   
dot -Tpng your/path/to/im/saito/Helper/fsm.dot > /your/path/to/fsm.png


wow:



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
------------

* Saito Wu <saitowu#gmail.com>

License
-------

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

热点排行