该如何选择,顺序工作流(Sequential Workflow)还是状态机器工作流(State Machine Workflow)

简介:
.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, 节省成本,提高开发效率。有的时候,我们甚至要同时使用到两种工作流,一切都是为了满足现实的需求。



本文转自 xhinkerx 51CTO博客,原文链接:http://blog.51cto.com/xhinker/182092,如需转载请自行联系原作者
目录
相关文章
|
11月前
68 Azkaban Command类型多job工作流flow
68 Azkaban Command类型多job工作流flow
48 0
|
2月前
【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢?
【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢?
|
2月前
【Azure Standard Logic App】Workflow积压非常严重的情况下, 执行实例居然不能自动缩放的原因?
【Azure Standard Logic App】Workflow积压非常严重的情况下, 执行实例居然不能自动缩放的原因?
SAP MM VL34事务代码批量创建Inbound Delivery
SAP MM VL34事务代码批量创建Inbound Delivery
SAP MM VL34事务代码批量创建Inbound Delivery
SAP C4C工作流(Workflow)接收方自动决定的一个例子
SAP C4C工作流(Workflow)接收方自动决定的一个例子
SAP C4C工作流(Workflow)接收方自动决定的一个例子