Activiti 23張表的詳解
一、表格的創建
1.1使用代碼創建23張表
/**
* 使用代碼創建工作流需要的23張表
* */
@Test
public void createTable(){
ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
//連接數據庫的配置
processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");//數據庫驅動
processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/activitidemo?useUnicode=true&characterEncoding=utf8");//數據庫連接地址
processEngineConfiguration.setJdbcUsername("root");//賬號
processEngineConfiguration.setJdbcPassword("123456");//密碼
/**
* public static final String DB_SCHEMA_UPDATE_FALSE = "false";不能自動創建表,需要表存在
* public static final String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";先刪除表再創建表
* public static final String DB_SCHEMA_UPDATE_TRUE = "true";如果表不存在,自動創建表
*/
processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
//工作流的核心對象,ProcessEnginee對象
ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
System.out.println("processEngine:"+processEngine);
}
1.2使用配置文件創建23張表
創建配置文件aciviti.cfg.xml 在配置文件中構造ProcessEngineConfiguration流程配置對象,給對象的具體屬性賦值,這裏面使用的Spring的
<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="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activitidemo?useUnicode=true&characterEncoding=utf8"></property>
<property name="jdbcUsername" value="root"></property>
<property name="jdbcPassword" value="123456"></property>
<!-- 沒有表創建表 -->
<property name="databaseSchemaUpdate" value="true"></property>
</bean>
</beans>
/**使用配置文件創建工作流需要的23張表*/
@Test
public void createTable_2(){
ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml") //
.buildProcessEngine();
System.out.println("processEngine:"+processEngine);
}
這裏通過讀取配置文件中的配置,創建數據庫,以及流程引擎實例。(創建的形式還有很多種,可以通過讀他的源碼來選擇合適的創建方式)
Activiti的後臺是有數據庫的支持,所有的表都以ACT_開頭。 第二部分是表示表的用途的兩個字母標識。用途也和服務的API對應,所有的流程操作數據都是在這些表中存儲。
二、數據庫的含義
Activiti 23 張表格中,可以大致的分爲這幾種,每一種的含義不同,在流程中根據業務使用不同的表。各個表之間也是通過主外鍵關聯。
ACT_RE_*: 'RE'表示repository。 這個前綴的表包含了流程定義和流程靜態資源(圖片,規則,等等)。
ACT_RU_*: 'RU'表示runtime。 這些運行時的表,包含流程實例,任務,變量,異步任務,等運行中的數據。 Activiti只在流程實例執行過程中保存這些數據,在流程結束時就會刪除這些記錄。 這樣運行時表可以一直很小速度很快。
ACT_ID_*: 'ID'表示identity。 這些表包含身份信息,比如用戶,組等等。
ACT_HI_*: 'HI'表示history。 這些表包含歷史數據,比如歷史流程實例,變量,任務等等。
ACT_GE_*: 通用數據, 用於不同場景下,如存放資源文件。
表結構操作:
2.1:資源庫流程規則表
1) act_re_deployment 部署信息表
2) act_re_model 流程設計模型部署表
3) act_re_procdef 流程定義數據表
2.2:運行時數據庫表
1) act_ru_execution 運行時流程執行實例表
2) act_ru_identitylink 運行時流程人員表,主要存儲任務節點與參與者的相關信息
3) act_ru_task 運行時任務節點表
4) act_ru_variable 運行時流程變量數據表
2.3:歷史數據庫表
1) act_hi_actinst 歷史節點表
2) act_hi_attachment 歷史附件表
3) act_hi_comment 歷史意見表
4) act_hi_identitylink 歷史流程人員表
5) act_hi_detail 歷史詳情表,提供歷史變量的查詢
6) act_hi_procinst 歷史流程實例表
7) act_hi_taskinst 歷史任務實例表
8) act_hi_varinst 歷史變量表
2.4:組織機構表
1) act_id_group 用戶組信息表
2) act_id_info 用戶擴展信息表
3) act_id_membership 用戶與用戶組對應信息表
4) act_id_user 用戶信息表
這四張表很常見,基本的組織機構管理,關於用戶認證方面建議還是自己開發一套,組件自帶的功能太簡單,使用中有很多需求難以滿足
2.5:通用數據表
1) act_ge_bytearray 二進制數據表
2) act_ge_property 屬性數據表存儲整個流程引擎級別的數據,初始化表結構時,會默認插入三條記錄,