`
Saito
  • 浏览: 44094 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

非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 state
State service = new State("service");
service.to("end");
// 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, true, "beep", "<============= service exit byeWorld ===============>");
// new task state
State task = new State("task");
task.enter = new Signal(String.class).add(callee, false, "beep", "<============= task enter helloWorld ===============>");
task.to("end");
// new end state
State 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.java
java 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)
分享到:
评论

相关推荐

    java枚举状态机

    Java枚举(Enum)状态机是一种使用枚举类型来实现状态转换逻辑的编程技术,它在Java编程中被广泛应用于管理对象的状态变化。状态机是一种模型,用于描述一个系统或对象在不同时间点可能存在的状态以及如何从一个状态...

    轻量级Java有限状态机SquirrelStateMachine.zip

    Squirrel State Machine 是基于Java的有限状态机的实现。主要实现功能包括: - 提供友好的API来构建状态机 - 提供基于注释声明状态机 - 事件驱动的状态转移 - 状态机自诊断 - 状态机导出SCXML,DOT文件 ...

    Java开发技术大全(500个源代码).

    代码范例列表 第1章 ... useArray2.java 用反射机制使用数组示例2 第10章 示例描述:本章学习泛型。 demoBounds.java 演示有界类型 demoForceChange.java 演示强制类型转换 demoGeneric.java ...

    Java.NIO资源下载资源下载

    - **使用 SelectionKey**:解释了如何使用 SelectionKey 来管理 Channel 的选择状态。 - **使用 Selectors**:详细讨论了如何使用 Selector 来监听多个 Channel 的事件。 - **异步关闭 (Asynchronous Closability)**...

    java NIO.zip

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统的I/O模型的新技术。自Java 1.4版本引入NIO后,它为Java开发者提供了更高效的数据传输方式,尤其是在处理大量并发...

    JAVA_API1.6文档(中文)

    java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt....

    java_cup_v10k.rar_java c++_java cup_java-c_java_cup.z_java_cup_v

    LALR(1)是一种有限状态自动机,用于分析上下文无关文法,它能够在处理输入时预测下一步可能的语法结构,从而高效地解析程序代码。Java_CUP使用这种算法来理解用户定义的文法,然后生成相应的解析器,这个解析器能够...

    InstallCert.java.zip

    "InstallCert.java.zip" 是一个压缩包文件,包含了一个名为 "InstallCert.java" 的源代码文件。这个文件通常与Java安全证书的安装和管理有关,特别是在处理自签名或非标准SSL/TLS证书时可能会用到。`InstallCert` 是...

    状态机判断实数(Java标准)

    在这个场景中,我们讨论的是使用状态机来判断一个字符串是否能表示Java标准中的实数。实数在编程中通常包括浮点数和双精度浮点数,遵循特定的格式规则。 Java中实数的标准格式基于IEEE 754标准,它允许数字以正负号...

    java编码规范-《The Elements of Java Style》翻译本

    《The Elements of Java Style》是一本权威的Java编码风格指南,旨在帮助开发者编写出高质量的Java代码。以下是对这本书中核心知识点的简要概括: 1. **命名规则**:在Java编程中,变量、方法和类的命名应该清晰、...

    java.lang.UnsupportedClassVersionError Bad version number in .class file异常的解决办法

    在使用MyEclipse进行Java开发的过程中,可能会遇到`java.lang.UnsupportedClassVersionError: Bad version number in .class file`这样的错误提示。这种错误通常发生在编译器版本与实际使用的JVM版本不匹配的情况下...

    Google Java Style-en.rar

    《Google Java Style-en.rar》是关于Google制定的Java编程风格指南的英文版资源,它包含了Google对于Java编程的一系列规范和最佳实践。这份指南旨在提高代码的可读性、一致性和可维护性,使得开发团队能够更高效地...

    有限状态自动机,JAVA实现

    - `FiniteStateMachine.java`:表示有限状态自动机的类,包含一个`Map, Map, State&gt;&gt;`来存储转移函数,以及`startState`表示初始状态。 在`FiniteStateMachine`类中,可能有一个`transition(State currentState, ...

    java runtime 最新版 1.8.0.271

    Java Runtime Environment(JRE)是运行Java应用程序所必需的基础组件,它包含了Java虚拟机(JVM)、类库以及其他支持Java程序运行的组件。最新版"1.8.0.271"是Oracle公司发布的Java SE 8的一个更新版本,主要用于...

    基于Java的请假状态机demo-请假审批流程状态机的实现

    基于Java的请假状态机demo-请假审批流程状态机的实现。个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用...

    java-onvif.zip_-baijiahao_ONVIF java_java onvif_java-onvif_refer

    5. **事件订阅**:接收来自摄像机的事件通知,例如移动检测、音频检测或I/O触发器的状态变化。 6. **安全设置**:管理设备的认证机制,包括用户名/密码、证书和TLS/SSL配置。 7. **扩展服务**:根据特定摄像机的...

    Modbus-TCP-java.rar_MODBUS Tcp java_java Tcp _java modbus_java

    Modbus-TCP是一种广泛使用的工业通信协议,它允许设备之间通过TCP/IP网络交换数据。在Java编程环境中,实现Modbus-TCP通信可以帮助开发者构建能够与各种自动化设备进行交互的应用程序。本压缩包“Modbus-TCP-java....

    google-java-styleguide-zh

    2. 测试应独立且可重复,避免依赖外部状态。 3. 使用Mock框架模拟依赖,确保测试的隔离性。 九、持续集成与代码审查 1. 鼓励团队使用持续集成工具,及时发现和修复问题。 2. 实施代码审查制度,通过同行评审提高...

    java课程设计ATM机.rar

    在本Java课程设计中,我们将探索如何利用编程技术构建一个模拟ATM(自动取款机)系统的应用。这个项目旨在帮助新手程序员理解面向对象编程、类的设计以及如何将实际问题转化为计算机程序。以下是对该ATM机系统的关键...

    Java自定义接口状态码.zip

    在Java编程中,自定义接口状态码是一种常见的做法,它有助于提高代码的可读性和维护性,同时也使得系统之间的通信更加清晰。接口状态码通常用于表示一个请求的处理结果,可以是成功、错误或者特定业务状态。下面我们...

Global site tag (gtag.js) - Google Analytics