参考文章:https://www.jianshu.com/p/5e044d7c7f56
最近项目需要在项目中嵌入activiti工作流并提供在线流程编辑设计功能,经过网上各种资料查询,都是基本的springboot整合activiti6,
然后用activiti6提供的各种服务api实现自己的业务逻辑代码,
但是我们都知道 activiti6下载包中包含activiti-app模块,该模块已经帮我们实现了基于web的流程设计器,那我们怎么将activiti-app整和到我们的 springboot项目中呢目前没有找到可参考的整合方案,于是本人经过尝试终于成功将activiti6中的activiti-app模块整合到目前springboot2.1.7版本的项目中,实现了项目的流程在线编辑功能。现将整合中比较重要的几点记录如下
整合步骤:
1:添加maven 包依赖:
```
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.7.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
</dependencyManagement>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-app-rest</artifactId>
<version>${activiti.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
```
注意:**整合activiti-app 就是整合 activiti-app-rest,导入这个jar包后 可能会报log冲突相关的错误,需要再导入jar包的时候 排除 slf4j**
**引入spring-boot-starter-data-jpa 因为activiti-app自带的相关功能 的持久化模块采用的jpa**
2. 数据源配置 activiti相关配置 留意注解
```
spring:
activiti:
async-executor-activate: true
database-schema-update: true
#设置为true时 启动项目自动为我们创建activiti相关的数据表
check-process-definitions: false
process-definition-location-prefix: classpath*:/processes/
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver#/新的mysql驱动
# 如果没有自动生成数据表 mysql连接后增加 nullCatalogMeansCurrent=true 具体原理可自行查看
url: jdbc:mysql://xxxxxxxx:3306/xxx?characterEncoding=utf-8&serverTimezone=UTC&nullCatalogMeansCurrent=true
username: xxx
password: xxx
type: com.zaxxer.hikari.HikariDataSource #连接池
hikari:
connection-test-query: SELECT 1
#很多整合方案中 建议 liquibase.enabled=false,但是再整合activiti-app-rest 时需要设置为true因为activiti-app-rest 用 liquibase管理了一些流程设计相关的表
#比如ACT_DE_MODEL等,liquibase需要的db.changelog-master.xml可以再activiti-app-rest中去找
liquibase:
enabled: true
change-log: classpath:changelog.xml
# activiti-app-rest 中 FileSystemContentStorage 的相关配置用来再文件系统中保存相关东西
contentstorage:
fs:
rootFolder: /data
createRoot: true
depth: 4
blockSize: 1024
```
3.org.activiti.spring.boot.SecurityAutoConfiguration
```
//启动时排除org.activiti.spring.boot.SecurityAutoConfiguration.class activiti中的这个类,这是activiti-app-rest默认使用的SpringSecurity 的相关配置类,去掉后,我们自己的项目必须要引入SpringSecurity 因为activiti-app-rest 获取当前用户是通过 SpringSecurity 的 authentication对象
@SpringBootApplication(exclude = org.activiti.spring.boot.SecurityAutoConfiguration.class)
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
4.最后注意点
```
需要将activiti-app-rest 中的控制器和 jpa 相关的dao Entity引入引入到项目中
```
详细源码可联系微信:it-toughgirl 索取