Skip to content

Commit 4bc8016

Browse files
committed
Spring Boot Activiti
1 parent 66bd566 commit 4bc8016

File tree

7 files changed

+242
-0
lines changed

7 files changed

+242
-0
lines changed

springboot-activiti/README.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# 引入依赖
2+
3+
```xml
4+
5+
<dependency>
6+
<groupId>org.activiti</groupId>
7+
<artifactId>activiti-spring-boot-starter-basic</artifactId>
8+
<version>6.0.0</version>
9+
</dependency>
10+
```
11+
12+
# 表说明
13+
14+
启动项目,会在数据库生成28张表
15+
16+
表名默认以“ACT_”开头,并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配。
17+
18+
- ACT_GE_* : “GE”代表“General”(通用),用在各种情况下;
19+
- ACT_HI_* : “HI”代表“History”(历史),这些表中保存的都是历史数据,比如执行过的流程实例、变量、任务,等等。Activit默认提供了4种历史级别:
20+
- ACT_ID_* : “ID”代表“Identity”(身份),这些表中保存的都是身份信息,如用户和组以及两者之间的关系。如果Activiti被集成在某一系统当中的话,这些表可以不用,可以直接使用现有系统中的用户或组信息;
21+
- ACT_RE_* : “RE”代表“Repository”(仓库),这些表中保存一些‘静态’信息,如流程定义和流程资源(如图片、规则等);
22+
- ACT_RU_* :
23+
“RU”代表“Runtime”(运行时),这些表中保存一些流程实例、用户任务、变量等的运行时数据。Activiti只保存流程实例在执行过程中的运行时数据,并且当流程结束后会立即移除这些数据,这是为了保证运行时表尽量的小并运行的足够快;
24+
25+
|表分类|表名称|表含义|
26+
| ---- | ---- |----|
27+
一般数据|act_evt_log|事件处理日志表
28+
&nbsp;|act_ge_bytearray|通用的流程定义和流程资源
29+
&nbsp;|act_ge_property|系统相关属性
30+
流程历史记录|act_hi_actinst|历史的流程实例
31+
&nbsp;|act_hi_attachment|历史的流程附件
32+
&nbsp;|act_hi_comment|历史的说明性信息
33+
&nbsp;|act_hi_detail|历史的流程运行中的细节信息
34+
&nbsp;|act_hi_identitylink|历史的流程运行过程中用户关系
35+
&nbsp;|act_hi_procinst|历史的流程实例
36+
&nbsp;|act_hi_taskinst|历史的任务实例
37+
&nbsp;|act_hi_varinst|历史的流程运行中的变量信息
38+
用户用户组表|act_id_group|身份信息-用户组信息表
39+
&nbsp;|act_id_info|身份信息
40+
&nbsp;|act_id_membership|身份信息
41+
&nbsp;|act_id_user|身份信息
42+
&nbsp;|act_procdef_info|流程定义数据表
43+
流程定义表|act_re_deployment|部署单元信息
44+
&nbsp;|act_re_model|模型信息
45+
&nbsp;|act_re_procdef|已部署的流程定义
46+
运行实例表|act_ru_deadletter_job|执行失败任务表
47+
&nbsp;|act_ru_event_subscr|运行时事件
48+
&nbsp;|act_ru_execution|运行时流程执行实例
49+
&nbsp;|act_ru_identitylink|运行时用户关系信息
50+
&nbsp;|act_ru_job|运行时作业
51+
&nbsp;|act_ru_suspended_job|运行时暂停任务
52+
&nbsp;|act_ru_task|运行时任务
53+
&nbsp;|act_ru_timer_job|运行时定时任务
54+
&nbsp;|act_ru_variable|运行时变量表
55+
56+
> 表的作用及其详细介绍:https://lucaslz.gitbooks.io/activiti-5-22/content/biaoxiang_qing_md.html
57+
58+
# Activiti提供的服务 7大接口
59+
60+
1. RepositoryService:提供一系列管理流程部署和流程定义的API,帮助我们实现流程定义的部署。此服务会处理与流程定义相关的静态数据。
61+
2. RuntimeService:在流程运行时对流程实例进行管理与控制。管理 ProcessInstances(当前正在运行的流程)以及流程变量。
62+
3. TaskService:对流程任务进行管理,例如任务提醒、任务完成和创建任务等。会跟踪 UserTasks,需要由用户手动执行的任务是Activiti API的核心。我们可以使用此服务创建任务,声明并完成任务,分配任务的受让人等。
63+
4. FormService:表单服务。是一项可选服务,它用于定义中开始表单和任务表单。
64+
5. IdentityService:提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户及它们之间的关系。管理用户和组。
65+
6. HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据。我们还可以设置不同的历史级别。
66+
7. ManagementService:提供对流程引擎进行管理和维护的服务。与元数据相关,在创建应用程序时通常不需要。
67+
8. DynamicBpmnService:帮助我们在不重新部署的情况下更改流程中的任何内容。
68+
69+
# 参考文章
70+
71+
1. https://github.com/oycyqr/springboot-learning-demo/blob/master/springboot-activiti
72+
2. https://blog.csdn.net/LT11hka/article/details/108080068

