Activiti的使用 idea的bpmn插件
由于工作需要,需要实现自定义审核流程,就查找资料实现,这是我实现的步骤。
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插件相关推荐
- python activiti bpmn_Activiti 用户指南(BPMN 2.0介绍)
BPMN 2.0介绍 定义流程 创建一个新的XML文件并为其命名,确保文件以.bpmn20.xml或.bpmn结尾,否则引擎将不会选择该文件进行部署. BPMN 2.0模式的根元素是definitio ...
- 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot
本篇学习笔记是观看黑马程序员Activiti7视频而得 Activiti7 一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是" ...
- activiti jsp 流程设计器_「Activiti精品 悟纤出品」Activiti插件来助你一臂之力 - 第327篇...
相关历史文章(阅读本文前,您可能需要先看下之前的系列 ) 国内最全的Spring Boot系列之三 2020上半年发文汇总「值得收藏」 程序CPU占用率飙升,如何定位线程的堆栈信息?「超详细,值得 ...
- Activiti实战. 导读
实 战 Activiti实战 闫洪磊 著 为什么要写这本书 2011年年末,公司承接了一个保险类的业务系统,包含处理核心业务的ERP系统以及日常办公的OA系统,很明显这两种类型的系统都离不开工作流 ...
- Activiti工作流之实现一个简单的流程审批
该代码在上一篇博客的基础上开发. Activiti工作流入门 1.绘制bpmn流程图 在resources目录下新建一个diagram文件夹来存放我们绘制的bpmn流程图 由于我的IDEA中已经安装了 ...
- java activiti jbpm_activiti和jbpm工作流引擎哪个比较好?
原标题:activiti和jbpm工作流引擎哪个比较好? 在常用的ERP系统.OA系统的开发中,工作流引擎是一个必不可少的工具.之前在选择工作流引擎时曾经在activiti和jbpm之间有过比较,当时 ...
- activity idea编写bpmn流程文件
idea 的bpmn插件支持不好, 1.画流程图,注意排他网关流程的条件, 2.复制一份xml文件出来, 头部替换: <?xml version="1.0" encoding ...
- java activiti_《Activiti实战》PDF 下载
图书目录: 本书推荐 前言 第一部分 准备篇 第1章 认识Activiti 1.1 什么是Activiti 1.2 工作流基础 1.2.1 什么是BPM 1.2.2 工作流生命周期 1.2.3 什么是 ...
- 【activiti】activiti入门
activiti入门 在本章内容中,我们来创建一个Activiti工作流,并启动这个流程. 创建Activiti工作流主要包含以下几步: 1.定义流程,按照BPMN的规范,使用流程定义工具,用流程符号 ...
最新文章
- 在汇编程序中调用C语言的库函数,h转inc
- spring和springMVC的面试问题总结
- python 用if判断一个数是不是整数_五天学会Python基础02(下)
- servlet基础总结
- Python-Learn
- R︱Linux+Rstudio Server尝鲜笔记(打造最佳Rstudio体验+报错的解决方案)
- linux内核分析及应用 -- 中断机制
- Fragstats运行内存不够或卡顿问题解决
- Windows 10 : 使用BCDboot恢复双系统启动
- 自然语言处理技术的一些应用
- c语言中fabs是什么意思,c语言fabs是什么意思
- 武汉轻工大学计算机学院宿舍,武汉轻工大学有几个校区及校区地址 哪个校区最好...
- 知乎关键词排名,知乎关键词排名置顶第一的方法
- 体会大师们的智慧-折半查找二分查找)
- 如何成为一名好的程序员
- Linux Power supply子系统分析之一
- Flutter之Card组件
- 软考信息系统项目管理师全真模拟题(含答案、解析)
- Final Cut Pro 10.4.9中文版
- Web容器(一):Web容器简介
热门文章
- 医疗软文如何营销才能打动人心
- Libreoffice php使用命令行office转pdf,pdf转图片
- 2021-05-29Leetcode114.二叉树展开为链表
- Facebook开源Linux内核组件和工具:BPF、Btrfs、Netconsd、Cgroup2、PSI、Oomd
- 如何写出更加契合浙大MBA项目提面申请资料?
- Tidb简介与应用实践
- NUS学习之神经网络理论
- socket编程TCP程序
- clean后class文件全部丢失_大数据专家,详解HadoopMapReduce处理海量小文件:压缩文件
- netty socket超时设置_彻底搞懂 netty 线程模型