网站大量收购独家精品文档,联系QQ:2885784924

工作流原理.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
工作流原理

工作流(Workflow Foundation)从它一诞生就褒贬不一。至少它确实目前看起来还是比较难用。在.NET 3.5以及之前的版本中,为了实现工作流,我们还是需要编写相当多的代码。?WF给我们带来的主要有几点是值得了解的1. 通过可视化的界面将流程设计与程序逻辑分离开来。流程设计的可以只管流程,他们不要知道怎么做。流程设计的人员可能(或者一定)不会用Visual Studio,他们可以使用一些简单的设计器工具。例如下面的这个小例子就是一个独立的程序,上面包装了WF的设计器。结合自定义Activity的设计,可以将业务逻辑隐藏起来。?2.业务逻辑的数据还是需要我们自己设计数据库保存以及维护的这是很多人疑惑的,他们觉得既然有Workflow Foundation,就万事大吉了。因为工作流实例确实也有数据,而且我们可以持久化将其保存起来嘛。停!这不是一个正确的想法。工作流的持久化服务顾名思义,其实主要是为了给我们维护长时间工作的流程信息的(可以在空闲的时候卸载,保存到数据库等)。大家应该这样理解,Workflow Foundation只是管流程的部分,它不管数据。没错,它只管流程。这有什么问题么,它管好这个就够了,而且确实能帮很大的忙,不是吗?这样,我们就可以将注意力放在业务数据的管理,而不是流程状态的管理之类。?3. 一般一套工作流的解决方案需要包含哪些组件请注意上面选中的项目,我来解释一下3.1 WorkflowLibrary这个项目包含了工作流设计,它是可视化设计的成果。下图是一个典型的审批流程3.2 OrderApprovalEventType这个项目包含了工作流设计时可能会用到的一些接口和事件定义。为什么需要用事件呢?一般我们的流程如果需要等待用户干预,诸如审批之类的情况,就需要这样做,因为它可能不是立即发生的。注意,接口要标记为ExternalDataExchange,事件参数需要继承ExternalDataEventArgs,而且必须可序列化?3.3 Contracts 这个项目是标准的WCF合约定义,因为我们是分了服务器和客户端的,他们之间通过WCF通讯,包括创建流程,以及激发事件等等3.4 Services,这就是具体实现的WCF服务,在这里可以启动工作流运行时,并且按照客户端指令做相应的事情。这里的代码是相当多的。using System;usingSystem.Collections.Generic;usingSystem.Linq;using Contracts;usingSystem.ServiceModel;usingSystem.Workflow.Runtime;usingOrderApprovalEventType;usingSystem.Workflow.Activities;usingSystem.Workflow.Runtime.Hosting;usingSystem.Workflow.Runtime.Tracking;namespace Services{ [ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]//只有一个实例publicclassOrderService:IOrderService {//运行时privateWorkflowRuntime runtime = null;//所有实例private ListWorkflowIntanceData instances = new ListWorkflowIntanceData();//本地服务LocalService local = null;publicOrderService() { runtime = newWorkflowRuntime();//添加数据交换服务,可以激发事件ExternalDataExchangeServicesvr = newExternalDataExchangeService();runtime.AddService(svr); local = newLocalService();svr.AddService(local);//添加持久化服务,保存实例//F:\Windows\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\zh-CHS这里会有脚本var db = server=(local);database=WorkflowFoundation;integrated security=true;SqlWorkflowPersistenceServicesqlsvc = newSqlWor

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档