工作流系统中会签功能的设计与实现
2014-10-14韩红云李桃迎
韩红云,陈 燕,李桃迎
(大连海事大学交通运输管理学院,辽宁 大连 116026)
0 引言
随着信息技术的不断发展和企业信息化的逐步深入,越来越多的企业流程需求已经无法用普通的办公自动化系统来满足。工作流会签系统,可以自动地完成各部门间信息的流动,可以更加有效地实现信息的传递和交流,可以直观地了解流程审批的责任人和某项流程当下所处的审批节点,具有更高的安全性、封闭性,可以极大地提高工作效率,节约时间成本。
目前已经有很多学者进行了相关的研究,文献[1]研究了基于JBPM的工作流会签设计,给出了单步会签和多步会签的具体解决方案。但是目前JBPM技术已经逐步被Activiti所取代,Activiti兼容JBPM的同时又有良好的拓展性。文献[2]介绍了管理信息系统会签管理的实现,虽然达到了会签效果但是系统运行时存在一定的误差且效率低下。文献[3]主要介绍了基于Activiti的工作流引擎技术在管理系统中的应用,运用了主要数据库以及主要的接口工作模型,给出了Activiti的优势但是没有图形化的追踪,不利于实时控制。
鉴于此,本文将Activiti运用到会签技术中,既对JBPM进行了拓展和延伸,满足当下高速发展的需求,同时也降低了错误率,避免审批部门间的推诿和延误,提高管理效率。且在审批流程过程中可以看到图形化的追踪界面,方便使用人员对流程的实时控制。
1 工作流会签与Activiti简介
工作流主要解决的是“使在多个参与者间按照某种预先定义的规范传递文件、信息及任务的过程自动进行,从而实现某个预期的目标,或促使此目标的实现”。工作流是为了实现某些标准或者业务目的而进行的自动化过程[4]。一个工作流包括一组任务和它们之间的相互顺序关系,还包括流程及任务的起始条件和终止条件,以及对每个任务的描述。工作流参考模型即工作流管理系统的体系结构模型[5]。
工作流管理联盟(WfMC)对工作流给出定义:工作流就是指一类可以自动执行的经营过程,根据一系列过程规范,将文档、信息或者任务在不同的执行者间进行流转与执行[6]
1.1 会签及其分类
在企业的日常工作中正确处理管理和控制中的工作流程十分重要。以企业的生产运行系统为例,存在着具有时序性和实效性的“三票”(工作票、命令票和操作票)管理控制,即许多重要的数据需要有关岗位责任人签名予以确认[7]。这些需要签署意见的文档、合同、三票等将其统称为“会签文件”,需要签名的用户为“会签人”[8]。
会签分为单步会签和多步会签2种。
1)单步会签:只有一个审批节点,且在这个节点处需要多个审批人员共同负责审批任务或者添加审批意见。它的使用最广泛且易于实现。
2)多步会签:某审批流程有多个审批节点,且每个节点又存在一个相对独立的审批流程。多步会签逻辑结构复杂,难以实现,但在流程审批过程中必不可少。
会签的发起模式一般分为顺序模式和并发模式。1)顺序模式即按照顺序执行各项活动。一道流程从开始到终止,按照审批流程规定经过若干人顺序审批。工作流流程中的一个活动只有当另一个活动完成后才能进行。例如:当订单填写活动完成后,客户通知才可以进行。
2)并发模式即可以同时运行2个活动。在流程中1个控制线程分为可以并行执行的2个控制线程,允许2个活动可以同时运行[9]。
当然会签的发起模式还可以将顺序模式和并发模式进行合理的嵌套,构成复杂形式。
1.2 Activiti技术
Activiti是一个独立运作和经营的开源项目,独立于Alfresco开源ECM系统运行。Activiti是一个轻量级、可嵌入的BPM引擎,而且还适用于可扩展的云架构[10]。Activiti提供宽松的 Apache 许可 2.0,以便这个项目可以被广泛使用,同时促进Activiti BPM引擎和BPMN 2.0的匹配[10]。在流程中提供了平行、分流、决策、聚合等多种复杂的工作流种类,还提供了方便的基于Web的工作流表单自定义功能,可以定制业务流程表单所需的字段,以及显示权限[11]。
1.3 Activiti工作流引擎的优点
1)具有良好的拓展性。
Activiti是基于JBPM4开发的,支持 PVM(流程虚拟机)技术,支持更多的流程格式,且可与外部服务良好集成,服务接口清晰,拥有链式的API接口,为流程管理营造良好的内部实现环境。
2)可视化的流程设计。
Activiti与Eclipse集成实现了定义流程的可视化,使流程更加清晰明了。另外Activiti Modeler是基于开源的Signavio Web流程编辑器的一个版本,提供了对BPMN 2.0图形化规范支持,流程定义后以XML文件格式存储,用户可以轻松画出逻辑复杂的工作流程[12]。
图1 WSH框架调用流程图
2 开发框架
本课题是 WebWork、Spring和 Hibernate三种框架技术的整合使用,也称为WSH框架。3种技术顾及到了和其他框架的联系,充分发挥了三大框架各自的特点,三大框架的集成使得开发效率显著地提高,充分利用了每个框架的优势,从而达到了取长补短的效果。WSH框架调用流程图如图1所示。
该系统的实现是基于J2EE的标准设计,逻辑上分为表现层、控制层、业务层和数据层。如图2所示。
图2 J2EE规范的四层模型
J2EE平台中客户端应用程序和Applet是运行在客户端的组件;Java Servlet和Java Server Pages(JSP)是运行在服务器端的Web组件;Enterprise Java Bean(EJB)组件是运行在服务器端的业务组件[13]。如图3所示。
图3 客户端层、Web层和业务层
本文研究的工作流会签系统是基于J2EE的B/S应用模式,将Activiti与Eclipse集成,利用WebWork、Spring、Hibernate三大框架,采用了Java语言编程,同时运用JSP的相关页面设计技术实现相关功能。本系统采用MySQL作为数据库,Tomcat 6.0作为应用服务器,基于Internet与Web技术、B/S结构的系统功能,具有开放、可靠、弹性、兼容、灵活、跨平台的特性[14]。
3 实现会签流程
3.1 设计思想
会签流程的设计思想是将每个会签过程看成一个任务,在数据库中存储起来,将设计好的流程定义审批图以文件的形式部署存储到Activiti环境中。运行流程后,根据流程在流程定义中存储的会签节点间流转,首先任务人签收审批任务,经验证有权限后进行审批操作或者添加审批意见。通过后流程流转到下一节点,拒绝时流程驳回到申请人节点修改。直至流程审批结束。
3.2 数据库设计
Activiti使用到的表都是ACT_开头的。
1)ACT_RE_*:’RE’表示repository(存储),RepositoryService接口所操作的表。带此前缀的表包含静态信息,如流程定义,流程的资源(图片、规则等)。
2)ACT_RU_*:’RU’表示 runtime,运行时表-RuntimeService。这是运行时的表,存储流程变量、用户任务、变量、职责(job)等运行时的数据。Activiti只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录,保证了运行时的表小且快。
3)ACT_ID_*:’ID’表示 identity(身份标识),IdentityService接口所操作的表。用户记录、流程中使用到的用户和组。这些表包含标识的信息,如用户、用户组等。
4)ACT_HI_*:’HI’表示 history,历史数据表,HistoryService。这些表包含流程执行的历史相关数据,如结束的流程实例、变量、任务等。
5)ACT_GE_*:’GE’全局通用数据及设置(general),各种情况都使用的数据[14]。
3.3 工作流会签的具体实现过程及相关代码
本文实现的难点在于具体业务与实现层交互。利用Activiti技术实现方案审批业务流程需要以下步骤。
1)设计工作流程图。
在Eclipse开发环境中用流程设计工具按照BPMN规范绘制方案审批流程图。
2)将设计好的工作流程图部署,相关配置如下:
3)部署后的流程就可以启用;首先发起申请。
用户发起申请保存后增加语句将流程插入到数据库,并与项目申请相关联,启动流程。
4)签收任务流程。
流程流转到下一个节点后,由负责人员签收任务,其他人员无权限签收,负责人签收后,业务申请对外不可见。
5)审批流程。
6)查看流程图。
7)待办任务和已经完成的任务。
//查询当前流程节点
8)删除流程任务。
4 结束语
本文利用Activciti技术实现了工作流会签功能,解决了发起会签的顺序模式以及简单的并发模式的实现,完成了信息在各级、各部门间的流转且可以对流程任务进行实时控制。下一步将研究顺序模式和并发模式嵌套的实现,使工作流会签系统功能更加完善,从而发挥其更强大全面智能的功能。
[1]顾大明.基于JBPM的工作流会签设计[J].民营科技,2010(12):50,207.
[2]梅峰,于洋,卫青延,等.基于开源工作流Activiti的企业协同信息平台研究[J].福建电脑,2012(11):125-127.
[3]阿斯特.工作流管理:模型、方法和系统[M].王建民译.北京:清华大学出版社,2004.
[4]张利君,马骏,杨涛,等.基于工作流的动态任务调度研究与实现[J].计算机工程与设计,2009(10):2533-2537.
[5]WFMC-TC-1025,工作流过程定义接口——XML过程定义语言[S].
[6]罗海滨,范玉顺,吴澄.工作流技术综述[J].软件学报,2000,11(7):899-907.
[7]薛华成.管理信息系统[M].北京:清华大学出版社,1993.
[8]王安慧,孙长银.管理信息系统会签管理模块的设计与应用[J].三峡大学学报(自然科学版),2001,23(5):454-457.
[9]范玉顺.工作流管理技术基础[M].北京:清华大学出版社,2001.
[10]叶小路,钱真坤.基于Activiti5的水司OA系统设计与实现[J].软件导刊(教育技术),2013,12(6):93-95.
[11]Alexander Grosskopf,Gero Decker,Mathias Weske.The Process Business Process Modeling Using BPMN[M].Meghan-Kiffer Press,2009.
[12]冯天佑,梁立宇,李成华,等.基于Activiti工作流引擎技术的电力行业业务流程管理系统[J].信息通信,2013(8):57-59.
[13]Chen W.Enterprise information management system based on J2EE and MVC mode[C]//Proceedings of the 9th International Symposium on Linear Drives for Industry Applications.2014,3:427-433.
[14]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004.