最近在參與一個開源項目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核心模塊集成,感興趣的小夥伴可以來研究下該開源框架。