为长时间运行的流程设计FSM的最佳实践

时间:2012-09-18 00:43:14

标签: c# fsm

我主要是一名c#开发人员,正在为一系列长时间运行的流程设计有限状态机寻找一些指导(理论和/或代码示例)。定义的每个操作可以运行几分钟。我只是使用Windows任务计划程序来管理计划和实例化。

以下是我正在看的内容的简要概述。到目前为止,我已经使用Stateless构建了Op Status FSM。现在,我正在尝试找出处理操作顺序的最佳方法,其中包含一些条件,例如第3项显示。这些条件基于Op2产生的数据。

到目前为止我考虑的选项:

  • 为操作序列创建一个FSM(看起来过于复杂,但也许我在某处遗漏了一个基础)
  • 为每个操作创建一个操作管理器,让每个经理担心它感兴趣的状态以及下一个状态应该是什么

操作 - >下一步的顺序操作

  1. 无 - > Op1
  2. Op1 - > Op2
  3. Op2 - > Op3或Op4有条件
  4. Op3 - > Op4
  5. Op4 - > Op5
  6. Op5 - >无
  7. OP状态

    • 空闲
      • 触发器:预定 - >未决
      • 约束:必须设置操作
      • 触发器:运行 - >运行
    • 运行
      • 触发器:失败 - >错误
      • 触发:成功 - >空闲
      • 触发器:NotReady - >未决
    • 错误
      • 触发:重试 - >未决
      • 触发:取消 - >空闲(删除指定的操作)

1 个答案:

答案 0 :(得分:1)

这听起来像是Windows Workflow Foundation的特定用例。它提供了处理此类场景所需的所有管道,包括保持工作流,重新启动等功能。