squirrel-foundation状态机

简介

有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。
在电商场景(订单、物流、售后)、社交(IM消息投递)、分布式集群管理(分布式计算平台任务编排)等场景都有大规模的使用。
复制代码

状态机的要素

状态机可归纳为4个要素,即现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。
复制代码
  • 现态:是指当前所处的状态。
  • 条件:又称为事件。当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。
  • 动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。
  • 次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。

状态机动作类型

  • 进入动作:在进入状态时进行
  • 退出动作:在退出状态时进行
  • 输入动作:依赖于当前状态和输入条件进行
  • 转移动作:在进行特定转移时进行

为什么使用状态机

有限状态机是一种对象行为建模工具,适用对象有一个明确并且复杂的生命流(一般而言三个以上状态),并且在状态变迁存在不同的触发条件以及处理行为。
复制代码

核心模型

  • StateMachineBuilderFactory:StateMachineBuilder工厂类,负责解析状态定义,根据状态定义创建对应的StateMachineBuilder
  • StateMachineBuilder:StateMachine构造器,可复用构造器,所有状态机由生成器创建,相同的状态机实例共享相同的状态定义
  • StateMachine:状态机实例,通过StateMachineBuilder创建,轻量级内存实例,不可共享
  • Condition:squirrel支持动态的transition
  • StateMachineListener:全局事件监听

核心实现

squirrel的事件执行器的作用点粒度更细,通过预处理,将一个状态迁移分解成exit、trasition、entry这三个action event,再递交给执行器分别执行
复制代码

事件处理过程

  • 状态正常迁移 TransitionBegin–(exit->transition->entry)–>TransitionComplete–>TransitionEnd
  • 状态迁移异常 TransitionBegin–(exit->transition->entry)–>TransitionException–>TransitionEnd
  • 状态迁移事件拒绝 TransitionBegin–>TransitionDeclined–>TransitionEnd
<dependency>
    <groupId>org.squirrelframework</groupId>
    <artifactId>squirrel-foundation</artifactId>
    <version>0.3.8</version>
</dependency>
复制代码

转载于:https://juejin.im/post/5c7754ab6fb9a049d51a2ed5

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值