官网:https://projects.spring.io/spring-statemachine/

官网这里列出了很多特性,说的就是易于使用的状态机,帮助开发者简化状态机的开发过程,让状态机结构更加层次化。

状态机

有限状态机(FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。

状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足来确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。

写一个demo

在pom.xml中加入依赖:

定义订单状态

订单事件:

然后写一个配置类:

@EnableStateMachine注解用来启用Spring StateMachine状态机功能

configure(StateMachineStateConfigurer<States, Events> states)方法用来初始化当前状态机拥有哪些状态

configure(StateMachineTransitionConfigurer<States, Events> transitions)方法用来初始化当前状态机有哪些状态迁移动作,其中命名中我们很容易理解每一个迁移动作,都有来源状态source,目标状态target以及触发事件event

然后写个 Application 类:

日志输出:

run函数中,我们定义了整个流程的处理过程,其中start()就是创建这个订单流程,根据之前的定义,该订单会处于待支付状态,然后通过调用sendEvent(Events.PAY)执行支付操作,最后通过掉用sendEvent(Events.RECEIVE)来完成收货操作。

文档地址(https://docs.spring.io/spring-statemachine/docs/2.0.3.BUILD-SNAPSHOT/reference/htmlsingle/)

Api(https://docs.spring.io/spring-statemachine/docs/2.0.3.BUILD-SNAPSHOT/api/)

有以下模块可供选择使用

这只是根据文档尝试一下,statemachine还有很多内容,以后再续!

有什么讨论的内容,可以加我公众号:

初试SpringStateMachine框架实现状态机相关推荐

  1. Labview2019,通讯三菱plc,用opc和mc通讯协议,sqlite数据库,labview标准框架jki状态机,加上数组队列,实现多线程交互。

    Labview2019,通讯三菱plc,用opc和mc通讯协议,sqlite数据库,labview标准框架jki状态机,加上数组队列,实现多线程交互. _:4550670508310561加菲猫眼

  2. DMotion - 基于DOTS的动画框架和状态机

    [博物纳新]专栏是UWA旨在为开发者推荐新颖.易用.有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目.前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性.很多时候,我们并不知道 ...

  3. 使用Spring StateMachine框架实现状态机

    Spring StateMachine框架可能对于大部分使用Spring的开发者来说还比较生僻,该框架目前差不多也才刚满一岁多.它的主要功能是帮助开发者简化状态机的开发过程,让状态机结构更加层次化.前 ...

  4. 安卓学习笔记43:初试开源框架Volley

    文章目录 零.学习目标 一.Volley概述 (一)安卓HTTP网络编程两种方式 (二)简化HTTP通信,推出Volley框架 二.案例演示 - 利用Volley下载网页 (一)运行效果 (二)涉及知 ...

  5. QT学习之状态机框架

    状态机框架 创建状态机

  6. 【安卓Framework学习】Wifi框架学习之wifi状态机

    系列文章目录 [安卓Framework学习]Wifi框架学习之核心类. [安卓Framework学习]Wifi框架学习之开启与关闭流程. [安卓Framework学习]Wifi框架学习之连接与断开流程 ...

  7. 设计模式的C语言应用-状态机模式-第二章

    模式介绍 状态(state)模式是C语言实现相当常用的模式,也是能够在C语言***现出来的最显性的模式之一.在面向对象里,状态模式允许一个对象在内部状态改变的时候改变其行为. 状态用法很多,最常见的是 ...

  8. 嵌入式状态机编程简介

    不知道大家有没有这样一种感觉,就是感觉自己玩单片机还可以,各个功能模块也都会驱动,但是如果让你完整地写一套代码,却无逻辑与框架可言,上来就是开始写!东抄抄西抄抄,说明编程还处于比较低的水平.那么,如何 ...

  9. c语言设计模式代码完整实现-状态机模式

    模式介绍 状态(state)模式是C语言实现相当常用的模式,也是能够在C语言***现出来的最显性的模式之一.在面向对象里,状态模式允许一个对象在内部状态改变的时候改变其行为. 状态用法很多,最常见的是 ...

最新文章

  1. C#中在窗体应用中使用StringBuilder拼接显示网页
  2. 从centos7默认安装的/home中转移至根目录/ (LVM操作简明教程)
  3. Vista,Windows7中给IIS7添加PHP支持
  4. fastjson转换对象时出错,$ref: $.data.list[0].xxxx
  5. 捕鱼小游戏html源码,html5捕鱼达人小游戏源码
  6. 原生js格式化显示json对象以及stringify的妙用
  7. oracle语句中,Oracle 语句中“||”代表什么啊?
  8. js中获取当前屏幕宽度方法如下:
  9. 计算机网络中tdm是什么,8.1 计算机网络FDM TDM计算机网络自学笔记.pdf
  10. sleeptown睡眠时间设置教程(2021)
  11. 搭建自动化测试平台(selenium+testng+maven+svn+Jenkins)【转自galen2016】
  12. 米的换算单位和公式_小学数学单位换算公式大全.doc
  13. 申宝策略-船舶军工表现靓丽
  14. 紫光服务器型号,紫光新华三全新HPE Gen10系列服务器响彻“云”端
  15. MockWebServer使用指南
  16. 固实压缩文件容易损坏_你不知道的压缩软件小技巧1
  17. linux vim 编辑 保存 退出
  18. ubuntu系统下THETA S 全景相机 通过ROS导出图像
  19. 快速学完计算机网络,如何让电脑网速变快 5分钟就学会
  20. 狂刷OJ基础题两天,OJ机考成功半小时全部AC了

热门文章

  1. [转载] python-TypeError: Object of type ‘Decimal‘ is not JSON serializable 报错
  2. `ll/sc` 指令在`linux`中的软件实现
  3. python3+xlrd解析Excel
  4. Java + selenium 元素定位(3)之By TagName
  5. django部署到linux上不显示.svg图标处理方法
  6. loadrunner提高篇 - 关联技术的经典使用
  7. 每天一个linux命令(60):scp命令
  8. 《Python核心编程》第二版第308页第十一章练习 续一 -Python核心编程答案-自己做的-...
  9. 样式定义Android界面样式
  10. 用FileOutputStream将内容写入到文本