代码之家  ›  专栏  ›  技术社区  ›  David Robbins

你什么时候喜欢使用状态机而不是线性工作流程?

  •  4
  • David Robbins  · 技术社区  · 16 年前

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

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

    3 回复  |  直到 16 年前
        1
  •  5
  •   Thomas    16 年前

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

        2
  •  4
  •   Rubens Farias    16 年前

    状态机工作流旨在在工作流完成过程中没有预定义步骤时使用。看看这个定义(从 State Machine Workflows in Windows Workflow Foundation )

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

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

        3
  •  3
  •   Lazarus    16 年前

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

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

    推荐文章