`
Saito
  • 浏览: 44748 次
  • 性别: 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实现”将带你探索如何利用Java语言构建一个能解决有趣问题的状态机,比如“如何把大象塞进冰箱”。 首先,让我们理解有限状态机的基本概念。有限状态机是一种数学模型,它由一组...

    java枚举状态机

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

    Java.NIO资源下载资源下载

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

    SMC - 状态机代码生成工具 - Java工程示例

    1、资源内容:Java工程示例的SMC - 状态机的基本格式说明及使用示例; 2、应用场景:SMC可以通过一个配置文件,生成有限状态机所需的所有状态类以及状态机类,同时还包括了所有的状态间的转换逻辑。 3、参考链接:...

    InstallCert.java.zip

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

    msjava.dll

    **msjava.dll 文件详解** msjava.dll 是一个重要的动态链接库(Dynamic Link Library)文件,主要与Microsoft Java Virtual Machine(MS JVM)相关联。在Windows操作系统中,DLL文件扮演着支持程序运行的关键角色,...

    find_java.zip

    2. **使用`where`命令**:批处理可能使用`where java`命令来查找系统路径中是否存在Java可执行文件。`where`命令会搜索系统路径中的所有匹配文件,如果找到`java.exe`,则表示Java已经安装。 3. **版本检查**:一旦...

    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-FootballGame.rar_java 足球_java足球小游戏

    使用状态机模式可以有效地管理这些状态的转换。 - **帧率控制**:为了保证游戏流畅性,需要控制每秒渲染的游戏帧数。Java 中可以通过 `java.util.Timer` 类或者 `javax.swing.Timer` 来实现定时更新游戏状态。 - *...

    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分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用...

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

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

    三国志 java 源码.rar

    7. AI算法:游戏中的智能行为,如AI武将的决策,可能使用了搜索算法(如A*算法)、行为树或者状态机等。 8. 资源管理:音频、图像等资源的加载和释放是游戏性能优化的关键。Java源码会包含资源加载器,以高效的方式...

    电力电表376.1协议java版

    电力电表376.1协议是电力行业中广泛使用的通信标准,主要应用于智能电表与电网管理系统之间的数据交换。这个Java版实现是为了让开发者能够更方便地在Java平台上处理和解析376.1协议的数据。以下是关于376.1协议以及...

    java课程设计ATM机.rar

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

    Java自定义接口状态码.zip

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

    javacore和dump分析工具

    javacore.txt文件用jca打开,heapdump.phd文件用ha打开。 Heap dump 文件是一个二进制文件,它保存了某一时刻在 Java 堆中所有对象的状态。这个文件最重要的作用就是分析 Java 堆内存泄露问题,heap analyzer,MAT ...

    java swing用Logger输出错误日志.docx

    在Java编程中,日志记录是一项非常重要的任务,它帮助开发者追踪程序运行状态,调试问题,以及记录系统事件。在Swing应用中,我们同样可以使用Java内置的`java.util.logging`包来输出错误日志。这篇文档主要讨论了...

Global site tag (gtag.js) - Google Analytics