我主要是 ac# 开发人员,正在寻找一些关于为一系列长时间运行的进程设计有限状态机的指导(理论和/或代码示例)。定义的每个操作都可以运行几分钟。我只是使用 Windows 任务计划程序来管理计划和实例化。
下面是我正在查看的内容的简化大纲。到目前为止,我已经使用 Stateless 构建了 Op Status FSM。现在,我正在尝试找出处理操作顺序的最佳方法,其中包含一些条件,例如项目#3 所示。这些条件基于 Op2 产生的数据。
到目前为止我考虑过的选项:
- 为操作序列创建一个 FSM(似乎过于复杂,但也许我在某处缺少基本知识)
- 为每个操作创建一个操作管理器,让每个管理器担心它感兴趣的状态以及下一个状态应该是什么
操作 -> 按顺序执行下一个操作
- 无 -> Op1
- 操作 1 -> 操作 2
- Op2 -> Op3 或 Op4 有条件
- 操作 3 -> 操作 4
- 操作 4 -> 操作 5
- Op5 -> 无
操作状态
- 闲
- 触发器:计划 -> 待定
- 约束:必须设置操作
- 待办的
- 触发器:运行 -> 运行
- 跑步
- 触发器:失败 -> 错误
- 触发器:成功 -> 空闲
- 触发器:未就绪 -> 待处理
- 错误
- 触发器:重试 -> 待处理
- 触发器:取消 -> 空闲(删除分配的操作)