由于工作需要,需要实现自定义审核流程,就查找资料实现,这是我实现的步骤。

Activiti官方网站:http://activiti.org/download.html

一、idea安装activiti

地址: https://plugins.jetbrains.com/

搜索: actiBPM

二、使用activiti

将bpmn文件放到resources下的processes下,springboot启动时会自动部署

2.1 在resource下面创建BpmnFile文件


id要唯一

2.2 添加图标

鼠标左键拖拽StartEvent到界面上,同样再弄几个其他图标

2.3 生成图片

右键进行改名,把后缀改为.xml结尾


然后在改成的xml文件上面右键点击show BPMN 2.0Designer…


出现这个界面点击箭头指的图标,选择项目的resourcr文件夹(或者再在下面创建一个文件),把生成的.png图片存储进去

2.4 图片的中文乱码问题

可能生成的图片会有中文乱码问题,如下解决:
不过如果有中文会出现乱码,需要在这两个文件下的后面都加上-Dfile.encoding=UTF-8


然后重启IDEA,把原来的PNG图片删掉,再生成一次就不会出现乱码了

将bpmn文件放到resources下的processes下,springboot启动时会自动部署

三、springboot项目整合activiti

3.1 依赖

 <!-- mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- Activiti  各个依赖的版本要一致要不然启动不了的--><!--  Activiti 启动器--><dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter-basic</artifactId><version>5.23.0</version><exclusions><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></exclusion></exclusions></dependency><!-- Activiti 流程图--><dependency><groupId>org.activiti</groupId><artifactId>activiti-diagram-rest</artifactId><version>5.23.0</version></dependency><!-- Activiti 在线设计--><dependency><groupId>org.activiti</groupId><artifactId>activiti-modeler</artifactId><version>5.23.0</version></dependency><!--    <dependency><groupId>org.activiti</groupId><artifactId>activiti-engine</artifactId><version>5.23.0</version></dependency>-->

3.2 解决中文乱码需要添加一个配置类

import org.activiti.spring.SpringProcessEngineConfiguration;
import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer;
import org.springframework.context.annotation.Configuration;/*** activiti的配置类* 解决activiti的中文乱码问题* * @author lc* @version 1.0* @date 2022/4/27 9:32*/
@Configuration
public class ActivitiConfig implements ProcessEngineConfigurationConfigurer {@Overridepublic void configure(SpringProcessEngineConfiguration springProcessEngineConfiguration) {springProcessEngineConfiguration.setLabelFontName("宋体");springProcessEngineConfiguration.setActivityFontName("宋体");}}

3.3 application.yml配置

spring:datasource:username: rootpassword: 123456url: jdbc:mysql://localhost:3306/spbt-activiti7?nullCatalogMeansCurrent=truedriver-class-name: com.mysql.cj.jdbc.Driverdevtools:restart:enabled: true  #设置开启热部署activiti:database-schema-update: truehistory-level: fulldb-history-used: truecheck-process-definitions: false  # 是否开启自动部署,false表示不开起# process-definition-location-prefix: classpath:/processes/   # 自动部署的时候打开这个async-executor-activate: false     # 启用异步执行器job-executor-activate: false      # 启用作业执行器 

配置解释


- database-schema-update配置项可以设置流程引擎启动和关闭时数据库执行的策略,database-schema-update有以下四个值:false:false为默认值,设置为该值后,Activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配时,将在启动时抛出异常。
true:设置为该值后,Activiti会对数据库中所有的表进行更新,如果表不存在,则Activiti会自动创建。
create-drop:Activiti启动时,会执行数据库表的创建操作,在Activiti关闭时,执行数据库表的删除操作。
drop-create:Activiti启动时,执行数据库表的删除操作在Activiti关闭时,会执行数据库表的创建操作。- history-level对于历史数据,保存到何种粒度,Activiti提供了history-level属性对其进行配置。history-level属性有点像log4j的日志输出级别,该属性有以下四个值:none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。-db-history-used为true表示使用历史表,如果不配置,则工程启动后可以检查数据库,只建立了17张表,历史表没有建立,则流程图及运行节点无法展示。

3.4 启动,会自动生成25张表到数据库中


各个表的含义:

 ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
ACT_GE_*: 通用数据, 用于不同场景下。

3.5 启动报错解决

3.5.1 问题一:java.io.FileNotFoundException:

class path resource [org/springframework/security/config/annotation/authentication/configurers/GlobalAuthenticationConfigurerAdapter.class] cannot be opened because it does not exist


解决办法:

启动项上方@SpringBootApplication注解里面加exclude = SecurityAutoConfiguration.class


@SpringBootApplication(exclude = SecurityAutoConfiguration.class)

注意:SecurityAutoConfiguration.class导入的包是 activiti的

正确的import org.activiti.spring.boot.SecurityAutoConfiguration;
错误的:import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration

3.5.2 问题二、java.lang.ClassNotFoundException:

org.activiti.bpmn.model.AdhocSubProcess

这是由于activiti在pom中的依赖版本不一致,要填写一致版本的依赖

3.5.2 问题三、Table ‘newsell.act_ge_property’ doesn’t exist

在mysql的连接字符串上加上nullCatalogMeansCurrent=true

spring:datasource:username: rootpassword: rooturl: jdbc:mysql://localhost:3306/newsell?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=true&nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driver

3.6 按照使用activiti的方法操作一遍得到正常的就说明对了

