企业管理系统集成Activiti工作流引擎的研究

2019-11-17 04:05付晓明
电脑知识与技术 2019年26期
关键词:Java语言

付晓明

摘要: 实例讲解如何集成activiti工作流引擎到SpringMVC、Hibernate框架下的业务管理系统中,并脱离activiti的用户、表单模块,使用独立设计的用户角色模型、表单模型设置流程节点,方便业务系统的用户模型和表单模型升级。

关键词: activiti ;工作流引擎;Java语言

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2019)26-0235-02

开放科学(资源服务)标识码(OSID):

企业业务管理系统包含了各种审批流程,所以必须集成工作流引擎以完成审批功能,Activities作为开源的工作流引擎被广泛应用到各业务系统,使业务系统更加专注于复杂业务逻辑的设计与实现,同时工作流引擎的开源特性也使系统在工作流引擎的优化升级简单快捷。

1需求背景

本管理系统采用J2EE开发架构,包括SpringMVC及Hibernate,WEB前端使用的dwzUI、JQuery。由于Activiti的用户与表单模型无法满足本系统要求,故使用本系统的用户角色管理模块和表单管理模块与工作流集成,达到在任意流程节点上灵活设置角色与表单的效果。

2集成方法

2.1创建数据库

由于工作流引擎自带一套数据库表,需要使用引擎提供的sql文件在业务系统数据库中生成这些表,引擎提供了各种类型数据库的脚本,本系统选择的是oracle的sql文件,集成的Activiti是5.15版本,源码中找到database\activiti.oracle.create.history.sql文件,并在oracle中生成表,因为本系统不使用工作流自带的用户模型,所以不需要执行脚本activiti.oracle.create.identity.sql。

2.2配置XML文件

本系统采用SpringMVC框架,将Activiti的配置文件引入到applicationContext.xml中,activiti.xml放到resources下,并处理节点中文乱码问题。

本系统使用Maven管理项目,需要将所有jar包上传到maven-jar路径下,在pom.xml文件节点中增加activiti、batik的jar包,用于支持流程引擎和图形设计器Activiti-Modeler ,实现在线浏览器编辑流程,Activiti Modeler内部的实现上还是以oryx为图形组件为内核,用angular.js作为界面基本元素的基础组件以及调度oryx的API。

2.3上传依赖文件

解压activiti-explorer.war文件,将其中的api、editor、explorer、libs文件夹依次上传到webapp目录下,并将WEB-INF\classes下的editor.html、stencilset.json文件放到resources目录下,activiti的jar包在activiti的lib目录下,batik的jar包在sactiviti-explorer解压后的WEB-INF\lib下,都需要拷贝到maven-jar路径下。至此,所有开发环境及准备工作都已完成。

3流程管理

为了适应流程随着业务变动而变化,满足业务人员对流程进行增删改操作。本系统中设计了流程管理模块,能够实现在线流程设计、任务节点处理人及表单设置、流程启用、流程查詢等功能。

首先,在系统中创建流程模型的实体类,通过web.xml文件中配置的流程设计器重定向功能,调用流程设计器在线设计流程,流程模型的属性必须包含流程KEY、流程名称,在设计器中必填的ID、流程唯一标识一般与流程KEY相同,设计完成保存流程后,引擎自动生成一个XML文件和一个流程图片,xml文件名是流程名称.bpmn20.xml,图片名是流程名称.流程KEY.png,这两个文件都以blob的格式保存在ACT_GE_BYTEARRAY表中,表ACT_RE_MODEL中保存的是模型信息,当设计完模型后,就可以调用repositoryService.saveModel(模型对象)来生成一个流程定义,相当于发布了一个新版本的流程定义,同时在表ACT_RE_DEPLOYMENT、ACT_RE_PROCDEF中各生成一条数据,表示当前最新的流程定义,有用户发起该流程时,使用的也是最新的流程定义。

流程定义都设置好后,该流程还需要设置表单和处理人,本系统的设计支持各任务节点独立设置表单和处理人,通过读取bpmn20.xml文件,解析流程的节点信息,展示到页面中,对每个节点进行设置,如图1:

在这里可以为每个节点设置表单、用户角色和处理人过滤功能。用户角色成员都包含服务部门属性,可以通过过滤设置,对指定节点设置处理人员范围,例如按起草人过滤、按上一节点处理人过滤、按参数过滤等,其中按起草人过滤最常用,在流程流转的时候,可以通过获取流程定义次节点的处理人角色的设置,筛选出来用户,流程根据用户信息进行流转,为任务节点设置处理人。代码如下:

这样就可以脱离activiti的用户和表单模型,设计符合本系统需求的用户角色模型和表单模型。使用当前web前端技术,设计出来表单设计器,使用户在浏览器中拖拽web控件,就可以设计简单表单(无复杂业务逻辑),在用户启动流程的时候,调用activiti提供的接口即可。

4结语

至此,完成activit工作流引擎与业务管理系统的集成,并使用模块化设计,成了一个独立于任何业务支持工作流引擎管理的系统框架。

【通联编辑:唐一东】

猜你喜欢
Java语言
Java语言图形编程工具的设计及应用
Android手机三轴加速度传感器使用