springboot2整合activiti6過程總結

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

  1.    切換到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修改版本的命令,修改成功

  2. 版本升級後我們需要安裝新版本,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版本

  1. 在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>
    右擊activiti-spring-boot選擇Rebuild ...重現編譯下項目。爲了快速查找升級後項目的報錯,在命令行切換到activiti-spring-boot項目,執行編譯命令(若沒有這個選項擇說明項目還不是maven項目,需要右擊pom.xml,然後Add As Maven Project)
  2. 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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章