activiti6支持的springboot版本爲1.2.6。由於版本比較老,所以需要對activiti6進行源碼改造。步驟
一、在github上clone出activiti的源碼,在activiti-6.0.0分支上創建並切換到新的分支
git checkout -b boot2 activiti-6.0.0
二、升級activiti版本,因爲activiti已經發布了6.0.0版本,爲了避免命名衝突,我們使用6.0.0-boot2
- 切換到activiti-spring-boot項目
cd modules/activiti-spring-boot
執行mvn命令,升級版本
mvn versions:set -DnewVersion=6.0.0-boot2
這是執行失敗,失敗的原因是沒有指定activiti-spring-boot的版本號,所以我們需要在activiti-spring-boot新項目的pom.xml中指定版本6.0.0(直接在<parent>標籤外添加<version>6.0.0</version>),再次執行mvn修改版本的命令,修改成功
-
版本升級後我們需要安裝新版本,activiti-spring-boot項目下執行安裝命令
mvn clean install source:jar -Dmaven.test.skip=true
此時執行是失敗的,需要在activiti-spring-boot項目中全局查找${project.version}並替換成6.0.0(應該有18個)替換完成後再次執行安裝,這次報錯的原因是activiti-spring-boot-basic項目,這時可以在activiti-spring-boot-starter-basic項目的pom.xml文件中所有使用activiti相關的依賴都指定6.0.0版本,並在根pom.xml(activiti-root)中指定版本號,步驟是在根pom.xml 中添加<activiti.version>6.0.0</activiti.version>,查找${project.version}並替換成${activiti.version},這時再次執行安裝命令是成功的
三、升級springboot版本
- 在activiti-spring-boot項目的pom.xml文件中將<spring.boot.version>1.2.6</spring.boot.version>修改成目標版版本,同時添加
<spring.framework.version>5.0.4.RELEASE</spring.framework.version> <spring.security.version>5.0.3.RELEASE</spring.security.version>
-
mvn clean test-compile
此時根據報錯一一解決
錯誤集中在這個文件夾下
ProcessEngineEndpoint類報錯解決,將繼承的AbstractEndpoint類去掉,同時註解也不是@ConfigurationProperties了,應該替換成@Endpoint(id="activiti"),去掉ProcessEngineEndpoint方法下的super,invoke方法替換成activiti同時將@Override註解去掉並添加新的註解@ReadOperation,刪除多餘的import
ProcessEngineMvcEndpoint類報錯解決,將繼承的EndpointMvcAdapter類去掉,添加
private final ProcessEngineEndpoint processEngineEndpoint;
ProcessEngineMvcEndpoint方法的super去掉,添加
this.processEngineEndpoint = processEngineEndpoint;
去掉多餘的import
EndpointAutoConfiguration類報錯,直接去掉@ConditionalOnClass (name = "org.springframework.boot.actuate.endpoint.AbstractEndpoint")註解
SecurityAutoConfiguration類報錯解決,SecurityAutoConfiguration.class包結構發生了變化,在SecurityAutoConfiguration添加上.servlet
@AutoConfigureBefore(org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class)
去掉錯誤的import重新引入import
再次執行編譯,發現spring-boot-sample-rest-api下的test包報錯,由於是test,可以將報錯的類註釋掉
四、驗證
新建springboot項目,引入activiti版本6.0.0-boot2,需要注意的是yml的數據庫url一定要添加nullCatalogMeansCurrent=true,否則activiti表會創建失敗
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.18</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0-boot2</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.yml配置
server:
port: 9999
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.0.112:3306/activiti_demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&nullCatalogMeansCurrent=true
username: root
password: 123456
#使用阿里巴巴druid數據源,默認使用自帶的
type: com.alibaba.druid.pool.DruidDataSource
activiti:
check-process-definitions: false
liquibase:
enabled: false