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枚举(Enum)状态机是一种使用枚举类型来实现状态转换逻辑的编程技术,它在Java编程中被广泛应用于管理对象的状态变化。状态机是一种模型,用于描述一个系统或对象在不同时间点可能存在的状态以及如何从一个状态...
**msjava.dll 文件详解** msjava.dll 是一个重要的动态链接库(Dynamic Link Library)文件,主要与Microsoft Java Virtual Machine(MS JVM)相关联。在Windows操作系统中,DLL文件扮演着支持程序运行的关键角色,...
在使用MyEclipse进行Java开发的过程中,可能会遇到`java.lang.UnsupportedClassVersionError: Bad version number in .class file`这样的错误提示。这种错误通常发生在编译器版本与实际使用的JVM版本不匹配的情况下...
《The Elements of Java Style》是一本权威的Java编码风格指南,旨在帮助开发者编写出高质量的Java代码。以下是对这本书中核心知识点的简要概括: 1. **命名规则**:在Java编程中,变量、方法和类的命名应该清晰、...
本课程由知名IT讲师徐培成主讲,聚焦Java基础的第09天,主题为“多线程状态机变换”。通过学习这部分内容,开发者能够深入理解Java中的线程管理和调度机制。 Java中的多线程提供了程序并发执行的能力,使得多个任务...
《Google Java Style-en.rar》是关于Google制定的Java编程风格指南的英文版资源,它包含了Google对于Java编程的一系列规范和最佳实践。这份指南旨在提高代码的可读性、一致性和可维护性,使得开发团队能够更高效地...
Java Runtime Environment(JRE)是运行Java应用程序所必需的基础组件,它包含了Java虚拟机(JVM)、类库以及其他支持Java程序运行的组件。最新版"1.8.0.271"是Oracle公司发布的Java SE 8的一个更新版本,主要用于...
在这个Java实现的状态机样例中,我们将深入探讨如何使用Java来构建一个灵活、可扩展的状态机,并将其应用于实际场景,如自动售货机或自动售票机。 首先,我们需要理解状态机的基本概念。状态机由一系列状态(State...
4. **系统还原**: 如果msjava.dll文件出现问题,可以尝试使用系统还原功能,将系统状态恢复到出现问题之前的时间点。 5. **使用DLL修复工具**: 可以使用专门的DLL修复工具,如DLL Downloader,来自动检测并解决ms...
7. AI算法:游戏中的智能行为,如AI武将的决策,可能使用了搜索算法(如A*算法)、行为树或者状态机等。 8. 资源管理:音频、图像等资源的加载和释放是游戏性能优化的关键。Java源码会包含资源加载器,以高效的方式...
在Java编程中,自定义接口状态码是一种常见的做法,它有助于提高代码的可读性和维护性,同时也使得系统之间的通信更加清晰。接口状态码通常用于表示一个请求的处理结果,可以是成功、错误或者特定业务状态。下面我们...
然而,在早期的非智能机时代,JAVA应用程序是许多用户的重要娱乐来源之一。三星作为全球知名的手机制造商,其生产的部分型号手机支持安装JAVA应用。本文将详细介绍三星手机安装JAVA应用程序的方法,帮助用户轻松安装...
在Java编程中,日志记录是一项非常重要的任务,它帮助开发者追踪程序运行状态,调试问题,以及记录系统事件。在Swing应用中,我们同样可以使用Java内置的`java.util.logging`包来输出错误日志。这篇文档主要讨论了...
Web.Java是一个高性能,轻量级的非阻塞式服务器。 为了能更好的提高性能,Web.Java把HTTP服务区分应用和文件服务两种。 Web.Java 整体采用Reactor模式用来接收或响应HTTP请求(原理同Nginx)。 ...
6. **Java序列化**:Java序列化用于将对象状态转化为字节流,便于存储和网络传输。书中讨论了如何实现Serializable接口,序列化和反序列化过程,以及自定义序列化行为。 7. **异常处理**:Java的异常处理机制是其...
本文将详细探讨使用Java实现的服务器监控程序,以及如何利用它来监控CPU、内存、网络连接和服务状态。 Java作为一种跨平台的语言,为开发服务器监控工具提供了便利。在"Java 服务器信息监控"项目中,开发者可以编写...
《飞机大战Java源码解析与学习指南》 在IT领域,游戏开发是一项充满挑战和乐趣的任务,而"飞机大战"作为一款经典的飞行射击游戏,深受开发者喜爱。本篇将深入探讨"飞机大战"的Java源码,旨在为初学者提供一个良好的...
Java线程状态流转图知识点总结 Java线程状态流转图是一种用于描述Java线程生命周期中不同的状态和状态转换的图形表示方式。该图形展示了Java线程从创建到终止的整个生命周期,并详细介绍了每种状态的特点和转换...