背景:鉴于高度定制化工作流的需求,用 activiti 有一定局限性,最近在调研 spring-statemachine 能否满足业务需求。
问题:我理解状态机作为系统里的三方组件,应该是至少需要提供流程开始、事件处理、查询当前状态、查询历史状态的接口的,目前在文档里找到了 history 的伪状态,感觉跟我理解的历史状态不一样,而且配置了 history 状态测试的时候将状态机持久化到 redis 一直报错。
疑问:难道需要单独建一张表用来保存历史状态?那跟业务不是耦合的很严重吗。我只想把状态机作为一个公共组件实现流程流转,能在不写额外代码和建表的情况下查到当前状态和历史状态。。。
1
hantsy 2021-03-30 11:29:58 +08:00
Spring StateMachine 状态存储的实现有多种(我觉得自己实现一种存储不难), 官方有一种用法与 ZK 结合实现微服务 Saga 模式的。
另外 Camunda 是目前比较流行基于云的工作流引擎,除了支持标准 BPEL,一个主要应用就是实现微服务 Saga,用工作来定义 Compensation 机制。 |
2
zhenjiachen 2021-03-30 23:38:52 +08:00 via iPhone
我之前也准备在项目里面集成,就几个状态发现还不如 if 。如果楼主成功可以写个教程出来
|
3
tedzhou1221 2021-03-31 08:40:13 +08:00 via iPhone
#1 提到 Camunda, Camunda 还有 zeebe
|