.Net framework 的 Windows Workflow Foundation 有两种工作流,一种是Sequential workflow 一种是State machine 工作流,在实际开发中我该如何做出选择呢?
 
一般来说Sequential Workflow 用于流程已定的情况。什么是流程已定,这是说工作流的流向大体上不取决于外部的决定,比如贷款审批,流程基本上确定,并且其分支和循环也是规定好了的。又如文档审批,假期审批等都比较适合用Sequential Workflow.  一般Sequential Workflow 是不可逆的。除了循环Activity 外,一般一个Activity 执行完毕后便不再被执行。
State Machine 工作流则一般用于 方向不明确的事情当中,一件事完成(state activity)面临着很多不同的选择,并且,这个选择要依赖于人的决定(事件驱动)。State machine 往往是可逆的。一个状态(State Activity)有可能要被多次的执行。比如在线购物便可以看成一个state machine workflow. 工作流的进行往往有赖于外部事件(比如人)的推动。 再有,如看电视,可以开电视,可以关电视,可以随便转台,也可以专注看某个节目,状态与状态间并没有一个必然的顺序关系。如此,我们便可以使用state machine workflow.

一个流程很多时候 用Sequential Workflow 可以,用State Machine Workflow 也可以,但是正确的选择往往能更有效的使用WF, 节省成本,提高开发效率。有的时候,我们甚至要同时使用到两种工作流,一切都是为了满足现实的需求。