基于Activiti工作流管理平台的研究

2022-03-25 08:00于海浩黄成哲
黑龙江工程学院学报 2022年1期
关键词:业务流程实例流程

于海浩,黄成哲,孙 栩

(黑龙江工程学院 计算机科学与技术学院,哈尔滨 150050)

目前,信息化已经广泛地融入人们的日常工作中。人们通过信息系统提高了工作效率,但在实际工作中经常遇到部门或者岗位调整,管理流程需要优化的情况[1]。而这种业务流程变更需要修改信息系统程序,即增加了系统的运维成本,又影响开发效率[2]。针对这一问题,工作流技术的引入是解决上述问题的良好方案。

文中采用目前广泛应用的开源工作流Activiti[3]作为工作流引擎,在深入研究其内部架构和设计思路基础上,结合SpringBoot等web开发技术,设计了一个工作流管理平台,该平台屏蔽业务流程修改对信息系统的影响,减少业务流程和业务逻辑的耦合度,提高系统的健壮性和稳定性。

1 系统框架

1.1 总体框架

该平台使用SpringBoot[4]、SpringMVC[5]、Mybatis[6]等作为平台的主体框架。整体框架如图1所示,其中,数据库采用MySQL,用来保存工作流实例的运行数据和历史数据以及相应业务系统的业务数据。持久层采用Mybatis,主要实现对数据库的增、删、改、查操作,并实现对象关系映射。业务逻辑层是系统的核心,利用SpringBoot将SpringMVC、Activiti工作流引擎、安全认证(Apache Shiro)框架整合在一起,共同完成业务逻辑。视图层系统使用Bootstrap结合Thymeleaf框架,利用html相关技术,提供用户与系统的交互界面,Activiti Modeler是图形化业务流程设计器。

图1 系统总体框架

1.2 具体实现

1.2.1 流程设计器

如图2所示,流程设计器系统采用Activiti Modeler,它是基于Angular的web流程图形化设计器,主要用于保存业务流程模型注解(Business Process Modeling Notation,BPMN)规范相关的对象,例如将模型转换为相应的流程图对象。业务人员可以利用流程设计器进行在线工作流程图设计。流程设计器完全符合BPMN2.0规范,BPMN是业务流程模型的一种国标标准图形注解,通过提供给用户容易理解的标准图形符号,完成从创建业务流程到实现流程以及监控流程的全过程设计和运行管理[7]。 文中的流程设计器标准符号如表1所示。

图2 流程设计器

表1 流程设计器标准符号

1.2.2 工作流引擎

工作流引擎的主要工作是流程部署、流程解析、流程实例化和流程跳转[8-10]。Activiti工作流引擎的实例对象是ProcessEngine,提供7个接口,开发者可以通过GetXXXService获得相应的接口实例,具体功能如表2所示。

表2 工作流引擎接口

1.2.3 Activiti工作流与SpringBoot整合

Activiti工作流与SpringBoot的整合主要过程如下:

1)在SpringBoot工程中引入Activiti需要的相关依赖。利用maven的项目对象模型自动从maven中央资料库中下载相关依赖包,具体内容如下:

2)导入Activiti需要的数据库环境。首先将Activiti需要的数据库表导入到MySQL数据库,并在工程application.xml文件中配置数据库的链接,具体内容如下:

spring:

datasource:

type: com.alibaba.druid.pool.DruidDataSource

driverClassName: com.mysql.cj.jdbc.Driver

druid:

master:

url: jdbc:mysql://localhost:3306/ry_act6?useUnicode=true&character

Encoding=utf8

username: root

password: 123456

3)整合Activiti与系统的角色和用户权限。Activiti支持的用户、角色功能比较简单,不符合系统的权限管理要求,平台利用Apache shiro安全框架重新开发了角色和用户权限管理功能。因此,删除了Activiti数据库中自带的act_id_group、act_id_membership、act_id_user 3个表,建立3个同名和结构的视图,与系统自建的用户与权限管理功能进行关联。

4)实例化工作流引擎和其它的接口实例。平台利用SpringBoot的依赖注入功能在系统启动时实例化ProcessEngine和其它的接口实例,利用SpringMVC架构实现Model层、Controler层到Service层的整合开发,实现包括创建流程图、发布流程、启动流程、查询代办任务、领取任务、任务处理和查询历史任务的核心功能,如图3所示。

图3 Activiti与SpringBoot整合过程

2 应用验证

由平台总体架构和具体实现可知,业务流程定义与流程的流转是在Activiti工作流中进行,并与具体业务逻辑处理分开。业务逻辑处理节点不需要知晓流程执行到哪一步、如何根据条件进行下一步流程的流转,业务逻辑只负责给Activiti工作流传递当前业务处理中的审批参数,例如:是否同意等条件。工作流根据当前节点的审批参数自行判断怎样进行工作流程的流转,例如:修改请假流程,对原来的请假流程进行修改,增加一个审批节点即总经理审批。具体验证过程如下:

1)利用流程设计器修改业务流程,增加总经理审批任务节点,将总经理审批任务节点的处理人角色定义为总经理角色,流转条件定义为同意或不同意的布尔条件。对修改流程进行重新发布,如图4所示。

图4 请假业务流程修改

2)在系统中增加总经理角色和总经理角色的登陆用户,如图5所示。

图5 增加角色和登陆用户界面

3)申请人重新申请请假业务,如图6所示,点击第一条记录中的进度查看按钮,出现图形化的审批进度,其中,绿色框表示已经通过的审批节点,从审批进度中可以看到部门领导和人事部门已经审批通过,当前流程是总经理审批(系统用红字框表示)。从本示例可知,业务流程的修改没有进行任何代码修改,消除了业务流程的变更对业务逻辑的影响。

图6 平台界面展示示例

3 结束语

文中实现了一个基于Activiti的工作流管理平台,利用SpringBoot、SpringMVC与Activiti的整合,实现了从图形化界面设计与发布流程、流程启动到相应业务处理的全过程管理。业务流程变更只需要重新修改业务流程设计、改变用户角色、修改用户角色与任务和流转条件之间的关系即可满足用户的要求。实际应用证明,该平台具有一定的通用性,可以针对不同的业务设计多个业务流程,业务流程与业务逻辑耦合性低,具有快速适应业务流程变化的能力。

猜你喜欢
业务流程实例流程
吃水果有套“清洗流程”
企业财务管理、业务流程管理中整合ERP之探索
互联网+背景下物流公司的业务流程再造
违反流程 致命误判
建设项目全过程造价管理咨询服务的业务流程分析
基于财务业务流程再造的ERP信息系统构建探析
本刊审稿流程
析OGSA-DAI工作流程
完形填空Ⅱ
完形填空Ⅰ