SpringBoot系列——Activiti7工作流引擎
前言
工作流程是我们日常开发项目中常见的功能,本文记录springboot整合activiti7。
Activiti介绍
数据库表
act_hi_*:'hi’表示 history,此前缀的表包含历史数据,如历史(结束)流程实例,变量,任务等等。
act_ge_*:'ge’表示 general,此前缀的表为通用数据,用于不同场景中。
act_evt_*:'evt’表示 event,此前缀的表为事件日志。
act_procdef_*:'procdef’表示 processdefine,此前缀的表为记录流程定义信息。
act_re_*:'re’表示 repository,此前缀的表包含了流程定义和流程静态资源(图片,规则等等)。
act_ru_*:'ru’表示 runtime,此前缀的表是记录运行时的数据,包含流程实例,任务,变量,异步任务等运行中的数据。Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。
| 表名 | 表注释 |
| act_ge_bytearray | 二进制数据表,存储通用的流程定义和流程资源。 |
| act_ge_property | 系统相关属性,属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录。 |
| act_re_deployment | 部署信息表 |
| act_re_model | 流程设计模型部署表 |
| act_re_procdef | 流程定义数据表 |
| act_ru_deadletter_job | 作业死亡信息表,作业失败超过重试次数 |
| act_ru_event_subscr | 运行时事件表 |
| act_ru_execution | 运行时流程执行实例表 |
| act_ru_identitylink | 运行时用户信息表 |
| act_ru_integration | 运行时积分表 |
| act_ru_job | 运行时作业信息表 |
| act_ru_suspended_job | 运行时作业暂停表 |
| act_ru_task | 运行时任务信息表 |
| act_ru_timer_job | 运行时定时器作业表 |
| act_ru_variable | 运行时变量信息表 |
| act_hi_actinst | 历史节点表 |
| act_hi_attachment | 历史附件表 |
| act_hi_comment | 历史意见表 |
| act_hi_detail | 历史详情表,提供历史变量的查询 |
| act_hi_identitylink | 历史流程用户信息表 |
| act_hi_procinst | 历史流程实例表 |
| act_hi_taskinst | 历史任务实例表 |
| act_hi_varinst | 历史变量表 |
| act_evt_log | 流程引擎的通用事件日志记录表 |
| act_procdef_info | 流程定义的动态变更信息 |
开发前准备
Idea安装actiBPM插件,用于绘制流程图

画流程图
创建bpmn文件,画一个简单的请假流程

代码编写
项目结构

引入依赖包
<!-- activiti -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M5</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-image-generator</artifactId>
<version>7.1.0.M5</version>
</dependency> <!--添加MySQL驱动依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency> <!-- thymeleaf模板 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
springboot整合的activiti,默认自带security框架,为了方便测试,我们直接用官方提供的config类

传统项目分层:controller层、service层

为了扩展、丰富原生的流程图生成器,创建自定义ProcessDiagramGenerator与ProcessDiagramCanvas

三个简单页面

1、流程发起,填写业务表单,发起一个请假流程

2、任务待办,查询指定用户的流程任务列表,并完成任务

3、查看流程,查询指定用户发起的流程列表,并查看实时流程图

效果演示
自动建表
数据库无相关表,启动程序,就会自动创建相关的表,共25张

注:自动创建的表中,act_re_deployment少两个字段,部署流程时报错,补全即可(VERSION_、PROJECT_RELEASE_VERSION_)

流程部署
单元测试,部署刚才的请假流程
import org.activiti.engine.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootActiviti7ApplicationTests { @Autowired
private RepositoryService repositoryService; /**
* 流程部署
*/
@Test
public void test() {
repositoryService.createDeployment()
.addClasspathResource("bpm/askForLeaveBpm.bpmn")
.name("请假流程")
.key("ASK_FOR_LEAVE_ACT")
.deploy(); System.out.println("流程部署成功!");
}
}
流程发起
http://localhost:10010/activiti/index
发起两个请假流程,一个1天、一个5天

查看流程
http://localhost:10010/activiti/getHistoricProcessInstanceByUserName?username=zhangsan
查看指定用户发起的流程

任务待办
http://localhost:10010/activiti/queryUserTaskByUserName?username=wangwu
查看任务待办,项目经理:lisi、部门经理:wangwu,并完当前成流程节点,流程会自动推进直至流程结束

流程结束
key1,请假小于3天,项目经理李四审批后流程直接结束
key2,请假大于3天,项目经理审批后,到部门经理审批,然后流程才结束


