同步两个状态机

art*_*emb 5 design-patterns state-machine

说,我正在构建业务流程管理应用程序.它具有以下实体:问题和任务,彼此相关,作为许多任务的1个问题.任务和问题都有自己的状态,一个状态可能会影响另一个状态.

例如,它们都具有"已取消"和"已完成"状态.当我将问题的状态更改为"已取消"时,其所有任务都应变为"已取消".当我将所有任务的状态更改为"已完成"时,问题应自动变为"已完成".

假设两个实体都存在相当多的状态,并且从一个状态到另一个状态的转换逻辑以及状态的依赖性可能会发生变化,是否有任何设计模式和/或最佳实践来处理这种情况?

Ste*_*owe 2

跳入脑海的设计模式是“规则”;-)

或者,如果您愿意,也可以使用命令模式

换句话说,对于这样的情况,我将创建一个数据库表,列出状态和可接受的转换,并将操作与每个转换相关联(使用反射)

我发现这对于处理转换操作比仅更新状态以匹配更复杂的情况很有用。

例如,在一个系统中,我们有一个工作流程,其中请求文档必须经过多个委员会审查站,每个审查站都可以拒绝该文档或将其传递到下一阶段,以及自定义副作用处理。委员会的组织、处理结构和处理行为在开发过程中发生了 3 次重大变化,在部署的第一年又发生了 5 次重大变化。