邹志敏
摘要:随着化学分析检测中心业务繁多和流程多变,工作越来越复杂繁琐,使得工作效率极低。Activiti工作流技术在自动化办公中得到很好的应用。根据分析测试系统的业务流程,利用Activiti工作流技术,动态部署业务流程,实现业务流程相关环节的问题,方便工作,提高工作效率。该文介绍了工作流技术、Activiti工作流引擎、SSH2框架及BPMN2.0规范,基于SSH2开源框架,选择Activiti对系统业务流程进行管理设计,采用MVC模式设计,使各个框架更加松耦合有效地结合在一起,适应灵活多变的业务流程。
关键词:Activiti工作流,SSH2框架,BPMN2.0规范,MVC模式
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)03-0122-03
Research on Key Technologies of Chemical Analysis and Ddetection System Based on Activiti
ZOU Zhi-min
(School of Information and Electronic Engineering,East China Institute of Technology, Nanchang 330013, China)
Abstract: With the chemical analysis and testing center business and process variable, the work is more and more complex, which makes the work efficiency is very low. Activiti workflow technology has been used in the automation of office. Based on the analysis of the test system of business process, use the activiti workflow technology, dynamic deployment business process, realize the business process related aspects of the problem, to facilitate the work, to improve work efficiency. In this paper, we introduce workflow technology, workflow engine activiti, SSH2 framework and bpmn2.0 specification, SSH2 based on open source framework, activiti of system business process management design, uses the MVC design pattern, make each frame more coupling Garzon effectively combined together, suitable for flexible business processes.
Key words: Activiti workflow; SSH2 framework; BPMN2.0 specification; MVC model
越来越多的企业使用 OA(办公自动化)系统来提高工作效率,即通过 OA 系统来实现各个成员和部门之间的协同办公、信息流转以及资源共享等[1]。在分析测试系统中,主要业务流程有合同评审、财务审批、样品受理、任务分配、检测报告审批等,随着化学检测中心业务的不断发展,业务需求灵活多变,传统的工作流很难适应变化,Activiti工作流的特点很好应用到其中,以Activiti工作流引擎为核心,将业务流程实现。使用图形可视化界面动态部署流程文件,使得业务人员可以根据需求动态设定和更改流程,适应灵活变动的业务需求,提高工作效率。
1 理论研究和关键技术
1.1 工作流技术
工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算[2]。工作流工作机制是对业务流程进行分析,设定各个活动执行人,利用流程设计器绘制流程规则,把信息传递下一活动执行人。工作流管理系统对工作流进行定义、部署到计算机上执行流程和管理工作流,对工作流的各个活动信息以及活动参与者进行协调工作。
1.2 Activiti引擎
Activiti引擎最大的优势是采用了PVM(流程虚拟机),支持除了BPMN2.0规范以外的流程格式,与外包服务有良好的集成能力,接口清晰[3]。能够快速稳定的对业务流程建模设计。容易注入到Sping容器中,方便集成。Activiti核心组件包括Activiti Engine 、Activiti Explorer、Activiti Modeler 和Activiti Designer 等。
Activiti Engine是用来执行以流程建模语言定义的流程,在Activiti项目中,BPMN2.0规范的流程文件部署到系统中,通Activiti Engine来解析。另外,Activiti Engine也对统计数据收集和工作流实例控制,如分发任务、管理事务、生成报表等。
Activiti Explorer 是Activiti提供的一个以web形式访问的应用程序。它可以提供流程设计、部署流程、流程流转、任务管理和数据监控等。
Activiti Designer 是一个Eclipse中的流程设计器插件,根据BPMN2.0规范和其他扩展元素来设计业务流程。通过图形可视化设计流程图生成流程文件,使流程设计人员能够更全面的配置和规范流程。
Activiti Modeler 是不同于Activiti Designer的流程设计器,它通过浏览器来设计基于BPMN2.0规范的流程。
1.3 BPMN2.0 规范
BPMN2.0规范定义了业务流程的符号以及模型,并且为流程设定了转换格式,目的是让流程的定义实现可移植性[4]。基于BPMN2.0规范使得业务流程模型设计简单且能够执行复杂的业务流程。BPMN2.0规范的五个元素流对象、数据、链接对象、泳道和制品让业务流程的全部参与人员可以对流程进行可视化管理,使得业务人员不依赖IT开发人员就可以对流程进行设计管理。BPMN2.0规范是通过定义了XML规范,在语法上对流程描述文件进行定义,这样使得流程文件应用更加广泛,针对目前各个领域的业务需求,在业务功能上提供了能够解决不同问题的工作流种类。
1.4 SSH2框架
SSH2框架是目前Java Web应用程序开发首选的开源集成框架,是由Struts2、Spring、Hibernate集成的轻量级框架。采用MVC设计模式,分为三层,表示层、业务层和持久层,可降低各层之间耦合度,减少开发复杂度,缩短开发周期,节省开发成本,提升软件质量[5]。Struts2负责业务跳转,Hibernate负责数据持久化,Spring负责查找、定位、创建和管理对象与对象之间的依赖。在表示层中,通过Jsp页面进行交互,由Struts控制请求和响应;在业务层中,Spring容器负责完成业务逻辑处理,同时提供事务处理、缓冲池来保证数据的完整性和系统的性能;在持久层中,hibernate对象化映射和数据库交互,处理请求和响应数据。SSH2框架实现了视图、控制器和模型的分离,同时把持久层和业务层也分离处理,使结构清晰,方便开发和调试,更适应于团队开发,提高了开发效率。由于Struts2、hibernate和Spring框架是开源的,可供参考的代码和良好的设计模式,有利于快速开发项目,提高系统可维护性、可扩展性处理效率。SSH2结构图如图1:
图1 SSH2结构图
2 基于Activiti 的分析测试系统实现
2.1 分析测试系统的业务需求
流程引擎的主要应用是对业务流程分析设计。分析测试系统的主要业务流程包括合同送审、样品受理流转、任务分配、原始记录单和检测报告审核等。客户送来水样检测,首先在业务办签订合同,合同评审通过后才进行样品受理,成功后业务部下达任务到各个检测室进行项目检测,样品检测完后记录原始数据,检测室把数据发给业务办来做检测报告,报告出来后进行审核,审核通过后,再把检测报告发给客户。通过对业务流程的分析,利用流程设计器,根据BPMN2.0规范,设计流程各个活动环节的信息和参与人员,使业务逻辑在计算机上执行。分析测试系统业务流程图如图2:
图2 分析测试系统的业务流程图
2.2 系统的设计
系统结构采用B/S模式设计,基于MyEclipse10开发平台,使用Struts2+Hibernate+Spring+EasyUI集成的Web轻量级架构,结合Ajax、jQuery等前端开发技术,且把Activiti工作流引擎应用到SSH2框架中。采用MVC三层架构设计模式,实现图形界面化部署定义流程,若业务需求改变时,只要把新的流程部署到系统中,就可实现新的业务,不需要再修改系统。
1)表现层是用户通过浏览器访问应用程序。使用Struts2和Jsp作为表现层页面,结合jQuery和Ajax技术,用于人机交互。
2)在业务层中,Struts2拦截用户的请求到Action业务控制器中,通过Spring容器中的listener监听器获取到业务数据,再把数据给Service层处理,利用Service层操作Dao层,Dao层与数据库进行增删改查操作,最后把响应数据交给表现层。其中Activiti的工作流引擎配置文件本质也是一种Spring配置文件,Activiti引擎用于处理所有与流程相关的数据操作,将Activiti工作流引擎交给Spring容器管理,Spring能够控制反转(IoC)和面向切面(Aop),容易实现事务管理和Bean的注入等特性。Hibernate实现数据访问,对底层访问数据库代码进行封装,使开发更面向对象化,移植性好,用于解决不同数据库异构问题。
3)数据层是基于SQLserver2008数据库,把工作流从部署开始到结束流程所生成的全部数据进行相对应的保存。Activiti有自己的数据表,表的命名与服务接口命名方式基本相同,从功能上划分为5大部分,包括身份数据表、运行时数据表、流程存储表、通用数据表和历史数据表,表头都是以ACT开始,中间是一到两个字符来标识用例,例如ACT_ID_*,ID代表identify,表示用户、用户组等信息。
2.3 检测报告审核流程实例
业务办根据原始数据做出检测报告,然后送到检测室负责人进行审批,审批通过后流转到技术负责人审批,再送到质量负责人审批,最后流转到主任审批。若未通过,进行逐级驳回。
1)绘制流程图。根据BPMN2.0规范,通过Activiti Designer插件绘制检测报告流程图。检测报告审批流程图如图3:
图3 检测报告审批流程图
2)部署流程定义文件,利用ActivitiDesigner把基于BPMN2.0规范的流程文件和流程图文件一起打包,通过系统上传进行部署。利用流程引擎提供的repositoryService接口将打包好的流程定义文件部署到Activiti引擎中,关键代码如下:
ZipInputStream zipInputStream =new ZipInputStream(new FileInputStream(upload));
processEngine.getRepositoryService().createDeployment().addResourcesFromZipInputStream(zipInputStream).deploy();
3)启动流程实例。部署好流程文件后,把processEngine注入到工作流引擎中,利用Activiti的API读取流程定义文件开启流程实例,启动检测报告流程代码如下:
Map
variablesMap.put("application", application);
String pdKey = application.getApplicationTemplate().getProcessDefinitionKey();
ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey(pdKey, variablesMap);
4)审核流程。当有任务处理时候,登录系统后会有任务提醒,不同的审核人登录后,可以得到待办任务列表进行审核,同时加入邮件和短信提醒,更加提高工作效率,关键代码如下:
Task task =processEngine.getTaskService()//
.createTaskQuery().processInstanceId(pi.getId()).uniqueResult();
processEngine.getTaskService().completeTask(task.getId());
2.4 结果分析
通过上述框架的整合设计,Activiti工作流引擎很好的应用到分析检测系统当中,当业务流程需求变动时,根据新的需求,利用流程设计器设计新的业务流程图,只需要在系统中部署的新的流程文件,添加版本控制,新的流程模型就会替换旧的流程模型,不需要改变系统就可实现动态改变业务流程。还可以查看流程状态,大大提高工作效率。流程文件部署效果如图4:
图4 流程部署效果图
3 结束语
本文基于化学分析检测系统的需求,针对目前存在的问题,以Activiti工作流引擎为核心,集成Struts2、Spring、Hibernate框架,将表现层、业务层和持久层进行分离,降低流程业务系统的耦合度,使业务需求发生变化时,只需要把新的流程动态部署到流程系统中,提高了业务流程管理的方便性和灵活性。以分析测试系统中的检测报告流程为例,给出了核心技术,实现了基于Activiti标准的业务流程。与传统流程系统开发相比较,Activiti工作流引擎解决了业务需求灵活变动问题,同时流程设计器提供了简单易懂的图形设计和能够解决复杂业务流程的功能,方便业务人员独立进行流程设计,大大提高了工作效率。
参考文献:
[1] 施俊,李艳会. Activiti工作流技术在OA系统中的研究与实现[J]. 软件导刊,2014(12):52-54.
[2] 徐亦楠,葛志辉,潘海源. Activiti5工作流在OA系统中的应用[J]. 大众科技,2014(1):5-7,11.
[3] 任铭亮,杨之垚,高永祥. 基于Activiti的工作流引擎在中小企业中的应用研究[J]. 中国高新技术企业,2015(11):51-53.
[4] 杨恩雄. 疯狂Workflow——基于Activiti的工作流应用开发[M].北京:电子工业出版社,2014.
[5] 高亮,刘旸,宗传玉. 基于SSH2与JBPM的OA系统应用与研究[J].微处理机,2011(8):38-40.