文档详情

简单C_工作流的实现.doc

发布:2017-01-18约1.4万字共30页下载文档
文本预览下载声明
简单C_工作流的实现 一个简单C#工作流的实现 一个简单C#工作流的实现 一一个个简简单单CC##工工作作流流的的实实现现 WorkFlow2010-04-2310:06:33 阅读316 评论0 字号:大中小 最近一直在做一个小项目,这个项目是高等学校岗位聘用审核系统,该系统涉及到多个部 门审批,同时还要求管理员能对审核部门进行管理,编辑、添加和删除等。在了解到这些系 统需要后,我首先想到利用微软sharepoint2007来开发,毕竟微软的工作流引擎已经非常 成熟了,而且让人有种站在巨人肩膀的感觉(HoHo)。经过一段时间对sharepoint2007的 学习,这套系统实在是太大了,而早几个月前这套系统在国内几乎没有一本成形的开发书籍, 只有系统管理类书籍,常因为一个问题而耽误好几天,整个开发就这样停滞了,后来仔细想 想其实我所开发的系统需要的工作流只是最简单工作流应用,因此也就有了自己设计一个小 型工作流的想法,成就了本文,希望对大家有帮助。 我设计的这个小型工作流只具有“运行先后”这个概念,没有其它判断条件,前一批工作 流活动完成,后一批工作流活动开始。因为工作流类(Workflow)的结构非常简单: classWorkflow() { privateint_id; //工作流活动ID privatestring_name; //工作流活动名称 privatestring_url; //工作流活动相应的网页 privateint_seq; //运行顺序 privateint_statusBit; //状态位 } 工作流活动ID不用解释了,工作流活动名称可是任何字符,这样是为了更好区分工作 流活动。url的设计是由INFOPATH联想到的,微软sharepoint2007可以通过为每个工作流 活动指定相应的编辑表单,可以是网页也可以infopath设计的表单,这样的好处是让工作 流的不同活动具有不同的用户界面,sharepoint2007可以在feature.xml里设置,而我这就 使用url字段记录一个网页链接,不同工作流活动对应不同的网页。seq是每个工作流运行 的顺序,从零开始,依次为0、1、2、3,这个字段正是为了设置工作流的运行顺序,并 行的工作流活动可以设置成相同的运行顺序。可能有人会问怎么标识工作流活动已经完成 呢,这个标识正是由statusBit状态位来实现的,每个申请表中都含有一个status字段,这 个字段默认为50个‘0’组成的字符串,status字段是为了记录当前申请表哪些工作流活动完 成了,1为完成0为未完成,statusBit状态位正是将工作流活动与申请表中的状态联系起来, 也许有些朋友会认为让系统自动分配好更好,第一个工作流活动联系第一位状态,第二个工 作流活动联系第二位状态,等等。我这么做的好处是考虑到可能会有多个工作流活动只需完 成其中一个活动就情况,就像逻辑判断中的“或”一样,在这种情况我们只需将多个工作流活 动状态位设置成一样就可以达到目的了。 光说而没有实例可能有些朋友不太明白,下面我以项目中工作流流程为例: 本系统的流程是这样的(不好意思,linux下画的图效果没visio好): 由流程图得出各工作流实例如下: ID NAME URL SEQ STATUSBIT 1 申请人提交申请表 user_main.aspx 0 1 2 各部门审查 depart_check.aspx 1 2 3 科技处审查 check_main.aspx 2 3 4 教务处审查 check_main.aspx 2 4 5 研究生院审查 check_main.aspx 2 5 6 人事科审查
显示全部
相似文档