代码开源
代码已经开源、托管到我的GitHub、码云:
GitHub:https://github.com/huanzi-qch/springBoot
码云:https://gitee.com/huanzi-qch/springBoot
后记
简单的整合实例暂时先记录到这,后续有空再补充。
参考
https://www.cnblogs.com/xuweiweiwoaini/p/13660394.html
https://www.jianshu.com/nb/41785678
https://blog.csdn.net/zhouchenjun001/article/details/103629559
SpringBoot系列——Activiti7工作流引擎的更多相关文章
- SpringBoot系列: Pebble模板引擎
===============================Java 模板引擎选择===============================SpringBoot Starter项目向导中可选的J ...
- SpringBoot系列: Pebble模板引擎语法介绍
本文基于Pebble官方文档, 对pebble的语法做一些介绍. ===============================Pebble 官方资料========================= ...
- F2.Net工作流引擎系列索引
索引如下 F2工作流引擎遵循参考WFCM标准规范,符合中国国情特色,更轻量级的工作流引擎,支持多种数据库(mmsqlserver,mysql,oracle),有强大智能的组织模型接口可快速应用到任何基 ...
- SpringBoot系列之集成jsp模板引擎
目录 1.模板引擎简介 2.环境准备 4.源码原理简介 SpringBoot系列之集成jsp模板引擎 @ 1.模板引擎简介 引用百度百科的模板引擎解释: 模板引擎(这里特指用于Web开发的模板引擎)是 ...
- Activiti工作流引擎开发系列
Activiti工作流引擎开发系列-01 作者:Jesai 没有伞的孩子,只能光脚奔跑! 前言: 初次接触工作流这个概念是自从2014年11月份开始,当时是由于我的毕业设计需要,还记得当时我毕业设计的 ...
- 工作流引擎之Elsa入门系列教程之一 初始化项目并创建第一个工作流
引子 工作流(Workflow)是对工作流程及其各操作步骤之间业务规则的抽象.概括描述. 为了实现某个业务目标,需要多方参与.按预定规则提交数据时,就可以用到工作流. 通过流程引擎,我们按照流程图,编 ...
- Java工作流引擎节点接收人设置“按自定义SQL计算”系列讲解
关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单 拖拽式表单 工作流系统CCBPM节点访问规则接收人规则 适配数据库: o ...
- Java开源工作流引擎Jflow表单方案系列讲解一
关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单 拖拽式表单 表单方案介绍 适配数据库: oralce,mysql,sq ...
- 工作流引擎Activiti与SpringBoot2整合--开源软件诞生17
开源ERP技术整合系列--第17篇 用日志记录"开源软件"的诞生 [点亮星标]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redragon/r ...
随机推荐
- fianl关键词
一.final关键字概述 final关键字具有最终或不可改变的含义,可用于修饰类.变量.方法.因此被final修饰的类.变量.方法具有以下特征: --final修饰的类不能被继承: --final修饰 ...
- 你真的懂 i++ 和 ++i 吗?
对于 ++i 和 i++,许多人可能都知道,不就是先加1再取值,和先取值再加1嘛.然而,真的是这样吗?请先看以下4道题,能全部答对可以忽略这篇文章. 题目 // 示例1 int i = 1; i = ...
- 【LeetCode】52. N-Queens II(位运算)
[题意] 输出N皇后问题的解法个数. [题解] 解法一:传统dfs回溯,模拟Q放置的位置即可,应该不难,虽然能通过,但是时间复杂度很高. 解法二:位运算大法好! 首先要明白这道题里两个核心的位运算 1 ...
- 攻防世界 reverser secret-galaxy-300
secret-galaxy-300 school-ctf-winter-2015 运行程序 完全没有flag的身影呀 ida查看字符串 也没有相关信息 动态调试,看运行后内存信息 发现了一串字符 al ...
- 技术分享PPT整理(二):C#常用类型与数据结构
这篇博客起源于我对Dictionary.List.ArrayList这几个类区别的好奇,当时在改造公司的旧系统,发现很多地方使用了ArrayList,但我们平时用的多是泛型集合List,改造的时候要全 ...
- 全网最详细的Linux命令系列-cat命令
cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 命令格式: cat [选项] [文件].. ...
- CPU发展史和相关品牌介绍
CPU发展史和相关品牌介绍 CPU发展已经有40多年的历史了.我们通常将其分成 六个阶段. (1)第一阶段 (1971年-1973年) .这是4位和8位低档微处理器时代,代表产品是Intel 4004 ...
- BUAAOO第三单元总结
JML理论基础 JML规定了一些语法,用这些语法可以描述一个方法,一个类的行为,理论基础是离散数学吧 JML常用语法 前置条件: 使用 require + 表达式 ,表达式一般为布尔表达式 副作用: ...
- ret2dl64
ret2dl64 ret2dl64 与ret2dl32不同,ret2dl64需要知道libc. 检查保护: IDA看一看 read_got 被置为0,强制你使用ret2dlresolve. 我们先伪造 ...
- 在Visual Studio 中使用git——给Visual Studio安装 git插件(二)
在Visual Studio 中使用git--什么是Git(一) 第二部分: 给Visual Studio安装 git插件 如果要使用 git 进行版本管理,其实使用 git 命令行工具就完全足够了, ...