4

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

您在什么情况下选择使用状态机,以及在时间和复杂性方面减少了哪种类型的痛苦?

4

3 回答 3

5

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

于 2010-02-02T12:09:51.270 回答
4

状态机工作流旨在在没有通过工作流完成的预定义步骤时使用。查看此定义(来自Windows Workflow Foundation 中的状态机工作流

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

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

于 2010-02-02T12:10:26.603 回答
3

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

被建模的流程驱动该方法,您将状态机用于具有多个状态的流程,其中工作单元可以存在并且在这些状态中存在潜在的非线性进展。如果存在明显的线性过程,并且没有明显的回溯,则将使用线性工作流程(或顺序工作流程)。

于 2010-02-02T12:12:17.033 回答