陈 丹,王 勇,王 瑛
(广东工业大学 计算机学院,广东 广州510006)
众所周知,企业要成为科技创新主体,企业科研活动在其中起了关键性的推动作用[1]。在企业科研协同工作中涉及到大量系统化、重复性的流程类活动,需要引入工作流技术来解决流程处理效率低、管理复杂的问题。近年来,工作流和科研协同系统得到了快速的发展。文献[2,3]应用协同工作环境套件Duckling来实现计算化学、学术会议领域的科研协同系统,并获得一种社交网络和协作平台的解决方案;文献[4]应用J2EE 体系架构和EJB技术实现科研管理系统。文献[5]应用开源工作流引擎和J2EE 技术来实现科研项目管理,规范科研管理的业务流程和行为。前者的研究主要集中在协同设计、会议和化学等方面,在企业科研方面研究甚少,应用范围比较局限;而后者即传统的工作流科研管理系统更注重固定流程和制度的控制,忽略了企业科研过程具有业务流程易变、部门交互复杂、资源共享性差和系统安全性低的问题。针对以上不足,本文实现了以工作流关键技术为核心,结合社交网络工具和J2EE技术的科研协同平台。
工作流是一中重要的人机协同工作形式,它使得具有固定流程的业务可以进行全自动化或半自动化的执行,合理运用工作流可以达到提高工作效率的目的,详细定义请参见文献[6]。工作流管理系统是一种能定义、创建和管理工作流执行的系统[7],它的3个主要功能是:建立时,对流程进行过程定义、分析和建模;运行时,对过程定义进行解释和实例化及对运行实例进行控制;操作时,与用户和应用程序及IT 工具进行交互。
Petri网,由德国科学家Carl Adam Petri于1962 年提出,是工作流管理系统建模过程中高效而严密的分析工具[8]。Petri网是一种基于状态的建模方法[9],既有严格的数学表述和图形化的表达方式,又有丰富的系统分析技术。这些特性使得Petri网成为动态流程建模的有效手段。
Petri网的4 个基本元素包括:托肯(Token)、库所(Place)、变迁(Transition)、有向弧(Directed Arc)。
Petri网的基本定义是:元组PN=(P,T,F)满足3个条件:①P∩T=;②P∪T≠;③FP×T∪T×P≠。其中,P={P1,P2,…,Pn}是库所集,T={T1,T2,…,Tn}是变迁集,F是库所和变迁间的有向弧的集合。在典型的Petri网模型中,用一个黑点表示Token,用一个圆圈表示库所,用长方形表示变迁,用有向弧表示库所和变迁间的输入输出。库所中可以包括一个或多个Token,一个Token代表工作流中的一个实例或资源,变迁表示业务流程中的任务,库所表示业务流程实例被执行的状态。因此在Petri网中,Token此时的分布状态可以直观的表达业务流程当时的执行情况。
同时,Petri网很好的支持工作流的4种路由结构,即顺序、并行、选择和循环。Petri网理论为了描述这4种路由提出6 种 工 作 流原语[10]:与连接(AND-join)、与分支(AND-split)、或连接(OR-join)、或分支(OR-split)、循环、因果关系。如图1所示。
图1 6种工作流原语
顺序路由表示一系列工作任务要按顺序串行执行;循环路由表示工作任务需要重复执行多次。并行路由表示多条任务分支可以同时并行执行,它又分为与连接和与分支两种结构。与连接表示多条任务分支都执行完成后,在分支合并处的任务才能开始执行。与分支表示在连接节点分叉的多条任务分支可以并行执行。选择路由表示多条任务分支的执行是相互排斥的,只能择其一执行,它又分为或连接和或分支两种结构。或连接表示在多条任务分支中选择一条分支进行执行,执行完成后通过同一连接节点进行合并。或分支表示在连接节点分叉的多条任务分支,只能选择一条分支继续执行。
JBPM 是一套开源的工作流管理软件包,它采用自己定义的JPDL(JBPM process definition language)语言来描述业务流程的图形化结构。JPDL语言实际上是一种轻量级的XML结构的流程描述语言,可以明确定义业务逻辑的各个组成部分,如表1 用于描述科研立项业务的申报流程。JBPM框架内置许多流程定义活动,包括start、state、task、decision、fork-join和end等提供了Java业务代码与业务流程无缝衔接的绑定机制[11]。同时,JBPM 采用了Hibernate提供 的 对 象 关 系 映 射(object relation mapping,ORM)机制,在数据持久层的角度解决了对象和关系数据库的映射关系。因此JBPM 能够兼容大部分数据库系统,在事务处理、数据持久化等方面可以与业务应用程序进行灵活的集成。
JBPM 的处理过程主要为以下4个步骤:
(1)发布(加载)流程定义:指通过JBPM 的designer插件(或JPDL 语言)来定义工作流,生成processDefinition.xml文件,再将其加载到应用中的过程[12]。系统流程与业务操作的分离使得用户通过改变流程的定义即可灵活变更业务的流程以及动态调整任务的分派。
(2)启动流程:指在给定的流程定义基础上,实际创建相应的业务流程实例(即ProcessInstance类)。
(3)处理任务:指JBPM 引擎为流程实例对象生成相应任务的实例,并对这些任务实例进行相应的操作如:触发流程向下流动、获得待处理的任务列表等,最后结束任务实例以推动流程的下一步流转。
(4)流程监控及管理:指在流程流转过程中,对流程实例和任务实例等相关状态进行存储、监控和管理。
工作流的业务流程中涉及到大量用户角色的权限访问控制问题,该问题一直都是信息系统安全稳定运行的关键。目前,权限管理策略主要是基于角色的访问控制模型 (rolebased access control,RBAC)。RBAC的核心思想是对象的访问权按角色进行分组,资源的使用情况受限于已授权的关联角色个体,角色成为用户与权限的中介[13]。这种方式使得用户和权限进行分离,可以将特定的权限分配给两个或更多的用户,防止执行关键操作的控制权限漏洞。基本的RBAC模型如图2所示,在进入系统后,用户通过JSP页面的会话机制(session)来确定当前用户具有的访问控制权限。
表1 科研立项申报流程的XML源码
图2 基本的RBAC模型
但是基本的RBAC模型只是一种通用的访问控制抽象模型,在具体的项目实施中存在一些不足,如访问控制粒度太粗、各种约束控制通用性差、安全性低等问题,都不能满足科研项目群体协作的要求。在实际科研协同平台中,有这样一些权限要考虑:各级用户的审批权限、不同部门的成员权限、特定权限的转移或委托代理等。针对上述问题,本文提出了具有普遍约束集的增强型RBAC 模型,对用户操作权限进行了灵活配置和多层次管理,如图3所示。
科研平台中的普遍约束集包括责任分离、权限委托、协同约束、时间约束和组织约束。责任分离约束是在基本RBAC模型中定义的约束,通过角色来设置用户的权限,使得具体用户个体和责任权限进行分离。权限委托表示在特定用户不能完成权限工作的时候,将特定权限转移给其他用户来完成他的工作。协同约束主要解决在团队协作过程中哪些用户被授权操作哪些资源的权限问题。时间约束主要是为了方便工作流的管理。组织约束定义了基于组织结构的角色。
根据科研协同管理的需求,将平台的功能模块分为三大块:科研项目管理、科研人员管理、科研协同管理。如图4所示。
(1)科研项目管理主要通过JBPM 工作流引擎对科研立项、科研结题等流程活动进行协同管理,对科研经费、成果进行统计和监管,对日常消息进行浏览、查询和更新。实现了日常科研申报工作的电子化和自动化处理,减少手工流转的延迟和损耗。
(2)科研人员管理主要通过用户、角色和权限三方面的配置,来对整个系统的用户权限进行分配、控制和管理。
(3)科研协同管理主要分为4个模块即上传文件、微博互动、博客分享和好友关注。每一个模块就代表一种社交网络(SNS)工具。其目的是通过这4 种工具来构建一个企业内部的社交网络,让科研人员、行业专家和客户代表等用户可以进行灵活的动态交互和资源共享工作。该功能模块的设计思想是:用户可以通过好友之间的关注来扩大朋友圈,加强信息的交流和互动;通过上传文件和发表博客来分享科研信息资源,运用微博来了解其他人员的最新科研动态。
企业科研活动一般分为3个阶段:前期科研立项申报阶段,中期科研项目组织实施阶段,后期科研项目结题阶段。根据Petri网的流程建模理论,企业科研协同平台的关键流程模型如图5所示。
前期的主要业务流程是科研团队进行网上立项申报,填写项目相关材料如人员、设备、经费等信息,部门主管进行材料真实性的审核,审核通过后再提交给多位行业专家进行同时评审(用AND-split原语建模)。行业专家对科研项目的各方面进行专业评审,评审都结束后意见统一提交给分管经理进行审批(用AND-join原语建模),经理审批结束有3种结果(用OR-split原语建模),审批通过则科研立项申报完成,可以开始组织实施科研计划;审批不通过的项目则要根据评审意见进行相关材料的补齐重新申报或不申报处理,则此次立项申报也结束(用OR-join原语建模)。
图3 增强型RBAC模型
图4 系统功能模块
中期科研实施阶段具有较大的易变性和人为性,主要根据JBPM 技术解耦系统业务流程的特点,通过改变流程的过程定义,来动态更改业务的执行流程。后期的项目结题流程与前期的很相似,在分管经理审批通过后,提交给财务人员统计经费以及科研成果鉴定归档,最后科研项目结题完成。
考虑到系统的扩展功能、可维护性和可移植性,本系统采用B/S结构模式,以J2EE技术(即SSH2三大框架)来架构系统。该系统体系结构共分为4 层,依次是表示层、业务逻辑层、数据持久层和数据库层。系统体系结构如图6所示。
表示层主要负责页面显示和人机交互的工作,由HTML5、JSP和ExtJS3.4构成,使用Struts对用户界面进行管理。业务逻辑层是整个系统业务处理的核心部分,提供了科研协同平台的全部业务逻辑功能。由Spring管理各种业务组件,通过增强型RBAC 对系统的权限进行管理,并交由JBPM 引擎负责业务流程的定义和执行服务。数据持久层采用Hibernate提供的ORM 框架实现对象关系的映射,屏蔽不同数据库底层细节的差异;使得数据库操作代码与业务逻辑分离,用户更专注于上层业务逻辑的实现。数据库层主要负责数据的存储和管理。
系统的整个执行过程是首先表示层Struts框架中的actionform 表单封装WEB浏览器发出的请求参数,然后对应的action类接受用户请求,并调用业务逻辑层相应的service类和下层的DAO(或者Hibernate DAO)类来实现系统业务逻辑。最后,DAO 对数据库进行各项数据操作。在整个过程中,Spring充当一个容器管理的角色,它对以上类实例化的对象及其关系进行配置和管理。该体系结构使得各层之间进行解耦,提高了系统的重用性和扩展性,同时B/S模式,极大的简化了客户端的安装和维护。
图5 科研协同平台的关键流程模型
图6 系统体系结构
基于上述关键技术的分析,本文采用Java作为开发语言,Tomcat6.0作为WEB服务器,MySQL5.1作为后台数据库。以MyEclipse6.6为集成开发环境,在JDK1.6 环境下开发了基于工作流的科研协同平台。用户浏览器是Microsoft IE8.0或以上版本。
以 “admin”身份登录系统主界面,进入科研项目管理下的申报管理模块,点击科研立项申报,右边主显示区出现立项申报界面,页面如图7所示。用户录入科研立项相关信息,点击 “发送”即可呈报给部门主管审批,审批通过继续呈报给下一个领导审批,直到审批完成或者审批不通过,申报流程结束。其中,档案管理包括经费管理和成果管理模块。
图7 立项申报界面
该功能在消息管理模块中,主要用来查看用户申报流程的审批状态、流转情况和审批意见等信息,同时可以对紧急流程进行催办操作,页面如图8所示。其中,消息管理包括我的申请、待我审批、经我审批和待我阅读4个模块。
图8 申报查询界面
为了方便多用户科研过程的信息交流、资源共享和协同交互,平台提供了4种科研协同工具,页面如图9所示。右边主界面显示了整站动态信息,包括好友信息、各种回复、整站消息、在线成员和上传文件等动态。
图9 协同活动主界面
科研活动中涉及大量的信息资源、知识群体和审批环节,需要对整个科研过程进行流程规划、过程管理和控制,以促进多领域的科研人员进行高效地协同合作。本文以企业科研活动的流转过程为研究对象,利用Petri网流程模型可以直观的表达流程变迁状态的特点和JBPM 工作流引擎具有的流程独立的优势,来增强系统动态流程处理的灵活性。在系统实现上,采用了J2EE 四层体系架构和增强型RBAC机制,提高了系统的安全性、复用性和跨平台性。同时系统中引入了社交网络工具,极大提高了资源共享的效率,为网络化科研协同环境的人员交互提供了重要保障。
[1]National Natural Science Foundation of China.China’s e-science blue book [M].Beijing:Science Press,2011 (in Chinese).[国家自然科学基金委员会.中国科研信息化蓝皮书[M].北京:科学出版社,2011.]
[2]ZHANG Ruisheng,FAN Xiaoliang,WANG Dongyun,et al.A grid-enabled collaborative research environment for computational chemistry studies [J].Journal of Huazhong University of Science and Technology (Natural Science),2007,35 (z2):32-35 (in Chinese).[张瑞生,范晓亮,王东云,等.面向计算化学研究的网格科研协同工作环境 [J].华中科技大学学报(自然科学版),2007,35 (z2):32-35.
[3]ZHENG Yihua,NAN Kai,YANG Deting,et al.Realization on conference-oriented cloud collaboration platform [J].Journal of Huazhong University of Science and Technology (Natural Science),2011,39 (z1):176-179 (in Chinese). [郑依华,南凯,杨德婷,等.面向会议活动的科研协同云平台实现[J].华中科技大学学报 (自然科学版),2011,39 (z1):176-179.]
[4]LIU Zexuan,JIANG Chunhua.Design and implementation of science research management system based on J2EE technology[J].Computer Engineering and Design,2007,28 (21):5218-5220 (in Chinese). [刘泽 轩,江春华.基于J2EE 架 构的科研管理系统的设计与实现 [J].计算机工程与设计,2007,28 (21):5218-5220.]
[5]ZHENG Yang.Design and implementation of JBPM workflowbased on scientific research management information system[D].Beijing:Beijing Jiaotong University,2011:8-25 (in Chinese).[郑洋.基于JBPM 工作流科研管理信息系统的设计与实现 [D].北京:北京交通大学,2011:8-25.]
[6]XU Liang,ZHANG Li,FAN Zhiqiang.An approach of realtime workflow modeling based on UML [J].Journal of Computer Research and Development,2010,47 (7):1184-1191(in Chinese).[徐亮,张莉,樊志强.一种基于UML的实时工作流建模方法研究 [J].计算机研究与发展,2010,47(7):1184-1191.]
[7]YANG Mingshun,HAN Zhoupeng,YU Ting,et al.Design and implementation of a lightweight workflow engine [J].Journal of Xi’an University of Technology,2013,29 (1):20-26 (in Chinese). [杨明顺,韩周鹏,余婷,等.一种轻型工作流引擎的设计与实现 [J].西安理工大学学报,2013,29(1):20-26.]
[8]ZHANG Zhiying,WANG Jianwei,WEI Xiaopeng.A method of case adaptation based on Petri net[J].Computer Systems &Applications,2009,18 (4):190-193 (in Chinese). [张 智颖,王建维,魏小鹏.一种基于Petri网推理的实例修改方法[J].计算机系统应用,2009,18 (4):190-193.]
[9]LI Hailing,SHI Benshan,LIU Kejian.Workflow modeling and simulation for implementation stage of construction project based on Petri net [J].Journal of Computer Applications,2011,31 (10):2828-2831 (in Chinese). [李海凌,史本山,刘克剑.基于Petri网的建设工程项目实施阶段工作流建模与仿真 [J].计算机应用,2011,31 (10):2828-2831.]
[10]YU Zhenglin,SUN Jingke.Research and design of lightweight workflow model based on improved activity-on-vertex network [J].Journal of Computer Applications,2013,33(1):262-265 (in Chinese). [於正琳,孙精科.基于改 进AOV 网的轻量级工作流模型研究与设计 [J].计算机应用,2013,33 (1):262-265.]
[11]GU Wenxuan,WANG Qiong,XU Tingrong.Study and design of JBPM based workflow management system [J].Computer Applications and Software,2009,26 (5):104-106(in Chinese).[顾文轩,王琼,徐汀荣.基于JBPM 的工作流管理系统的研究与设计 [J].计算机应用与软件,2009,26 (5):104-106.]
[12]WANG Wei,XU Wensheng.Automatic algorithm for JBPM process definition file generation [J].Journal of Computer Applications,2012,32 (A02):89-91 (in Chinese). [王伟,徐文胜.JBPM 流程定义文件自动生成算法 [J].计算机应用,2012,32 (A02):89-91.]
[13]XU Hong,TAI Weipeng.Research on workflow-oriented RBAC model[J].Computer Engineering and Design,2012,33 (4):1295-1299 (in Chinese). [徐宏,邰伟鹏.面向工作流的RBAC模型研究 [J].计算机工程与设计,2012,33(4):1295-1299.]