前言

  工作流程是我们日常开发项目中常见的功能,本文记录springboot整合activiti7。

  Activiti介绍

  官网:https://www.activiti.org

  数据库表

  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工作流引擎的更多相关文章

  1. SpringBoot系列: Pebble模板引擎

    ===============================Java 模板引擎选择===============================SpringBoot Starter项目向导中可选的J ...

  2. SpringBoot系列: Pebble模板引擎语法介绍

    本文基于Pebble官方文档, 对pebble的语法做一些介绍. ===============================Pebble 官方资料========================= ...

  3. F2.Net工作流引擎系列索引

    索引如下 F2工作流引擎遵循参考WFCM标准规范,符合中国国情特色,更轻量级的工作流引擎,支持多种数据库(mmsqlserver,mysql,oracle),有强大智能的组织模型接口可快速应用到任何基 ...

  4. SpringBoot系列之集成jsp模板引擎

    目录 1.模板引擎简介 2.环境准备 4.源码原理简介 SpringBoot系列之集成jsp模板引擎 @ 1.模板引擎简介 引用百度百科的模板引擎解释: 模板引擎(这里特指用于Web开发的模板引擎)是 ...

  5. Activiti工作流引擎开发系列

    Activiti工作流引擎开发系列-01 作者:Jesai 没有伞的孩子,只能光脚奔跑! 前言: 初次接触工作流这个概念是自从2014年11月份开始,当时是由于我的毕业设计需要,还记得当时我毕业设计的 ...

  6. 工作流引擎之Elsa入门系列教程之一 初始化项目并创建第一个工作流

    引子 工作流(Workflow)是对工作流程及其各操作步骤之间业务规则的抽象.概括描述. 为了实现某个业务目标,需要多方参与.按预定规则提交数据时,就可以用到工作流. 通过流程引擎,我们按照流程图,编 ...

  7. Java工作流引擎节点接收人设置“按自定义SQL计算”系列讲解

    关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单  拖拽式表单 工作流系统CCBPM节点访问规则接收人规则 适配数据库: o ...

  8. Java开源工作流引擎Jflow表单方案系列讲解一

    关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单  拖拽式表单  表单方案介绍 适配数据库: oralce,mysql,sq ...

  9. 工作流引擎Activiti与SpringBoot2整合--开源软件诞生17

    开源ERP技术整合系列--第17篇 用日志记录"开源软件"的诞生 [点亮星标]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redragon/r ...

随机推荐

  1. MySQL基础知识:MySQL Connection和Session

    在connection的生命里,会一直有一个user thread(以及user thread对应的THD)陪伴它. Connection和Session概念 来自Stackoverflow的一个回答 ...

  2. Envoy 部署类型

    目录 Envoy 网络拓扑及请求流程 1. 术语 2. 网络拓扑 3. 配置 4. 更高层的架构 5. 请求流程 1. Listener TCP 接收 2. 侦听器过滤器链和网络过滤器链匹配 3.TL ...

  3. MySQL的安装及使用

    安装MySQL 这里建议大家使用压缩版,安装快,方便.不复杂. 1.MySQL软件下载 mysql5.7 64位下载地址: https://dev.mysql.com/get/Downloads/My ...

  4. Joomla框架搭建&远程代码执行(RCE)漏洞复现

    一.漏洞描述 Joomla是一套内容管理系统,是使用PHP语言加上MYSQL数据库所开发的软件系统,最新版本为3.9.8,官网: https://downloads.joomla.org/,漏洞位于根 ...

  5. vue 快速入门 系列

    vue 快速入门(未完结,持续更新中...) 前言 为什么要学习 vue 现在主流的框架 vue.angular 和 react 都是声明式操作 DOM 的框架.所谓声明式,就是我们只需要描述状态与 ...

  6. Oracle 19c Data Guard DML Redirection ADG备库上执行DML重定向(未来更好的进行读写分离)

    资料来自官方网站: https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/managing-oracle-data-g ...

  7. Clang Static Analyzer-使用手册-编写Checker框架

    Clang Static Analyzer-使用手册-编写Checker Checker是这个工具的灵魂 有了checker才可以检查你的代码 相当于就是CSA通过checker定义的检查方法去检查代 ...

  8. 【Django学习笔记】-环境搭建

    对于初学django新手,根据以下步骤可以快速进行Django环境搭建 虚拟环境创建 使用virtualenv创建并启用虚拟机环境 ,关于virtualenv可参考https://www.yuque. ...

  9. C#与Python交互方式

    前言: 在平时工作中,需求有多种实现方式:根据不同的需求可以采用不同的编程语言来实现.发挥各种语言的强项 如:Python的强项是:数据分析.人工智能等 .NET 开发桌面程序界面比Python更简单 ...

  10. HUAWEI AppGallery Connect 正式发布移动端App,随时随地掌握应用动态

    华为应用市场AppGallery Connect应用一站式服务平台正式发布移动端App,帮助您随时随地查看应用信息,获取运营分析数据,接收重要消息通知,快速回复用户评论等,提升应用的运营管理效率,更便 ...