贵州新闻网LOGO 首页 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都可以
以上的各种组合的例子都写过,这里也就不再提供了   织
相关链接
最新信息
  • 技术评审方法与指南
  • 嵌入式操作系统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 部分: 理解面向服务的体系结构
  • 推荐资讯
    贵阳分类信息 | 关于本站| 下载歌曲| 版权声明 | 网站地图 | 信息反馈 | 申请友情链接 | rss订阅
    版权所有 2006-2007 ( sortol.comQ我 E-mail:notrynogain#163.com 
     最佳分辨率 1024×768 黔ICP备07500009号