一、Activiti 數據表介紹
Activiti 後臺是有數據庫支持的,一共產生23張邊,所有的表都以ACT_開頭。第二部分是表示表的用途的兩個字母標識。用途也和服務的API 對應。Activiti 默認使用 MyBatis 數據連接池。通過導入 activit-engine 依賴可以清楚看到 Activiti 依賴於 MyBatis。
ACT_RE_* :'RE' 表示 repository(存儲庫)。資源庫流程規則表。這個前綴的表包含了流程定義和流程靜態資源(圖片、規則 等)。
act_re_deployment | 部署信息表 |
act_re_model | 流程設計模型部署表 |
act_re_prodef |
流程定義數據表 |
ACT_RU_* :'RU’ 表示 runtime(運行時)。運行時數據庫表。這些運行時的表,包含流程實例、任務、變量、異步任務 等運行中的數據。這樣運行時表可以一直很小數據很快。
act_ru_execution | 運行時流程執行實例表 |
act_ru_identitylink |
運行時流程人員表, 主要存儲任務節點與參與者的相關信息。 |
act_ru_lask | 運行時任務節點表 |
act_ru_variable | 運行時流程變量數據表 |
ACT_ID_* :'ID' 表示 identity(身份)。組織機構表。這些表包含了身份信息,比如用戶、組 等。
act_id_group | 用戶組信息表 |
act_id_info | 用戶擴展信息表 |
act_id_membership | 用戶與用戶組對應信息表 |
act_id_user | 用戶信息表 |
ACT_HI_* :'HI' 表示 history(歷史)。歷史數據庫表。這些表包含歷史數據,比如歷史流程實例,變量、任務 等。
act_hi_actinst | 歷史節點表 |
act_hi_attachment | 歷史附件表 |
act_hi_comment | 歷史意見表 |
act_hi_identitylink | 歷史流程人員表 |
act_hi_detail | 歷史詳情表,提供歷史變量查詢 |
act_hi_procinst | 歷史流程實例表a |
act_hi_tasking | 歷史任務實例表 |
act_hi_varinst | 歷史變量表 |
ACT_GE_* :'GE' 表示 general(普遍的)。通用數據表。用於不同場景下,如存放資源文件。
act_ge_bytearry | 二進制數據表 |
act_ge_property |
屬性數據表, 存儲整個流程引擎級別的數據,初始化表 |
二、activiti.cfg.xml 配置文件
Activiti 核心配置文件,配置流程引擎創建工具的基本參數和數據庫連接池參數。
定義數據庫配置參數:
- jdbcUrl:數據庫的JDBC URL。
- jdbcDriver:對應不同數據庫類型的驅動。
- jdbcUsername:連接數據庫的用戶名。
- jdbcPassword:連接數據庫的密碼。
基於JDBC 參數配置的數據庫連接,會使用默認的 MyBatis 連接池。下面的參數可以用來配置連接池(來自MyBatis參數):
- jdbcMaxActiveConnections:連接池中處於被使用狀態的連接的最大值,默認爲10。
- jdbcMaxIdleConnections:連接池處於空閒狀態的連接最大值。
- jdbcMaxCheckoutTime:連接被取出使用的最長時間。超過時間會被強制回收。默認爲20000(20秒)。
- jdbcMaxWaitTime:這是一個底層配置,讓連接池可以在長時間無法獲得連接時,打印一條日誌,並重新嘗試獲取一個連接,避免因爲錯誤配置導致操作失敗,默認爲20000(20秒)。
配置文件示例:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- 數據庫連接配置 -->
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti_test?createDatabaseIfNotExist=true"></property>
<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="root" />
<!-- 建表策略
databaseSchemaUpdate: 設置流程引擎啓動和關閉時如何處理數據庫表
false(默認):檢查數據庫表的版本和依賴庫的版本,如果版本不匹配就拋出異常。不能自動創建表,需要表存在,手動創建。
true: 構建流程引擎時,執行檢查,如果需要就執行更新,如果表不存在就創建。先刪除表再創建表。
create-drop: 構建流程引擎時創建數據庫表,關閉流程引擎時,刪除這些表。如果表不存在,自動創建表。
-->
<property name="databaseSchemaUpdate" value="true" />
<!-- 是否啓動任務調度 -->
<property name="jobExecutorActivate" value="false" />
<!-- 郵件服務器配置 -->
<property name="mailServerHost" value="mail.my-corp.com" />
<property name="mailServerPort" value="5025" />
</bean>
</beans>
Activiti 底層操作數據庫默認是使用 MyBatis 操作。
Activiti 工作流的表是用來存放流程數據的,而業務數據都需要用戶自己來創建和維護。一定需要業務去關聯流程,才能開發工作流系統。