springboot-activiti/pom.xml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<parent>
7+
<groupId>com.jonssonyan</groupId>
8+
<artifactId>spring-demo</artifactId>
9+
<version>0.0.1-SNAPSHOT</version>
10+
<relativePath>../pom.xml</relativePath> <!-- lookup parent from repository -->
11+
</parent>
12+
13+
<artifactId>springboot-activiti</artifactId>
14+
<version>0.0.1-SNAPSHOT</version>
15+
<name>springboot-activiti</name>
16+
<description>Demo project for Spring Boot Activiti</description>
17+
18+
<properties>
19+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
20+
<encoding>UTF-8</encoding>
21+
<java.version>8</java.version>
22+
<maven.compiler.source>${java.version}</maven.compiler.source>
23+
<maven.compiler.target>${java.version}</maven.compiler.target>
24+
25+
<activiti.version>6.0.0</activiti.version>
26+
<mybatis-plus.version>3.4.2</mybatis-plus.version>
27+
</properties>
28+
29+
<dependencies>
30+
<dependency>
31+
<groupId>org.activiti</groupId>
32+
<artifactId>activiti-spring-boot-starter-basic</artifactId>
33+
<version>${activiti.version}</version>
34+
</dependency>
35+
<dependency>
36+
<groupId>mysql</groupId>
37+
<artifactId>mysql-connector-java</artifactId>
38+
<scope>runtime</scope>
39+
</dependency>
40+
<dependency>
41+
<groupId>com.baomidou</groupId>
42+
<artifactId>mybatis-plus-boot-starter</artifactId>
43+
<version>${mybatis-plus.version}</version>
44+
</dependency>
45+
</dependencies>
46+
47+
<build>
48+
<plugins>
49+
<plugin>
50+
<groupId>org.springframework.boot</groupId>
51+
<artifactId>spring-boot-maven-plugin</artifactId>
52+
</plugin>
53+
</plugins>
54+
</build>
55+
</project>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.jonssonyan;
2+
3+
import org.activiti.spring.boot.SecurityAutoConfiguration;
4+
import org.springframework.boot.SpringApplication;
5+
import org.springframework.boot.autoconfigure.SpringBootApplication;
6+
7+
// 在启动类加注解,排查SecurityAutoConfiguration配置
8+
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
9+
public class SpringbootActivitiApplication {
10+
11+
public static void main(String[] args) {
12+
SpringApplication.run(SpringbootActivitiApplication.class, args);
13+
}
14+
15+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.jonssonyan.config;
2+
3+
import org.activiti.spring.SpringAsyncExecutor;
4+
import org.activiti.spring.SpringProcessEngineConfiguration;
5+
import org.activiti.spring.boot.AbstractProcessEngineAutoConfiguration;
6+
import org.springframework.boot.context.properties.ConfigurationProperties;
7+
import org.springframework.boot.jdbc.DataSourceBuilder;
8+
import org.springframework.context.annotation.Bean;
9+
import org.springframework.context.annotation.Configuration;
10+
import org.springframework.context.annotation.Primary;
11+
import org.springframework.transaction.PlatformTransactionManager;
12+
13+
import javax.sql.DataSource;
14+
import java.io.IOException;
15+
16+
/**
17+
* activiti工作流配置类,继承Activiti抽象配置类
18+
*/
19+
@Configuration
20+
public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration {
21+
22+
@Bean
23+
@Primary
24+
@ConfigurationProperties(prefix = "spring.datasource")
25+
public DataSource activitiDataSource() {
26+
return DataSourceBuilder.create().build();
27+
}
28+
29+
@Bean
30+
public SpringProcessEngineConfiguration springProcessEngineConfiguration(
31+
PlatformTransactionManager transactionManager,
32+
SpringAsyncExecutor springAsyncExecutor) throws IOException {
33+
34+
return baseSpringProcessEngineConfiguration(
35+
activitiDataSource(),
36+
transactionManager,
37+
springAsyncExecutor);
38+
}
39+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.jonssonyan.config;
2+
3+
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
4+
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
8+
/**
9+
* Mybatis Plus配置类
10+
*/
11+
@Configuration
12+
public class MybatisPlusConfig {
13+
/**
14+
* 分页插件
15+
*/
16+
@Bean
17+
public PaginationInterceptor paginationInterceptor() {
18+
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
19+
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
20+
// paginationInterceptor.setOverflow(false);
21+
// 设置最大单页限制数量,默认 500 条,-1 不受限制
22+
// paginationInterceptor.setLimit(500);
23+
// 开启 count 的 join 优化,只针对部分 left join
24+
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
25+
// 方言
26+
paginationInterceptor.setDialectType("mysql");
27+
return paginationInterceptor;
28+
}
29+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
server.port=9032
2+
server.servlet.context-path=/activiti
3+
spring.application.name=springboot-activiti
4+
# \u6570\u636E\u5E93\u7684\u914D\u7F6E
5+
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
6+
spring.datasource.url=jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf-8
7+
spring.datasource.username=root
8+
spring.datasource.password=123456
9+
mybatis-plus.mapper-locations=classpath:com/jonssonyan/dao/*Dao.xml
10+
mybatis-plus.type-aliases-package=com.jonssonyan.entity
11+
# activiti\u7684\u914D\u7F6E
12+
# \u6BCF\u6B21\u5E94\u7528\u542F\u52A8\u4E0D\u68C0\u67E5Activiti\u6570\u636E\u8868\u662F\u5426\u5B58\u5728\u53CA\u7248\u672C\u53F7\u662F\u5426\u5339\u914D\uFF0C\u63D0\u5347\u5E94\u7528\u542F\u52A8\u901F\u5EA6
13+
spring.activiti.database-schema-update=true
14+
# \u5173\u95ED\u68C0\u67E5resources\u76EE\u5F55\u6CA1\u6709\u201Cprocesses\u201D\u76EE\u5F55
15+
spring.activiti.check-process-definitions=false
16+
spring.activiti.process-definition-location-prefix=classpath:/processes/
17+
spring.activiti.process-definition-location-suffixes=-**.bpmn,-**.bpmn20.xml
18+
# \u4FDD\u5B58\u5386\u53F2\u6570\u636E\u7EA7\u522B\u8BBE\u7F6E\u4E3Afull\u6700\u9AD8\u7EA7\u522B\uFF0C\u4FBF\u4E8E\u5386\u53F2\u6570\u636E\u7684\u8FFD\u6EAF
19+
spring.activiti.history-level=full
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.jonssonyan;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.springframework.boot.test.context.SpringBootTest;
5+
6+
@SpringBootTest
7+
class SpringbootActivitiApplicationTests {
8+
9+
@Test
10+
void contextLoads() {
11+
}
12+
13+
}

0 commit comments

Comments
 (0)