Activiti工作流技术在OA系统中的研究与实现 下载本文

内容发布更新时间 : 2024/5/1 23:35:46星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

Activiti工作流技术在OA系统中的研究与实现

作者:施俊 李艳会

来源:《软件导刊》2014年第12期

摘 要:工作流技术是企业信息化的重要技术之一,在办公自动化领域,如何更好地处理流程运行过程中的相关环节,提高企业运行效率,是工作流管理方案着力解决的问题。介绍了工作流概念及BPMN 2.0规范,分析了开源Activiti工作流引擎的体系结构和模块组件。系统总体架构采用SSH2框架,选择Activiti对系统流程进行管理,通过这种设计,各个框架有效地结合在一起,发挥了各自的优势。结合请假流程,阐述了主要设计思路及实现过程。 关键词:OA系统;Activiti工作流;BPMN2.0;SSH2框架 DOI:10.11907/rjdk.143761 中图分类号:TP302

文献标识码:A ; ; 文章编号:1672-7800(2014)012-0052-03

基金项目:江苏省高等教育教改研究项目(2011JSJG438,指南编号3-5);江苏省现代教育技术研究项目(2012-R-22691)

作者简介:施俊(1978-),男,江苏扬州人,硕士,扬州市职业大学信息工程学院讲师,研究方向为软件工程、计算机网络;李艳会(1978-),女,吉林四平人,硕士,扬州市职业大学信息工程学院讲师,研究方向为计算机应用。 0 引言

办公自动化(OA)系统能提高管理效率,实现各部门之间的协同工作、资源共享和信息流转,降低企业运行成本。常见的业务流程有请假、报销、评审、公文流转等,这些流程可通过使用工作流技术来实现。本文以Activiti轻量级工作流引擎为核心,将其引入到OA系统中,减少业务人员对开发人员的依赖,提高了效率,方便了管理。 1 相关理论和开发技术 1.1 工作流和工作流管理系统

工作流就是为实现特定目标,必须完成的任务序列及这些任务的执行过程,它是业务流程的全部或部分自动化过程,通过将相关工作活动分解为相应的任务、角色、规则和过程来执行

龙源期刊网 http://www.qikan.com.cn

和监控,从而达到提升工作效率的目标。在流程中,相关任务、信息和文档按照预设的原则从一个参与者流转到另一个参与者,进行处理。简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。

工作流管理系统功能是:将相关人员、组织、资源设备、信息源(例如DataBase、File System、Email、CAD等)组合成整体,这样,工作流管理系统就成为一个理想的用来收容业务逻辑的业务仓库,并使业务逻辑易于操作及控制。 1.2 SSH2框架

当前,主流的JavaEE轻量级框架由Struts2、Spring、Hibernate组成,SSH2框架是中小型企业Java web应用程序开发较好的解决方案,可降低各层之间耦合度,减少开发复杂度,缩短开发周期,节省开发成本,提升软件质量。采用轻量级框架要尽可能地采用基于POJO(简单Java对象)的方法,使应用不依赖于任何容器,提高开发调试效率。另外,轻量级框架绝大多数是开源的,开源社区为框架提供了良好的设计、快速构建工具以及可供参考的开源代码,有助于快速开发项目,提高系统可扩展性、可维护性和处理效率[1]。 1.3 BPMN 2.0规范

BPMN 2.0规范定义了业务流程的符号及模型。为了实现流程定义可移植,设置了转换格式。通过BPMN 2.0规范可建立简单易懂的业务流程模型,处理复杂度较高的业务流程[2]。BPMN 2.0规范对流程描述文件做了语法上的定义,定义了XML规范,流程描述文件可在不同的引擎中使用,提供了平行、分流、决策、聚合等多种复杂的工作流程种类。

1.4 Activiti引擎

Activiti是轻量级的工作流引擎,易于与Spring集成使用,采用了宽松的Apache Licenece 2.0开源协议,促进了Activiti BMP引擎和BPMN 2.0的匹配。Activiti在jBPM4项目之上进行构建,延用了流程虚拟机(PVM),企业的业务流程通过直观的业务流程语言来描述,支持H2、SQL Server、Oracle、MySQL等数据库系统,并可部署在任何应用服务器上。

Activiti核心组件包括:Activiti Engine(流程引擎)、Activiti Modeler(基于Web的流程建模器)、Activiti Designer(基于Eclipse插件的设计器)、Activiti Explorer(基于Web的管理控制台)、协作工具和Spring集成等。流程引擎与Activiti其它组件一起设计和实现流程管理解决方案,可用于图形化建模、测试、部署BPMN 2.0的流程[3]。Activiti组件工具如图1所示。 图1 Activiti组件工具 2 基于Activiti的OA系统实现

龙源期刊网 http://www.qikan.com.cn

2.1 系统总体架构

系统采用B/S结构,使用Eclipse IDE作为开发平台,选择Struts2+Spring+Hibernate组合的Web架构,应用jQuery等开发技术,并将Activiti工作流引擎整合到SSH2框架中。逻辑上划分为表现层、应用层和数据层,当业务改变时,只需改进流程,无需修改系统,系统总体架构如图2所示。 图2 系统总体架构

(1) 表现层是应用程序和用户交互的桥梁,使用JSP和Struts2中的视图技术作为表现层页面,结合Ajax实现业务流程,应用与后台无关的前端jQuery框架,用于创建前端界面,支持多种平台的http访问。

(2) 业务层运行在开源的Tomcat服务器上,包含Web控制、业务处理和数据访问3部分。Web控制采用Struts2实现,处理用户的请求采用拦截器机制实现;业务处理采用轻量级Spring框架实现,Spring能够控制反转(Ioc)和面向切面(AOP),容易实现Bean的装配和事务管理等特性。其中Activiti用于处理所有与流程相关的数据操作,使用Service层控制事务属性,通过Spring的AOP让Service层进行事务管理处理。数据库部署采用易于扩展的Dao层,Dao层将Hibernate的CRUD 原子操作进行封装,为业务层提供底层支持;数据访问由对象关系映射框架Hibernate实现,封装底层细节,屏蔽不同数据库异构问题。Activiti的流程引擎配置文件本身就是一份Spring配置文件,将Activiti整合到Spring中一起使用。

(3) 数据层采用开源的MySQL数据库,用来保存流程产生、执行及结束等环节中与之相关的各类数据。Activiti数据表的命名与服务API接口命名方法类似,分为5大部分,包括通用数据表、流程存储表、身份数据表、运行时数据表及历史数据表,以ACT开头,中间是1~2个字符的用例标识,例如ACT_RE_*,RE代表respository,表示流程定义存储;ACT_RU_*,RU代表runtime,表示流程执行记录。 2.2 框架整合及系统实现

(1) SSH2框架的搭建整合。首先向项目导入对应jar包;其次把Struts2的Action、Hibernate的SessionFactory和DataSource整合到Spring容器中,统一让Ioc管理;配置web.xml、struts.xml、applicationContext.xml文件[4]

(2) jQuery与Struts2整合。从传输速率上考虑,系统采用JSON数据格式把数据从后台传给前台。

(3) Activiti与Spring的整合应用。为了统一管理对象,由Spring来处理流程的实例化,为applicationContext.xml配置文件,加入Activiti的流程引擎配置bean,流程引擎bean和相关服务bean配置如下: