2010-02-02 38 views
4

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

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

回答

4

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

4

当没有通过工作流程完成的预定义步骤时,应使用状态机工作流程。看看这个定义(从State Machine Workflows in Windows Workflow Foundation

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

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

+0

+1。是的我同意。我可能需要重申我的问题,就像线性工作流程那样,在做出复杂决策时可能会有很多步骤。我的想法是,状态机降低了这种复杂性。 – 2010-02-02 12:53:08

+0

根据以上报价,我有一个问题,对于一个特定的情况:金融(股票)交易。一个人想要交易一只股票,并根据统计的实际时间(价格),会做出几个决定。但是,这些决策被列为清晰的A或B或C.状态机工作流程如何适合这一点?顺序适合这种情况如何? – 2014-10-21 06:53:06

+0

@VuNguyen,认为那是条件。在顺序工作流程中,您将有一个基于某个值并执行操作的决策节点;在状态机工作流程中,您将选择基于相同值的转换。如果您需要更多信息,请提出一个新问题。 – 2014-10-21 10:29:32

3

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

正在建模的进程驱动方法,您使用状态机进行具有许多状态的进程,其中工作单元可以存在,并且通过状态存在潜在的非线性进程。在存在明显线性的过程的情况下,将不使用重要的回溯,而使用线性工作流程(或顺序工作流程)。

相关问题