Activiti6.0(二)SpringBoot整合Activiti+數據表含義解釋

目錄

一、前言

二、SpringBoot整合Activiti

三、Activiti數據表含義

1、通用數據庫

2、流程定義存儲表

3、身份數據表

4、運行時流程數據表

5、歷史流程數據表

四、Activiti提供的Service服務介紹


 

一、前言

本文就開始實際接觸Activiti,全文就是先以SpringBoot整合Activiti,SpringBoot工程是由idea自動創建的,因爲版本是最新的2.1.6.RELEASE,Activiti則爲穩定的6.0版本,當然本文也只是先整合Activiti創建出工作流所需要的28張表,然後在最後會解釋這些表的含義並大致介紹Activiti常用Service服務的作用。

 

二、SpringBoot整合Activiti

1、先在idea下創建一個SpringBoot工程,如果不會請參照:idea快速開始一個SpringBoot項目

2、添加mysql驅動和Activiti的pom依賴:

        <!-- mysql驅動包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- Activiti依賴 -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
            <version>6.0.0</version>
        </dependency>

3、在yaml文件中配置mysql數據源和Activiti基礎設置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf-8&useSSL=true&nullCatalogMeansCurrent=true
    username: xxx
    password: xxx
    driver-class-name: com.mysql.cj.jdbc.Driver

  # Activiti工作流配置
  activiti:
    # 自動部署驗證設置:true-開啓(默認) false-關閉
    check-process-definitions: false
    # 在activiti的默認配置中,process-definition-location-prefix 是指定activiti流程描述文件的前綴(即路徑),啓動時,activiti就會去尋找此路徑下的流程描述文件,並且自動部署;suffix 是一個String數組,表示描述文件的默認後綴名,默認以上兩種。
    #    process-definition-location-prefix: classpath:/processes/
    #    #    process-definition-location-suffixes:
    #    #      - **.bpmn
    #    #      - **.bpmn20.xml
    #    history-level: full

4、由於SpringBoot和Activiti中都有SecurityAutoConfiguration類,所以如果不排除一個在啓動的時候會報錯,這邊我是把Activiti中的該類給排除在外,在啓動類上執行如下操作即可,@MapperScan只是在整合mybatis時有用。

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@MapperScan("activiti.activiti.dao")
public class ActivitiApplication {

    public static void main(String[] args) {
        SpringApplication.run(ActivitiApplication.class, args);
    }

}

5、然後點擊啓動Activiti就能自動創建28張表,Activiti的建表策略爲:無則創建,有則更新,此時打開mysql,可看到所有Activiti的數據表:

Ps:如果啓動失敗,出現如下報錯:

### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table 'test.ACT_GE_PROPERTY' doesn't exist
### The error may exist in org/activiti/db/mapping/entity/Property.xml
### The error may involve org.activiti.engine.impl.persistence.entity.PropertyEntityImpl.selectProperty-Inline
### The error occurred while setting parameters
### SQL: select * from ACT_GE_PROPERTY where NAME_ = ?
### Cause: java.sql.SQLSyntaxErrorException: Table 'test.ACT_GE_PROPERTY' doesn't exist

這種情況主要是因爲Activiti串庫查詢了,即假設有兩個數據庫dev和test,當dev和test均無Activiti的表時,連接任意一個數據庫均能創建成功,當任意一個庫存在Activiti表時,連接另外一個庫則啓動直接報上面的錯。換句話說就是你所連接的mysql服務器中存在某個庫已經擁有Activiti的表了因此啓動報錯,該問題的原因主要是因爲你的mysql版本可能過高,我本地的mysql版本爲8.0.14,由於版本過高導致mysql的nullCatalogMeansCurrent屬性默認爲false,即在getTables方法時會遍歷當前驅動下的所有表,以判斷是否存在Activiti表,當該參數屬性爲true時,則使用指定的庫來執行查詢語句不會遍歷。

所以只需要在mysql的url後面加上&nullCatalogMeansCurrent=true即可解決~

 

三、Activiti數據表含義

先整體看下五大類數據表含義:

數據表分類 描述
ACT_GE_* 通用數據表
ACT_RE_* 流程定義存儲表
ACT_ID_* 身份信息表
ACT_RU_* 運行時數據庫表
ACT_HI_* 歷史數據庫表, 爲了保證運行時數據儘可能少, 流程執行完就會將相關數據遷移到歷史表中

1、通用數據庫

數據表分類 描述
ACT_GE_PROPERTY 屬性表(保存流程引擎的 kv 鍵值屬性)
ACT_GE_BYTEARRAY 資源表(存儲流程定義相關的資源, 如 xml, 流程定義圖)

2、流程定義存儲表

數據表分類 描述
ACT_RE_DEPLOYMENT 流程部署記錄表
ACT_RE_PROCDEF 流程定義信息表
ACT_RE_MODEL 模型信息表(用於 web 設計器)
ACT_PROCDEF_INFO 流程定義動態改變信息表

3、身份數據表

數據表設計 描述
ACT_ID_USER 用戶的基本信息
ACT_ID_INFO 用戶的擴展信息
ACT_ID_GROUP 羣組
ACT_ID_MEMBERSHIP 用戶與羣組關係

4、運行時流程數據表

數據表分類 描述
ACT_RU_EXECUTION 流程實例與分支執行信息
ACT_RU_TASK 用戶任務信息
ACT_RU_VARIABLE 變量信息
ACT_RU_IDENTITYLINK 參與者相關信息
ACT_RU_EVENT_SUBSCR 事件監聽表
ACT_RU_JOB 作業表
ACT_RU_TIMER_JOB 定時器表
ACT_RU_SUSPENDED_JOB 暫停作業表
ACT_RU_DEADLETTER_JOB 死信表

5、歷史流程數據表

數據表分類 描述
ACT_HI_PROCINST 歷史流程實例表
ACT_HI_ACTINST 歷史節點信息表, 執行過程中每經過一個節點就會插入一條記錄
ACT_HI_TASKINST 歷史任務表
ACT_HI_VARINST 歷史變量
ACT_HI_IDENTITYLINK 歷史參與者
ACT_HI_DETAIL 歷史變更, 當使用 FormService 提交表單時, 表單的屬性就會存儲在該表, 以及變量的更改
ACT_HI_ATTACHMENT 附件
ACT_HI_COMMENT 評論
ACT_EVT_LOG 事件日誌

 

四、Activiti提供的Service服務介紹

Activiti的核心Api圖如下:

不過SpringBoot環境下不再以activiti.cfg.xml文件的形式配置,使用配套starter後直接在配置文件中配置即可,不再需要像Spring那樣在xml中定義流程引擎以及一些常用Service接口

  • RepositoryService:提供一系列管理流程部署和流程定義的API。
  • RuntimeService:在流程運行時對流程實例進行管理與控制。
  • TaskService:對流程任務進行管理,例如任務提醒、任務完成和創建任務等。
  • IdentityService:提供對流程角色數據進行管理的API,這些角色數據包括用戶組、用戶及它們之間的關係。
  • ManagementService:提供對流程引擎進行管理和維護的服務,提供對activiti數據庫的直接訪問【一般不用】
  • HistoryService:對流程的歷史數據進行操作,包括查詢、刪除這些歷史數據。
  • FormService:表單服務

 

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