Blank
文章6
标签7
分类4
Activiti专题 - 搭建到SpringBoot

Activiti专题 - 搭建到SpringBoot

Activiti,工作流引擎。这玩意其实不难学,难就难在如何和业务关联。本文讲解如何给他集成到SpringBoot里。

首先

创建一个SpringBoot项目,没这玩意下面的步骤都做不了了

导入依赖

pom.xml:

1
2
3
4
5
6
7
8
9
10
11
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
<exclusions>
<exclusion> <!-- 如果你的项目集成了MybatisPlus,一定要把这行带上,否则会出现Mybatis版本冲突 -->
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>

这里假设你的项目集成了Mysql并配置了数据源

SpringBoot配置文件

application.yml

1
2
3
4
5
spring:
activiti:
database-schema-update: false
check-process-definitions: false
history-level: full

详解

1
spring.activiti.database-schema-update: false

databaseSchemaUpdate配置项可以设置流程引擎启动和关闭时数据库执行的策略。databaseSchemaUpdate有以下四个值:

  1. false:false为默认值,设置为该值后,Activiti在启动时,会对比数据库表中保存的版本,如果版本不匹配时,将在启动时抛出异常。
  2. true:设置为该值后,Activiti会对数据库中所有的表进行更新,如果表不存在,则Activiti会自动创建。
  3. create-drop:Activiti启动时,会执行数据库表的创建操作,在Activiti关闭时,执行数据库表的删除操作。
  4. drop-create:Activiti启动时,执行数据库表的删除操作在Activiti关闭时,会执行数据库表的创建操作。

正常情况下,设置为true,跑一遍项目,然后注释掉就可以了

1
spring.activiti.check-process-definitions: false

activity默认校验resources下的processes文件夹里的流程文件,如果没有processes目录并且目录下没有流程文件会报错
然后把这个配置写上去就不报错了,意思是不再用文件的形式去保存流程模型

1
spring.activiti.history-level: full

对于历史数据,保存到何种粒度。history-level属性有点像log4j的日志输出级别,该属性有以下四个值:

  1. none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
  2. activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
  3. audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
  4. full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。

更改ID生成策略

永远不要相信自带的ID生成器

实现IdGenerator接口并重写getNextId方法

1
2
3
4
5
6
7
8
public class ActivityUUIDGenerator implements IdGenerator {

@Override
public String getNextId() {
return UUID.randomUUID().toString().replace("-", "");
}

}

让他生效

1
2
3
4
5
6
7
8
9
@Configuration
public class ActivitiConfiguration implements ProcessEngineConfigurationConfigurer {

@Override
public void configure(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
springProcessEngineConfiguration.setIdGenerator(new ActivityUUIDGenerator());
}

}

更改启动类

1
@SpringBootApplication(exclude={org.activiti.spring.boot.SecurityAutoConfiguration.class})

至于为啥要改,你开一下项目就知道了

完事儿了

至此你的Activiti已经集成完了🎉
因为内容比较多,所以教程分三个部分
下一个会教你设计模型和集成业务

本文作者:Blank
本文链接:https://www.kb0103.cn/2022/01/05/3470994358/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可