流程文件部署,部署方式分为两种:自动部署和手动部署【有时候自动部署不会成功】
自动部署:将bpmn文件放到resources下的processes下,springboot启动时会自动部署,部署对应的表为:act_re_deployment;
手动方式部署:在maven项目的测试文件夹下,新建测试类(TestActiviti),并编写测试方法,进行流程文件部署,部署代码如下;

import org.activiti.engine.RepositoryService;// 手动方式部署
@Autowiredprivate RepositoryService repositoryService;@GetMapping("/test")public void test(String[] args) {Deployment deployment = repositoryService.createDeployment().name("测试流程文件部署").addClasspathResource("processes/test001.bpmn").addClasspathResource("processes/test001.png").deploy();System.out.println("部署id为:"+deployment.getId());System.out.println("部署名称为:"+deployment.getName());}

四、使用activiti

https://blog.csdn.net/weixin_40991408/article/details/89027783

Activiti的使用 idea的bpmn插件相关推荐

  1. python activiti bpmn_Activiti 用户指南(BPMN 2.0介绍)

    BPMN 2.0介绍 定义流程 创建一个新的XML文件并为其命名,确保文件以.bpmn20.xml或.bpmn结尾,否则引擎将不会选择该文件进行部署. BPMN 2.0模式的根元素是definitio ...

  2. 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot

    本篇学习笔记是观看黑马程序员Activiti7视频而得 Activiti7 一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是" ...

  3. activiti jsp 流程设计器_「Activiti精品 悟纤出品」Activiti插件来助你一臂之力 - 第327篇...

    ​ 相关历史文章(阅读本文前,您可能需要先看下之前的系列 ) 国内最全的Spring Boot系列之三 2020上半年发文汇总「值得收藏」 程序CPU占用率飙升,如何定位线程的堆栈信息?「超详细,值得 ...

  4. Activiti实战. 导读

    实 战 Activiti实战 闫洪磊 著   为什么要写这本书 2011年年末,公司承接了一个保险类的业务系统,包含处理核心业务的ERP系统以及日常办公的OA系统,很明显这两种类型的系统都离不开工作流 ...

  5. Activiti工作流之实现一个简单的流程审批

    该代码在上一篇博客的基础上开发. Activiti工作流入门 1.绘制bpmn流程图 在resources目录下新建一个diagram文件夹来存放我们绘制的bpmn流程图 由于我的IDEA中已经安装了 ...

  6. java activiti jbpm_activiti和jbpm工作流引擎哪个比较好?

    原标题:activiti和jbpm工作流引擎哪个比较好? 在常用的ERP系统.OA系统的开发中,工作流引擎是一个必不可少的工具.之前在选择工作流引擎时曾经在activiti和jbpm之间有过比较,当时 ...

  7. activity idea编写bpmn流程文件

    idea 的bpmn插件支持不好, 1.画流程图,注意排他网关流程的条件, 2.复制一份xml文件出来, 头部替换: <?xml version="1.0" encoding ...

  8. java activiti_《Activiti实战》PDF 下载

    图书目录: 本书推荐 前言 第一部分 准备篇 第1章 认识Activiti 1.1 什么是Activiti 1.2 工作流基础 1.2.1 什么是BPM 1.2.2 工作流生命周期 1.2.3 什么是 ...

  9. 【activiti】activiti入门

    activiti入门 在本章内容中,我们来创建一个Activiti工作流,并启动这个流程. 创建Activiti工作流主要包含以下几步: 1.定义流程,按照BPMN的规范,使用流程定义工具,用流程符号 ...

最新文章

  1. 在汇编程序中调用C语言的库函数,h转inc
  2. spring和springMVC的面试问题总结
  3. python 用if判断一个数是不是整数_五天学会Python基础02(下)
  4. servlet基础总结
  5. Python-Learn
  6. R︱Linux+Rstudio Server尝鲜笔记(打造最佳Rstudio体验+报错的解决方案)
  7. linux内核分析及应用 -- 中断机制
  8. Fragstats运行内存不够或卡顿问题解决
  9. Windows 10 : 使用BCDboot恢复双系统启动
  10. 自然语言处理技术的一些应用
  11. c语言中fabs是什么意思,c语言fabs是什么意思
  12. 武汉轻工大学计算机学院宿舍,武汉轻工大学有几个校区及校区地址 哪个校区最好...
  13. 知乎关键词排名,知乎关键词排名置顶第一的方法
  14. 体会大师们的智慧-折半查找二分查找)
  15. 如何成为一名好的程序员
  16. Linux Power supply子系统分析之一
  17. Flutter之Card组件
  18. 软考信息系统项目管理师全真模拟题(含答案、解析)
  19. Final Cut Pro 10.4.9中文版
  20. Web容器(一):Web容器简介

热门文章

  1. 医疗软文如何营销才能打动人心
  2. Libreoffice php使用命令行office转pdf,pdf转图片
  3. 2021-05-29Leetcode114.二叉树展开为链表
  4. Facebook开源Linux内核组件和工具:BPF、Btrfs、Netconsd、Cgroup2、PSI、Oomd
  5. 如何写出更加契合浙大MBA项目提面申请资料?
  6. Tidb简介与应用实践
  7. NUS学习之神经网络理论
  8. socket编程TCP程序
  9. clean后class文件全部丢失_大数据专家,详解HadoopMapReduce处理海量小文件:压缩文件
  10. netty socket超时设置_彻底搞懂 netty 线程模型