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枚举(Enum)状态机是一种使用枚举类型来实现状态转换逻辑的编程技术,它在Java编程中被广泛应用于管理对象的状态变化。状态机是一种模型,用于描述一个系统或对象在不同时间点可能存在的状态以及如何从一个状态...
1、资源内容:Java工程示例的SMC - 状态机的基本格式说明及使用示例; 2、应用场景:SMC可以通过一个配置文件,生成有限状态机所需的所有状态类以及状态机类,同时还包括了所有的状态间的转换逻辑。 3、参考链接:...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统的I/O模型的新技术。自Java 1.4版本引入NIO后,它为Java开发者提供了更高效的数据传输方式,尤其是在处理大量并发...
java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt....
Maven <dependency> <groupId>com.github.stateless4j</groupId> <artifactId>stateless4j</artifactId> <version>2.6.0</version> </dependency>介绍直接在 Java 代码中创建状态机和基于轻量级...
LALR(1)是一种有限状态自动机,用于分析上下文无关文法,它能够在处理输入时预测下一步可能的语法结构,从而高效地解析程序代码。Java_CUP使用这种算法来理解用户定义的文法,然后生成相应的解析器,这个解析器能够...
"InstallCert.java.zip" 是一个压缩包文件,包含了一个名为 "InstallCert.java" 的源代码文件。这个文件通常与Java安全证书的安装和管理有关,特别是在处理自签名或非标准SSL/TLS证书时可能会用到。`InstallCert` 是...
在使用MyEclipse进行Java开发的过程中,可能会遇到`java.lang.UnsupportedClassVersionError: Bad version number in .class file`这样的错误提示。这种错误通常发生在编译器版本与实际使用的JVM版本不匹配的情况下...
本课程由知名IT讲师徐培成主讲,聚焦Java基础的第09天,主题为“多线程状态机变换”。通过学习这部分内容,开发者能够深入理解Java中的线程管理和调度机制。 Java中的多线程提供了程序并发执行的能力,使得多个任务...
《Google Java Style-en.rar》是关于Google制定的Java编程风格指南的英文版资源,它包含了Google对于Java编程的一系列规范和最佳实践。这份指南旨在提高代码的可读性、一致性和可维护性,使得开发团队能够更高效地...
使用状态机模式可以有效地管理这些状态的转换。 - **帧率控制**:为了保证游戏流畅性,需要控制每秒渲染的游戏帧数。Java 中可以通过 `java.util.Timer` 类或者 `javax.swing.Timer` 来实现定时更新游戏状态。 - *...
Java Runtime Environment(JRE)是运行Java应用程序所必需的基础组件,它包含了Java虚拟机(JVM)、类库以及其他支持Java程序运行的组件。最新版"1.8.0.271"是Oracle公司发布的Java SE 8的一个更新版本,主要用于...
5. **事件订阅**:接收来自摄像机的事件通知,例如移动检测、音频检测或I/O触发器的状态变化。 6. **安全设置**:管理设备的认证机制,包括用户名/密码、证书和TLS/SSL配置。 7. **扩展服务**:根据特定摄像机的...
Modbus-TCP是一种广泛使用的工业通信协议,它允许设备之间通过TCP/IP网络交换数据。在Java编程环境中,实现Modbus-TCP通信可以帮助开发者构建能够与各种自动化设备进行交互的应用程序。本压缩包“Modbus-TCP-java....
7. AI算法:游戏中的智能行为,如AI武将的决策,可能使用了搜索算法(如A*算法)、行为树或者状态机等。 8. 资源管理:音频、图像等资源的加载和释放是游戏性能优化的关键。Java源码会包含资源加载器,以高效的方式...
在本Java课程设计中,我们将探索如何利用编程技术构建一个模拟ATM(自动取款机)系统的应用。这个项目旨在帮助新手程序员理解面向对象编程、类的设计以及如何将实际问题转化为计算机程序。以下是对该ATM机系统的关键...
在Java编程中,自定义接口状态码是一种常见的做法,它有助于提高代码的可读性和维护性,同时也使得系统之间的通信更加清晰。接口状态码通常用于表示一个请求的处理结果,可以是成功、错误或者特定业务状态。下面我们...
描述中提到该工具是用JAVA语言编写的,这表明它利用了JAVA的面向对象特性,可能包括类、接口和抽象方法等概念,以实现对状态机的灵活配置和生成。状态机的定义通常涉及状态、事件和转换,而该工具允许用户通过简单的...