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的规范,使用流程定义工具,用流程符号 ...
最新文章
- 系统时间、时区、字符集
- 微软考虑将 Python 作为 Excel 官方脚本语言
- Python基础教程:元组详细使用
- 优美的Fibonacci数列与矩阵
- 推动Windows的限制:USER和GDI对象 - 第2部分
- PhotoZoom专业版-图像无损放大工具
- mysql jpa 正则_Spring Data JPA 实例查询
- 微信公众号 分享接口 签名通过 分享无效果(JSSDK自定义分享接口的策略调整)...
- 2014年5月第二个周末总结--保守自己的心
- 电脑小技巧:怎么设置默认浏览器
- LearnOpenGL - 纹理贴图 源代码
- mobi格式转换成pdf格式
- Python自动批量删除微博
- Temporary ASP.NET Files 写访问权限
- ps大图缩小让小图更清晰
- A40i/T3修改根分区大小
- 宝哥说币|近期爆火的项目Trister′s Lend究竟有什么发展潜力和前景?
- ORB-SLAM2代码解析
- 如何让网站在360搜索结果中显示“官网”标志?
- Source Insight 4.0安装
热门文章
- sai linux下载地址,Linux下beego及beego相关插件安装
- 这27个电源符号别再分不清
- StringBuffer的用法1
- Java学习笔记——StringBuilder
- 避免劣化代码(No Inferior Code)之一
- BIM轻量化引擎—广联达BIMFACE功能测评(一)
- 神经网络计算机硬件,人工神经网络的硬件设计研究
- 域名服务器中存放主机的什么位置,域名服务器中存放主机的域名
- 在线天气预报调用插件
- MDK5.25以上版本解决j-link “the connected j-link is defective“ 问题