最近在參與一個開源專案ruoyi-vue-pro,暫時負責Activiti7工作流的搭建,接這個任務一個原因,是比較好奇Activiti7版本與先前的5、6版本究竟有什麼區別,因為先前在工作當中,最開始接觸的是5.x版本,到後來的6.x版本,當時換版本時,過程其實還是遇到了不少的坑,而這次,也想蹭著業餘時間參與到這個開源專案當中,搗鼓搗鼓activiti7版本有何不同。
在Activiti6版本當中,若要整合到Springboot裡,需要寫一些額外的配置類,我曾經在Activiti工作流框架學習筆記(二)之springboot2.0整合工作流Activiti6.0一文當中總結過相關配置過程,感興趣的同學,可自行點選連結去看下。
換到Activiti7版本後,可以不需要再另外寫一個配置類來將工作流Activiti各介面注入到IOC當中,它已經能自動實現注入相應的服務介面,只需要依賴對應的jar包和在yaml配置檔案裡配置相應的引數,即可實現SpringBoot+Activiti7的整合。
下面分兩步來實現。
一、Maven依賴Activiti7版本
<properties>
<activiti.version>7.1.0.M6</activiti.version>
</properties>
<dependencies>
<dependency>
<groupId>org.activiti.dependencies</groupId>
<artifactId>activiti-dependencies</artifactId>
<version>${activiti.version}</version>
<type>pom</type>
</dependency>
<!--使用mybatis plus需排除掉mybatis-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>${activiti.version}</version>
<exclusions>
<exclusion>
<groupId>de.odysseus.juel</groupId>
<artifactId>juel-api</artifactId>
</exclusion>
<exclusion>
<groupId>de.odysseus.juel</groupId>
<artifactId>juel-spi</artifactId>
</exclusion>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
注意一點是,因為用到了mybatis plus做ORM框架,故而需要排除掉mybatis依賴,否則在專案啟動時,會發生異常提示資訊。
二、在yaml檔案裡配置相應的啟動引數
spring:
datasource:
name: druidDataSoure
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/ftedb?useUnicode=true&characterEncoding=UTF-8&ueSSL=false&serverTimezone=GMT%2B8
username: root
password: root
activiti:
#1.false:預設值,activiti啟動時,對比資料庫表中儲存的版本,如果不匹配。將丟擲異常
#2.true:啟動時會對資料庫中所有表進行更新操作,如果表存在,不做處理,反之,自動建立表
#3.create_drop:啟動時自動建立表,關閉時自動刪除表
#4.drop_create:啟動時,刪除舊錶,再建立新表
database-schema-update: true
#activiti7預設不生成歷史資訊表,需手動設定開啟
db-history-used: true
check-process-definitions: true
#full:儲存歷史資料的最高階別,可儲存全部流程相關細節,包括流程流轉各節點引數
history-level: full
完成以上兩步,即可將Activit7整合到SpringBoot+mybatis plus專案當中。
啟動專案,會發現資料庫裡自動生成了對應的工作流表結構。
我會在ruoyi-vue-pro跟其他小夥伴一起完成Activiti7核心模組整合,感興趣的小夥伴可以來研究下該開源框架。