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

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. 系统时间、时区、字符集
  2. 微软考虑将 Python 作为 Excel 官方脚本语言
  3. Python基础教程:元组详细使用
  4. 优美的Fibonacci数列与矩阵
  5. 推动Windows的限制:USER和GDI对象 - 第2部分
  6. PhotoZoom专业版-图像无损放大工具
  7. mysql jpa 正则_Spring Data JPA 实例查询
  8. 微信公众号 分享接口 签名通过 分享无效果(JSSDK自定义分享接口的策略调整)...
  9. 2014年5月第二个周末总结--保守自己的心
  10. 电脑小技巧:怎么设置默认浏览器
  11. LearnOpenGL - 纹理贴图 源代码
  12. mobi格式转换成pdf格式
  13. Python自动批量删除微博
  14. Temporary ASP.NET Files 写访问权限
  15. ps大图缩小让小图更清晰
  16. A40i/T3修改根分区大小
  17. 宝哥说币|近期爆火的项目Trister′s Lend究竟有什么发展潜力和前景?
  18. ORB-SLAM2代码解析
  19. 如何让网站在360搜索结果中显示“官网”标志?
  20. Source Insight 4.0安装

热门文章

  1. sai linux下载地址,Linux下beego及beego相关插件安装
  2. 这27个电源符号别再分不清
  3. StringBuffer的用法1
  4. Java学习笔记——StringBuilder
  5. 避免劣化代码(No Inferior Code)之一
  6. BIM轻量化引擎—广联达BIMFACE功能测评(一)
  7. 神经网络计算机硬件,人工神经网络的硬件设计研究
  8. 域名服务器中存放主机的什么位置,域名服务器中存放主机的域名
  9. 在线天气预报调用插件
  10. MDK5.25以上版本解决j-link “the connected j-link is defective“ 问题