Spring StateMachine基础版-学习笔记

介绍

Spring Statemachine(SSM)是一个框架,供应用程序开发人员在Spring应用程序中使用传统的状态机概念。SSM旨在提供以下功能:

  • 易于使用的单层状态机,用于简单的用例。
  • 分层状态机结构可简化复杂的状态配置。
  • 状态机区域提供甚至更复杂的状态配置。
  • 触发器,过渡,防护和操作的使用。
  • 键入安全配置适配器。
  • 状态机事件监听器。
  • Spring IOC集成,将Bean与状态机关联。

状态机之所以强大,是因为始终保证行为是一致的,因此调试起来相对容易。这是因为在启动机器时,操作规则是一成不变的。想法是,您的应用程序可能以有限数量的状态存在,并且某些预定义的触发器可以将您的应用程序从一种状态转移到另一种状态。这样的触发器可以基于事件或计时器。在应用程序外部定义高级逻辑,然后依靠状态机来管理状态要容易得多。您可以通过发送事件,侦听更改或仅请求当前状态来与状态机进行交互。

基础概念

先从状态机的定义入手,StateMachine,其中:

    • StateMachine:状态机模型
    • state:S-状态,一般定义为一个枚举类,如创建、待风控审核、待支付等状态
    • event:E-事件,同样定义成一个枚举类,如订单创建、订单审核、支付等,代表一个动作。
      一个状态机的定义就由这两个主要的元素组成,状态及对对应的事件(动作)
状态机-相关概念
  • Transition: 节点,是组成状态机引擎的核心
  • source:节点的当前状态
  • target:节点的目标状态
  • event:触发节点从当前状态到目标状态的动作
  • guard:起校验功能,一般用于校验是否可以执行后续action
  • action:用于实现当前节点对应的业务逻辑处理
  • withChoice 当执行一个动作,可能导致多种结果时,可以选择使用choice+guard来跳转
  • withInternal 我们支持三种不同类型的转换external, internallocal。转换是通过信号触发的,该信号是发送到状态机的事件或计时器。
@Configuration
@EnableStateMachine
public class Config1Enums extends EnumStateMachineConfigurerAdapter<States, Events> {

    @Override
    public void configure(StateMachineStateConfigurer<States, Events> states)
            throws Exception {
        states
            .withStates()
                .initial(States.S1) // 自定义初始状态枚举
                .end(States.SF) //最终状态枚举。可以多个
          .choice(States.SC)//一个伪状态,表示1:N子状态
          .states(EnumSet.allOf(States.class));
    }
}  
  Spring stateMachine 提供了很多更加复杂状态扭转方式,可以查看官网:https://docs.spring.io/spring-statemachine/docs/2.0.2.RELEASE/reference/htmlsingle/#glossary

框架搭建

1.POM

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-in
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值