EntLib.com 专业电子商务平台

基于Microsoft .Net Framework / ASP.Net / C# / AJAX 平台构建的标准电子商务系统
随笔 - 99, 评论 - 74, 引用 - 0

WF 状态机工作流构建订单处理流程-范例程序分析 Part 1

WF 状态机工作流构建订单处理流程-范例程序分析 Part 1
 
状态机工作流(State Machine Workflow)是以状态的变化为驱动而进行业务流转的,且一定需要人为的干预,而不像顺序类型工作流(Sequential Workflow)那样按照事先设计好的业务流程一步一步依次执行下去。本范例程序由http://forum.entlib.com 开源ASP.NET/C# 论坛小组提供。
 
State活动有3种类型的状态:起始状态(Initial State)、业务逻辑过程状态、终止状态(Completed State),在一个状态机工作流中起始状态和终止状态只能有一个。状态机工作流是从起始状态开始执行,在运行过程中通过业务逻辑状态的变化来进行工作流的流转,最终由终止状态标志工作流的结束。因此在状态机工作流设计界面上只能添加 State 状态活动,另外,在该状态中还可以添加一个或多个EventDriven 活动。下面通过一个订单处理流程的范例,详细介绍状态机工作流的使用。
 
下图简要描述了订单处理流程,你会发现许多地方需要用户参与或输入,来改变工作流。例如,财务部门依赖于支付情况来改变工作流,采购部门依赖于库存情况来改变工作流等等。
 
 
 
按照下面具体的操作步骤,一步一步实现上述状态机工作流演示程序。
 
1. 创建接口程序
由于状态机工作流中大量使用HandleExternalEvent 活动来接收应用程序的操作事件,从而改进该工作流上运行的业务实体的状态,因此需要定义一个接口程序作为工作流和应用程序之间沟通的桥梁。本范例程序中将通过接口中的7个事件来模拟状态机工作流的触发,接口IOrder.cs 如下所示。需要注意的是:我们引用System.Workflow.Activities,并且接口添加了[ExternalDataExchange]属性。
 
 
2. 创建Class Library项目,并添加State Machine Workflow(状态机工作流)文件。如下图所示。
 
 
在添加State Machine Workflow文件后,Workflow设计器自动打开。工作流的每一个State都有事件,因此在State Activity 添加EventDriven组件。
 
 
在事件Event触发后,State状态进入下一个状态。因此,双击EventDriven组件,添加HandleExternalEvent组件和SetState组件,其中HandleExternalEvent定义监听的事件,SetState定义将进入的下一个状态。
 


 
按照上面的步骤,重复创建OrderPlaced、OrderApproved、OrderPending、OrderDelivered、OrderCancelled状态,并添加相应的EventDriven组件,最终实现的状态机工作流如下所示:
  
 

 

 打印 | 评论 (7) | posted on 2009年3月23日 1:32 | 目录 [ Workflow (WF) ]

评 论

# re: WF 状态机工作流构建订单处理流程-范例程序分析 Part 1

可以提供源码下载么?想学习一下
2009/4/29 19:03 | imaxis

# re: WF 状态机工作流构建订单处理流程-范例程序分析 Part 1

没问题!不过,需要等几天,5.1之后会提供源代码下载。
2009/4/29 20:22 | entlibforum

# re: WF 状态机工作流构建订单处理流程-范例程序分析 Part 1

太感谢了
2009/4/30 8:32 | imaxis

# re: WF 状态机工作流构建订单处理流程-范例程序分析 Part 1

很不错,可是什么时候能共享源码啊~~已经六一啦 !呵呵
2009/6/2 9:25 | WILLIAM

# re: WF 状态机工作流构建订单处理流程-范例程序分析 Part 1

对不起,忙起来就忘记这事了。

本周末过来下载吧!
2009/6/2 13:16 | entlib

# re: WF 状态机工作流构建订单处理流程-范例程序分析 Part 1

下载上述范例程序:

WF 状态机工作流构建订单处理流程-范例程序分析 Part 2
blog.entlib.com/.../wf-part-2.aspx
2009/6/2 19:48 | entlib

# re: WF 状态机工作流构建订单处理流程-范例程序分析 Part 1

太感谢了
2010/7/26 15:33 | ghd

发表评论

标题  
姓名  
Email
主页
评论内容   
Please add 3 and 3 and type the answer here: