基于Activiti5引擎的售后业务信息平台
摘 要
随着网络信息技术的发展,一些传统的依据工作流技术的产品已经无法满足企业的需要,尤其是对变化的流程类型,同时也缺乏开放性和集成性等问题从而不能很好的适应公司的业务需求。该系统总体架构采用S2SH框架,引入Activiti5引擎对系统流程进行管理,这样可以减少企业运行成本,提高管理效率,增强各部门协同办公能力。该系统从实际出发,以公司的售后业务信息系统为例,详细介绍S2SH框架和Activiti5引擎整合的优势以及实现细节。
【关键词】工作流管理系统 BPMN2,0 Spring+ Strut2+Hibernate;Activiti5
随着业务不断扩大和日益激烈的市场竞争,公司对于售后管理部分的服务也越来越重视,为了让公司的售后服务更加管理流程化,便利化,增强用户的满意程度,进一步提升产品的市场竞争力,特开发本系统,实现售后管理业务的规范化、信息化。本系统包括:安装评估、调试参数设定、安装参数设定、故障登记、故障排查及处理、故障处理回访,还包括故障处理知识库维护、故障问题库维护等业务,售后服务的启动是从设备调试安装开始。如采用传统开发模式,代码量大、冗余度多,不便于测试、扩展和维护,采用S2SH框架进行开发,采用MVC设计模式,实现了模型、视图、控制器的分离,层次之间职责明确,让业务逻辑层与持久层也进行独立,倘若对数据进行更改,那么不会对前端造成影响,同样地,也不管前端如何变化,模型层只需很少的改动,这样可以大大提高系统的复用性。最主要的是采用Activiti5工作流技术对系统的流程进行管理,降低了复杂流程应用开发和维护的难度,有利于团队开发成员并行工作。
1 主要技术简介
1.1 Activiti5技术
Activiti5 的创始人是 Tom Baeyens 加入 Alfresco 后推出的基于JBPM4 的开源工作流系统,它本身是一个业务流程管理(BPM)系统,它是由Apache开源许可的BPMN 2.0引擎开发出来的一种轻量级的可实现嵌入的BPM引擎。Activiti5 提供宽松的Apache开源许可,这样有利于Activiti5 BPM引擎和BPMN 2.0相匹配。Activiti5的目标是简化应用以及实现功能扩展,从而提供更多更强大的业务功能,它能支持的数据库有h2,MySQL,Oracle,Postgres,db2,Mssql等,甚至可以部署到任意的应用服务器上。Activiti5 的体系结构由Modeling,Runtime,Management这三种组件构成,其中Modeling包括Activiti Modeler、Activiti Designer、Activiti Kickstart组成,Runtime中Activiti Engine是整个体系结构的核心部分,Management由Activiti Explorer和Activiti REST组成。其中Activiti Modeler和Activiti Designer是两个模型设计工具,Activiti Modeler是面向业务人员,遵循 BPMN2.0 规范的图形化流程设计工具;另外一个Activiti Designer是面向开发人员的,以 Eclipse 的插件形式存在,开发人员可以根据系统的流程需要来制定流程。最后Activiti5的比较核心的部分是BPMN2.0 流程引擎,BPMN2.0 流程引擎具有快速、容易集成Spring等诸多优势。
1.2 BPMN2.0规范
BPMN2.0规范的最终版本是OMG(The Object Management Group,对象管理组织)于2011年1月发布,BPMN是用来设计业务流程图的,其实就是一个业务流程图的编辑工具,BPMN2.0相对于BPMN1.0规范以及XPDL、BPML及BPEL等最显著的不同点在于它定义了业务流程的符号以及模型,并且为流程制定了转换格式,这样可以使复杂的业务流程简单化,对流程进行可视化管理,这样业务的设计分析人员在不依赖与业务开发人员的情况下就可以独立地对流程进行设计和管理。BPMN2.0对流程执行语义定义了三类基本要素,它们分别为Activities(活动)、Gateways(网关)、Events(事件)。Activities(活动),从宽泛的角度来说,凡是在工作流中有一定的生命周期的都可以称之为“活动”,通常用圆角矩形这样的符号来表示活动,任务(Task)和子流程(Sub-Process)是依据活动类型的不同二划分的,它们都属于活动;用菱形符号来表示Gateways(网关),从字面意思来看,所谓“网关”就是用来决定流程分支流向的一个关卡,有Parallel Gateway(并行网关)、Exclusive Gateway(排它网关)、Inclusive Gateway(包容型网关),用网关可以对流程的执行要么进行进行要么选择性地排它执行;Events(事件)用圆圈表示,按照种类分为开始事件,中间事件,结束事件,在BPMN2.0执行语义中也是一个非常重要的概。总而言之,BPMN2.0规范是通过定义了XML规范,在语法上对流程描述文件进行定义,这样使得流程文件应用更加广泛,针对目前各个领域的业务需求,在业务功能上提供了能够解决不同问题的工作流种类。
1.3 S2SH框架
S2SH框架,就是将Strut2、Spring、Hibernate这几种技术整合而成的一种集成技术,Spring在S2SH占据核心地位,它不仅可以整合Spring和Strut2,而且还能整合Spring和Hibernate,第一种整合可以看作为向上整合,第二种整合可以看作向下整合。由此,整个S2SH框架就是这样被Spring为核心整合在了一块,这样的整合降低了各层之间的的耦合性,即松散性增大,进而可以提高程序的灵活性、可扩展性和可维护性。
Strut2是在WebWork2的基础上演变发展起来的,它的设计是是一种无侵入式的设计,采用拦截器对用户提交的一些请求就行处理,在配置文件web.xml中一般情况下首先要注册其核心拦截器;Spring是一个主要有两部分组成的开源框架,即控制反转( Inversion of Control, IOC)和面向切片编程(Aspect-Oriented Programming)。JavaBean的生命周期就是由它来进行管理的,另外也可以单独地使用Spring框架;Hibernate是一个ORM(Object Relation Mapping)框架,其中O是对对象进行操作的,R是关系数据库,M是有关对象关系的映射文件,Hibernate的最重要的核心功能是使数据库和程序中的Dao层建立关系,然后封装JDBC的操作步骤,可以简化对数据库的操作,更加得方便快捷。将这三个框架整合在一起后,可以明显地体现出了MVC设计模式的思想,不仅减轻了IT开发人员的开发负担,也大大缩短了开发周期。S2SH 也是现在Web开发的主流框架,大部分的公司都采用这种开发框架,对系统也可以进行很方便的扩展。S2SH框架的优点众多,但它也是这三个大框架的整合使用,对调试过程的难度也相对来说加大了不少。
2 基于Activiti55的售后业务信息系统结构
2.1 系统整体架构
系统采用B/S结构,使用Eclipse IDE作为本系统的开发平台,运用Strut2、Spring、Hibernate组合的Web框架,采用jQuery等开发技术,同时将Activiti5引擎整合到S2SH框架中。采用MVC设计模式,这样降低层与层之间的联系,使系统的耦合度降低,增强代码的复用性,便于开发人员对后期功能的。 的扩展和维护。系统总体结构如图1所示。
2.2 系统设计的四层架构
Activiti5技术主要是针对以JavaEE为框架的这种多层结构的系统,然后对其中间层部分进行改进,将业务逻辑层独立为单独的一个层,把业务流程层嵌入到数据持久层和业务逻辑层间的中间,这样会有两个突出的优点:其一,业务流程层是独立的一个层,方便设计分析人员对工作流流程进行设计;其二,当业务需要变更,或者动态变化时,其他的层次操作都不会收到影响。
本系统采用的四层架构,分别有用户表示层,业务逻辑层,业务流程层,数据持久层。其中表示层,主要的功能是依据用户的请求进行页面跳转以及用户访问接口的实现,采用的设计模式是MVC模式,即模型(model)—视图(view)—控制器(controller),降低了系统的耦合性,可以把代码复用最大化,便于后期平台的扩展和维护。业务逻辑层的主要功能就是提供访问接口,它提供两个接口,一个是业务逻辑层接口,另外一个就是数据持久层的访问接口,来完成相关功能操作。业务流程层主要负责工作流中的活动管理和执行;数据持久层主要是负责相关数据的抽象化,可以完成对象映射等功能操作。
3 基于Activiti55的售后业务信息系统的实现
3.1 工作流数据库设计
Activiti数据库中表的命名方式都是以ACT_开始的。紧接着的部分是一个用例表的前两个字母来标识。此用例大体与服务API是匹配的。
ACT_RE_*:’RE’表示repository。带有这样前缀的表里面的内容是一些静态信息,如,流程的定义以及流程的资源(图片,规则等)。
ACT_RU_*:’RU’表示runtime。带有这样前缀的表所表示的是存储的是运行时的流程变量,比如用户任务,变量,等运行时的数据。实际上Activiti5存储的只是实例执行时的运行时数据,当流程实例结束时,将把这些记录删除。从而保证了这些运行时的表小并且速度快。
ACT_ID_*:’ID’表示identity。带有这样前缀的表存储的是一些标识的信息,如用户,用户组,等等。
ACT_HI_*:’HI’表示history。带有这样前缀的表所包含着的是一些历史的相关数据,如结束的流程实例,变量,任务,等等。
ACT_GE_*:带有这样前缀的表就是很普通数据,在各种情况都可能使用到的数据。
配置ProcessEngineConfiguration对象,主要定义数据库的连接配置和建表策略,配置文件码,主要代码如下: xmlns:context="http://www.springframework.org/schema/context" http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
3.2 工作流程图设计
该系统的业务流程图采用的是Activiti5 Modeler工具进行绘制的;这样业务流程以图形化的方式呈现出来,而且绘制过程完全符合 BPMN2.0规范的流程定义文件, 图 2所示为本系统中某任务的流程图。
使用 Activiti5 Modeler 绘制流程图后,它会自动生成相应的BPMN2。0 代码,上述工作流程图的关键代码片段如图 3 所示。
4 结语
本文通过对 Activiti5的集成应用进行了探讨,采用当前开源领域最流行的Activiti5引擎为研究对象,整合了Struts2、Spring、Hibernate三大集成框架,将用户界面、业务逻辑和数据访问分离开来,并在实际的具体的企业应用中整合Activiti5,让流程业务系统的耦合降低,系统的结构清晰,管理分工明确,增加了业务流程管理的便捷话和易操作化性。以公司的售后业务流程为例,给出了流程图的设计和部分的配置信息,其中业务流程的严格按照Activiti5标准,与传统开发相比,可以使业务人员独立进行流程设计,提高了业务流程需求变化时的响应速度和管理,让公司的信息化应用水平迈上以新的台阶。
参考文献
[1]王学伟.基于S2SH2和Fireflow工作流的办公自动化系统的设计与实现[D].武汉科技大学,2011.
[2]曹伟.面向办公自动化的工作流引擎研究和设计[D].南京理工大学,2013.
[3]郭伟锋.面向分布式工作流系统的Agent模型研究[D].昆明理工大学,2013.
[4]葛扬瑛.基于javaEE和工作流的项目申报系统的设计与实现[D].电子科技大学,2013.
[5] 吴志霞,陈平.基于S2SH的在线项目管理平台的设计与实现[J].计算机与现代化,2011,(8):49-51,189.
[6] 贾松浩,杨彩,刘军.基于S2SH框架的个性化实验室管理系统[J].实验室研究与探索,2014,(8):232-235.
[7]范新灿,赵明.基于Struts + Hibernate + Spring的轻量级架构开发应用研究[J].现代计算机(专业版),2010,(1):176- 179.
[8]姜 雷,基于JAVA技术的实验室管理系统的设计与实现[D],成都:电子科技大学,2012.
[9]杨钟鸣.基于SSH框架的社区管理信息系统设计[J].东华理工人学学报(自然科学版).2010.33(4):378-383.
作者简介
陈路路(1989-),女,河南省许昌市人。硕士学位。现供职于贵州大学。研究方向为网络技术。
周凤(1975-),女,贵州省贵阳市人。现为贵州大学副教授。研究方向为网络技术。
作者单位
贵州大学 贵州省贵阳市 550025