`
Saito
  • 浏览: 43704 次
  • 性别: 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有限状态机SquirrelStateMachine.zip

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

    was not found on the java.library.path

    这通常发生在Java程序试图使用Java Native Interface (JNI) 或其他依赖本地库的组件时。 Apache的APR(Apache Portable Runtime)是Apache HTTP服务器项目的一部分,它提供了一组C语言接口,用于操作系统级别的功能...

    InstallCert.java.zip

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

    【IT十八掌徐培成】Java基础第09天-004.多线程-状态机变换.zip

    本课程由知名IT讲师徐培成主讲,聚焦Java基础的第09天,主题为“多线程状态机变换”。通过学习这部分内容,开发者能够深入理解Java中的线程管理和调度机制。 Java中的多线程提供了程序并发执行的能力,使得多个任务...

    selenium-java-2.47.1.zip

    这个版本在当时是一个稳定且广泛使用的版本,它提供了丰富的API,支持多种浏览器,并且可以与各种测试框架如JUnit、TestNG等集成。 Selenium 的核心组件包括 WebDriver 和 Selenium RC。WebDriver 是一个接口,允许...

    java runtime 最新版 1.8.0.271

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

    Java源码查看线程的运行状态.rar

    在实际开发中,我们还可以使用`jstack`命令(Java虚拟机堆栈跟踪工具)来查看整个应用的线程状态,这对于诊断生产环境中的问题非常有用。 总结来说,Java提供了一系列的方法和工具来帮助开发者理解和管理线程状态,...

    FSM状态机生成工具

    描述中提到该工具是用JAVA语言编写的,这表明它利用了JAVA的面向对象特性,可能包括类、接口和抽象方法等概念,以实现对状态机的灵活配置和生成。状态机的定义通常涉及状态、事件和转换,而该工具允许用户通过简单的...

    java操作考勤机完整版代码示例

    随着技术的发展,利用Java语言与考勤机进行交互成为了一种常见且实用的方式。本文将详细介绍如何使用Java语言与中控品牌的考勤机进行数据交换,包括下载用户信息、考勤记录以及指纹信息等操作。 #### 一、项目环境...

    java base64的jar包

    Base64编码的基本原理是将每3个字节(24位)的数据转换为4个Base64字符(每个字符6位),总共使用64个不同的字符表示这64种可能的状态。这些字符通常包括大小写字母、数字以及"+"和"/",末尾可能会加上一个或多个...

    JAVA学生机环境.zip

    【标题】"JAVA学生机环境.zip"所包含的是一个针对Java学习和编程竞赛准备的集成开发环境,特别适合参与蓝桥杯比赛的学生使用。这个压缩包可能包括了Java的开发工具、必要的库文件以及可能的模拟测试平台。 【描述】...

    pintu-java.rar_Pintu.java

    《Java实现的拼图游戏——Pintu.java详解》 在编程学习的道路上,实践是检验理论知识最好的方式。本文将深入探讨一个基于Java实现的拼图游戏——Pintu.java,它是一个专为初学者设计的教学项目,旨在帮助学习者理解...

    java源码包---java 源码 大量 实例

    第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动...

    Java 服务器信息监控

    本文将详细探讨使用Java实现的服务器监控程序,以及如何利用它来监控CPU、内存、网络连接和服务状态。 Java作为一种跨平台的语言,为开发服务器监控工具提供了便利。在"Java 服务器信息监控"项目中,开发者可以编写...

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

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

    Java.nio

    Java.nio,全称为Java Non-blocking Input/Output,是Java平台从1.4版本开始引入的一套全新的I/O API,旨在替代传统的Java.io流API。它提供了更高效、更灵活的I/O操作方式,特别是在处理大量并发连接时,性能显著...

    Java线程状态流转图

    Java线程状态流转图知识点总结 Java线程状态流转图是一种用于描述Java线程生命周期中不同的状态和状态转换的图形表示方式。该图形展示了Java线程从创建到终止的整个生命周期,并详细介绍了每种状态的特点和转换...

    电力电表376.1协议java版

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

Global site tag (gtag.js) - Google Analytics