![]() |
首页 | asp.net | HTML教程 | C#教程 | SQLSever | CSS教程 | javascript | 软件开发 | 项目管理 |
|
|
WF 表决的例子
来源:sortol 作者:sortol.com 发布时间:
WF 表决的例子
WF 表决的例子
2007-12-19 作者:onlyzhangqin 来源:CSDN 先看一下基本流程的草图 说一下用WF的实现思路 1.设计[表决人发表意见]的Activity,这是一个通知,回复的过程,所以用一个组CallExternalMethod与HandleExternalEvent实现通知与等待回复 2.由于参与人数是不特定的,但所有参与人的参与流程是一样的,所在使用一个ReplicatorActivity容器创建[表决人发表意见]的Activity多个复本 3.表决是并发的,所以ReplicatorActivity容器应设为并发 4.由于存在多个[表决人发表意见]的Activity的HandleExternalEvent同时等待,这样新需要使用CorrelationToken关联CallExternalMethod与HandleExternalEvent 5.由于参与人数不确定,ReplicatorActivit的InitialChildData集合需要在启动流程时由用户定义户后传入 数据项类 public class DataItem { public DataItem(string partakeName) { this.PartakeName = partakeName; } public string PartakeName; public string Result; } allExternalMethod与HandleExternalEvent绑定类 使用 System.Workflow.Activities.CorrelationParameter System.Workflow.Activities.CorrelationInitializer System.Workflow.Activities.CorrelationAlias 为CallExternalMethod与HandleExternalEvent实现关联 //接口 [System.Workflow.Activities.ExternalDataExchange] [System.Workflow.Activities.CorrelationParameter("PartakeName")] public interface IExternalEvent { [System.Workflow.Activities.CorrelationInitializer] void CreateBallot(string PartakeName, object value); //关联参数 //对应到事件的属性 [System.Workflow.Activities.CorrelationAlias("PartakeName", "e.PartakeName")] event EventHandler<EventArgs> WxdEvent; } //事件参数 [Serializable] public class EventArgs : System.Workflow.Activities.ExternalDataEventArgs { public string Result; private string _PartakeName; public string PartakeName { get { return _PartakeName; } set { _PartakeName = value; } } public EventArgs(Guid instanceId, string PartakeName) : base(instanceId) { _PartakeName = PartakeName; } } //接口实现类 public class WxdExternalEvent : IExternalEvent { //实现接口事件 public event EventHandler<EventArgs> WxdEvent; //实现接口方法 public void CreateBallot(string PartakeName, object value) { System.Console.WriteLine("通知{0}参与表决" , PartakeName); } //触发事件 public void OnWxdEvent(Guid instanceId, string PartakeName, string Result) { EventArgs e = new EventArgs(instanceId, PartakeName); e.Result = Result; WxdEvent(null, e); } } 自定义投票Activity 工作流设计 引警 代码下载 http://www.cnblogs.com/Files/foundation/WorkflowLibrary3.rar 补充一下 以上例子是为了演示ReplicatorActivity的使用,以及使用CorrelationToken关联CallExternalMethod与HandleExternalEvent。 在实际应用中[表决人发表意见]的Activity可以做如下设计 如果参与人没有在指定的事间内进行表决,系统将按超时处理,这样可以避免某个用户不表决,使整个流程一直处于挂起状态。在实例应用中,delay通常不直接用作业务结点,而是独立的实现一个时间引擎,这样处理工作日、节假日、申请延期处理等方面比效灵活 还有,如果可以不需要所有的参与人都完成表决流程才继续向下运行,可以加入规则判断,当同意或不同意的达到一定票数后新直接显示结果,当然这要看实际的业务是否有这种要求 添加上述功能比效简单,这里就不提供代码了 测试通过后,将引擎与客户端分别封装,引擎可以选择Win服务,COM+,IIS的Application作为宿主 客户端可以选择WinForm、WEB 当然还要选择一种通信方式,WebService、Remoting、WCF、TCP都可以 以上的各种组合的例子都写过,这里也就不再提供了 织 相关链接 上一篇:流程发送动作 下一篇:层次分析法(AHP) |
技术评审方法与指南 嵌入式操作系统Nucleus下触摸屏驱动的开发 嵌入式数据库SQLite在电梯B/S监控中的应用 如何安装使用IBM Rational RequisiteWeb 通过自动化工具的实施提高你的CMM水平 ASP.NET系统用户权限设计与实现 项目集成计划 软件项目常见风险及其预防措施 配置管理变更的关键路径 UML 对象模型图阅读指南 UML 2.0修成正果 “适用性”是最重要的需求 SaaS将成中小企业信息化趋势 层次分析法(AHP) WF 表决的例子 流程发送动作 企业架构观点:什么最适合您的组织? 从城市建设看SOA 企业信息化规划调研问卷 最先进的技术:Windows Workflow Foundation最新信息
技术评审方法与指南 嵌入式操作系统Nucleus下触摸屏驱动的开发 嵌入式数据库SQLite在电梯B/S监控中的应用 如何安装使用IBM Rational RequisiteWeb 通过自动化工具的实施提高你的CMM水平 ASP.NET系统用户权限设计与实现 项目集成计划 软件项目常见风险及其预防措施 配置管理变更的关键路径 UML 对象模型图阅读指南 UML 2.0修成正果 “适用性”是最重要的需求 SaaS将成中小企业信息化趋势 层次分析法(AHP) WF 表决的例子 流程发送动作 企业架构观点:什么最适合您的组织? 从城市建设看SOA 企业信息化规划调研问卷 最先进的技术:Windows Workflow Foundation 软件系统设计层次与内容 从瀑布模型、极限编程到敏捷开发 嵌入式系统中入侵检测的设计与实现 CMMI四级量化项目管理QPM-特定目标SG1 故障树分析法 项目管理 信息系统监理为什么要做好变更控制? 软件工程-软件目的需求开发与管理 测试驱动需求分析--需求文档评审实例 体系结构实践,第 1 部分: 理解面向服务的体系结构推荐资讯
|
贵阳分类信息 |
关于本站|
下载歌曲|
版权声明 |
网站地图 |
信息反馈 |
申请友情链接 |
|
| 版权所有 2006-2007 (
sortol.com)
最佳分辨率 1024×768 黔ICP备07500009号 |