探索中国CIO人才现状 | 第四季调研报告
ASP.NET环境下的网上审批流程的设计及实现
2014-03-04  作者:万方数据 

  0引言


  以前申报审批是通过工作人员现场手工审批相关项目,这种方法不仅不方便,而且等待的时间过长。采用网上审批系统,申请者能够随时快速的通过网络提交申请材料,在审批过程中申请者通过网络能够及时的了解到审批进度,并且可以通过互联网与办事人员进行信息沟通;办事人员则通过网络与其它部门协同作业,办理审批业务;从而缩短了审批时间,节省开支,提高办公效率。ASP.NET是MicrosoftActiveSetvetPage(ASP)技术的最新版本,是微软公司推出的用于建立动态的数据库驱动网站的技术,可以用Microsoft(R)公司的产品VisualStudio.net开发环境进行开发,WYSlwYG(WhatYouSeeIsWhatYouGet所见即为所得)的编辑。ASP.NET是处理Web资源请求的框架。它获取客户端请求,然后通过它内置的管道,把请求传到一个终点,在这个终点,开发者可以添加处理这个请求的逻辑代码。论文结合上海某部门在办公自动化系统中对网上审批的需求,对网上审批流程进行了研究,针对具体问题如用户权限的设置、审批人的产生等做了相应的改变。


  1审批流程原理


  网上审批流程是基于工作流的,目的是在网上实现某个特定的任务,即实现某个业务流程。一个完整的审批流程包括:流程的开始及开始条件、一组活动及这组活动之间的关系、流程的结束及结束条件、以及一系列与此相关的数据等。


  1.1网上审批相关定义


  (1)用户:网上审批系统的使用者,每位在系统中注册成功的个人都成为该系统的用户。


  (2)角色:每位用户都有属于自己的角色,不同角色的用户对系统的操作不同。


  (3)权限:每个角色都有各自的权限,权限是用来决定不同角色的用户可以使用系统的不同部分。例如角色为项目负责人的用户有权限对用户递交的申请进行批阅,而一般用户则只能查询或递交申请等。


  (4)流程:指从某一用户递交申请开始至最终审批人结束审批并将结果反馈为止的整个执行过程,一次完整地申请审批过程的完成也就是一次流程的完成。


  (5)任务:每次接收需要审批的申请为一个任务,用户递交任务,拥有审批权限的人执行该任务、结束该任务或者递交下一任务。


  (6)节点:流程的流经途径或者当前任务的位置。


  (7)规则:任务从一个节点到达另一个节点的条件以及审批项目当前的状态信息。


  1.2审批流程的定义


  首先需要申请某项业务的用户注册,填写申请信息,递交信息,交由有权限的审批人进行批阅,该审批人决定申请是否通过或是交由下一审批人继续审批,如此循环反复,申请被一级一级地进行审批,直至最后一个审批人结束审批并提供反馈信息,流程结束。


  1.3模型的实现


  申请在流转过程中,无论流转到流程的哪一个审批人,他都要先对文件进行批阅,然后再决定申请下一步递交给谁。在项目审批流程的执行过程中,流程中的某次任务结束时都会使流程处于某种状态,主要有:通过、进行中、终止、待批、未通过5种。“通过”指流程已经结束。项目申请得到批准可以实施;“进行中”指申请正在流程中的某个位置等待继续审批;“终止”指该流程结束,申请被取消;“待批”指申请刚递交还未被传阅:“未通过”指流程结束,申请被打回或未获得批准,未通过采用的是一票否决制,即审批流中只要有一位审批人选择未通过,则流程结束。


  网上审批中审批人的选择可以通过两种方法来实现:静态审批和动态审批。


  (1)静态审批:由系统管理员或者有权限的用户事先规定好流程步骤即每个节点的审批人角色,申请审批的过程将根据安排好的顺序一步步递交给该角色的审批人。申请者只需要填写必要的申报信息,系统自动根据事先定好的步骤和规则将申请递交给的审批人;而审批人接收到任务时也不需要考虑下一步该怎么操作,只需要对申请进行批阅,系统自动根据其批阅的结果和步骤根据规则决定下一步的操作。


  (2)动态审批:在审批的过程中,由申请者自己选择第一位审批人并递交任务,审批者在批阅后需要确认自己是否是终极审批人,若不是则要选择下一位审批人并递交任务。两种方法的区别在于静态审批中审批人在系统中由系统管理员或者有权限的用户事先规定好;动态审批中审批人在流程的执行过程中动态生成,由上位审批人或者申请人指定。它们都有各自得优缺点:静态审批相对简单,用户操作容易,但不反馈信息。因为有些类型的审批不是按照预先定好的流程进行,当现实审批情况有所改变时需要修改流程规则,而且不同审批流程其规则不尽相同,需要设定很多流程规则,增加了系统的管理量。动态审批则要求用户知道审批的流程细则,知道自己要将任务交给谁来处理。这两种方案对于不同的申请项目要求会有不同效果。但其实质是一样的,均可以将流程归纳为两步:提交和批阅。用户递交任务,审批者执行任务并递交另一个任务至流程结束,模型如图1所示。本系统采用动态审批的方案。


  2网上审批流程的实现


  申请者注册用户信息,在网站上根据要求填写相关的申请表单,提交申请,相关申请数据信息写入数据库,网上审批流程根据规则发送信息告知有关审批人员有待批申请需要审批;审批人员接收信息进入审批页面进行批阅,审批人员可以对材料进行审核,适当修改,填写意见信息等,可以驳回结束申请或者将申请提交给下一审批人继续审批,该过程中产生的数据也将写入数据库(如审批人员审批的时间,修改的内容等信息)。待全部审批任务完成后,系统将审批结果存入数据库并发送消息通知申请人,同时公布审批结果。主要从以下两个部分来实现网上审批流程:


  2.1数据库的实现


  要用到的表及具体描述如下包括:①用户表(User):包括用户姓名、角色等,主要用来描述所有用户信息;②角色表:包括角色名称、角色权限等,主要用来描述所有角色信息;③申请项目基本信息表(Item):项目名称等,主要用来描述项目信息;④权限表(Preview):主要用来描述角色权限的信息;⑤项目运转表(Flowinfo):运转基本信息、项目目前状态、申请数据信息,主要用来描述项目运转信息;⑥项目运转审批表(Endorsees):主要用来记录审批过程中审批人的相关信息,如:审批时间、顺序、意见、修改等。


  数据表之间的关系:每个用户都有至少一个角色,一个角色亦可以有不同的用户,系统根据角色来分配权限,不同角色的用户对系统页面有不同的访问及操作权限:一个角色可以拥有多个权限(Preview),同样一个权限可分配给多个角色;角色权限规定该角色对网页的访问权限,用户权限是通过角色权限来实现的,修改角色权限时相应的就会实现对用户权限进行动态管理;项目运转表与项目运转审批表是一对多的关系,二者同时产生。关系图如图2所示。


  Endorsees中字段RolelDs记录可以执行某次任务的所有角色ID,UselD记录最终真正执行该任务的用户ID,前者在任务提交时产生,后者在任务结束时产生。用户、角色、权限的映射关系通过字符串来实现,即User表中的RolelDs字段、Role中的PreviewIDs字段的数据类型均为varchar,每个用户角色、角色权限ID均以逗号隔开来区分。


  2.2功能模块的实现


  项目申报模块


  系统提供给用户注册、查询、申请等功能。主要是填写申请单、递交申请、查询结果、在申请审批之前用户可以修改自己的申请。主要功能实现:


  (1)申请用户注册;


  (2)申请:即项目表单的页面设计;


  (3)递交申请:系统向首个审批人发送信息并将任务发送至审批人的事物安排中,相关的申请信息数据存入项目运转表中。审批流程开始,此时该流程的状态为“待批”。


  (4)查询信息:根据注册信息,系统提供用户申请查询页面,用户通过短消息模块或者直接登录进入查询页面来查询自己申请的项目当前状态。


  2.2.2项目审批管理模块


  项目审批模块是网上审批系统的核心模块,这一模块是具有权限的用户例如系统管理员或者部门管理员才能进入的模块,主要是接收任务、批阅、递交下一审批人或者结束审批。其功能实现:


  (1)审批人接收审批信息:短消息通知审批人有待批申请,审批人的事务安排中显示申请的相关信息如处理期限、结束时间等;审批人可以通过短消息模块或者审批管理模块进入审批页面,该页面记录审批流转的基本信息,如申请人、申请时间、流程状态、当前步骤、前任审批人的相关信息等。图3为车辆使用的审批页面。


  (2)审批人处理相关信息:查看申请相关的信息,如申报的材料,已有的处理结果等,并判断申报数据信息是否符合要求。如果不符合要求,填写相关处理意见或者信息,选择不批准结柬审批,此时流程状态为“未通过”。如果符合要求,填写相关处理意见或者信息,在静态审批中,根据静态审批规则系统自动分析判断项目下一步应该如何运转,如果下一步应将结果返回申请人,则结束流程,此时流程状态为“通过”,如果下一步应由某个审批者进行再次审批,向其发送信息,继续第


  二步骤,此时流程状态为“进行中”;在动态审批中,审批人如果选择批准则结束流程,流程状态为“通过”,如果选择下一审批人递交任务,则向其发送信息,此时流程的状态为“进行中”,继续第二步骤。审批人也可选择终止来取消流程。


  (3)反馈信息:系统向申请人发送反馈信息告知申请结果,所有审批数据归档数据库至项目运转表和项目运转审批表中。


  管理信息:具有权限的部门或者用户进入审批管理页面,该页面用户可以根据各种查询条件得到历史项目审批信息,可以对审批信息进行各种操作如查询、排序,汇总、筛选、下载等,亦可以终止某个流程。