1 前言 什么是Spring Statemachine
有限状态机,简称状态机(FSM),是一种对有限个状态,以及这些状态之间的流转和动作等行为的数据建模。
使用 FSM 模型,可以有助于这些状态的顺序、导致这种状态变化的事件进行管理,主要用于将状态和时间的控制权从不同业务的 services 方法中的 if else 逻辑中抽离出来,进行统一的管理和配置。对于有复杂的状态流,扩展性要求比较高的场景都可以使用该模型。
面是状态机模型中的4个要素,即现态、条件、动作、次态。
- 现态:是指当前所处的状态。
- 事件:又称为“条件”。当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。
- 动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。
- 次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。
2 使用 spring Statemachine 的好处
2.1 什么时候使用spring statemachine
在做软件项目的时候,我们会以各种各样的角度看一个项目,比如OOP,万物皆对象,一个订单就是一个对象,所谓的状态变化,无非就是订单这个对象的变量在不停的变化,变化的过程就是对象的方法;再比如数据库,万物无非CRUD的组合,订单不过就是增删改查,数据库原子操作的组合罢了。这些角度对吗?可以说都对,因为用这些角度都