今天在网上看了这篇关于 WF 在实际项目中应用的实例,感觉有一定的意义,特别在此转载一下。如
果有可能实现,到时候再与大家好好分享一下。![](https://www.cnblogs.com/Emoticons/QQ/42.gif)
果有可能实现,到时候再与大家好好分享一下。
![](https://www.cnblogs.com/Emoticons/QQ/42.gif)
这个例子在我们的项目中已经实际应用,所以我想叫做实例应该没什么问题。这是一个经典的设备申 请审批流程,大家很多时候已经用其他的办法实现过了。本实例包括三个工程:EquipmentApply(设备申请 exe)、EquipmentApprove(设备审批exe)、EquipmentApplyWorkflowLib(申请审批流程库dll)。首先新建 Windows应用程序项目EquipmentApply,界面如图所示: |
![]() |
添加Windows应用程序项目EquipmentApprove,界面如图所示: |
![]() |
添加Workflow中的Sequential Workflow Library项目EquipmentApplyWorkflowLib,建立流程图: |
![]() |
该流程包括三个外部方法 Activities(CreateApply、ApproveApply、EscalateApply)和两个外部事件 Activities(EquipmentApprove、ApplyEscalated),一个 ListenActivity 用于等待外部事件来重新唤起流 程。这里头有几个关键的技术点: |
1、怎么传递流程参数?启动流程实例时把参数装载到Dictionary中作为CreateWorkflow方法的参数传递: |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
2、 怎么持久化流程?需要在初始化流程运行时的时候增加增加其久化服务: |
![]() ![]() ![]() ![]() ![]() wr.WorkflowIdled += new EventHandler<WorkflowEventArgs>(wr_WorkflowIdled);
下面的代码表示在流程空闲时持久化(事实上是保存到数据库,也可以包括到文件,你也可以随时持久化流程)。 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
3、怎么增加自定义的服务?需要增加服务接口和参数类: |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() // Add the external data service
ExternalDataExchangeService dataService = new ExternalDataExchangeService(); wr.AddService(dataService); // Add custom EquipmentApply service theApplyService = new EquipmentApplyService(); dataService.AddService(theApplyService); |
原文地址:http://blog.csdn.net/artlife/archive/2007/01/09/1477719.aspx 。 |