您何时喜欢使用状态机而不是线性工作流程

时间:2010-02-02 12:04:59

标签: workflow-foundation complexity-theory state-machine

当工作流必须“响应”用户提供的答案时,状态机可以在存在多个循环和分支或逻辑时降低工作流的复杂性。这将是一个事件驱动的工作流程。

在什么情况下你选择使用状态机,在时间和复杂性方面减少了什么类型的疼痛?

3 个答案:

答案 0 :(得分:5)

状态机非常适合事件驱动的代码。如果您的代码被调用作为对某个事件的响应,则不能使用循环和分支。您将不得不使用状态机,将事件提供给它以更改状态,并让事件处理程序根据机器的当前状态做出反应。

答案 1 :(得分:4)

当工作流程完成时没有预定义步骤时,将使用状态机工作流程。看一下这个定义(来自State Machine Workflows in Windows Workflow Foundation

  

工作流是一个定义的过程,由实现所需行为的几个步骤组成。基本上有两种工作流程:顺序工作流程和状态机工作流程。在顺序工作流中,工作流本身所做的所有决策都由工作流本身完成。有一个明确定义的开始和明确定义的结束。在这之间有一个由分支和循环组成的流动来引导流动。这意味着工作流程处于控制之中。

     

使用状态机工作流程,没有真正的预定义路径来执行特定解决方案的所有步骤。国家机器采取另一种方法。他们等待事件发生,并根据这些事件改变他们的状态。当决策从外部应用程序进入并且不可预测时,将使用状态机。因此,特别是当需要用户交互时,状态机是一种更方便的解决方案。

答案 2 :(得分:3)

状态机和线性工作流是完全不同的问题空间,在应用程序开发方面是无关的。

正在建模的过程驱动方法,您使用状态机进行一个过程,该过程具有多个状态,其中工作单元可以存在,并且可能存在状态的非线性进展。如果存在明显线性的过程,那么没有明显的回溯过程就会使用线性工作流程(或顺序工作流程)。