Flowable工作流引擎表用途整理

Flowable 表用途說明

1. Flowable數據庫表命名規則

  • ACT_RE_*
    ’RE’表示repository(存儲)。RepositoryService接口操作的表。帶此前綴的表包含的是靜態信息,如,流程定義,流程的資源(圖片,規則等)。

  • ACT_RU_*
    ’RU’表示runtime。這是運行時的表存儲着流程變量,用戶任務,變量,職責(job)等運行時的數據。flowable只存儲實例執行期間的運行時數據,當流程實例結束時,將刪除這些記錄。這就保證了這些運行時的表小且快。

  • ACT_ID_*
    ’ID’表示identity(組織機構)。這些表包含標識的信息,如用戶,用戶組,等等。

  • ACT_HI_*
    ’HI’表示history。就是這些表包含着歷史的相關數據,如結束的流程實例,變量,任務,等等。

  • ACT_GE_*
    普通數據,各種情況都使用的數據。

2. 數據庫表結構(34張表)

一般數據(2)

表名 說明
ACT_GE_BYTEARRAY 通用的流程定義和流程資源
ACT_GE_PROPERTY 系統相關屬性

流程歷史記錄(8)

表名 說明
ACT_HI_ACTINST 歷史的流程實例
ACT_HI_ATTACHMENT 歷史的流程附件
ACT_HI_COMMENT 歷史的說明性信息
ACT_HI_DETAIL 歷史的流程運行中的細節信息
ACT_HI_IDENTITYLINK 歷史的流程運行過程中用戶關係
ACT_HI_PROCINST 歷史的流程實例
ACT_HI_TASKINST 歷史的任務實例
ACT_HI_VARINST 歷史的流程運行中的變量信息

用戶用戶組表(9)

表名 說明
ACT_ID_BYTEARRAY 二進制數據表
ACT_ID_GROUP 用戶組信息表
ACT_ID_INFO 用戶信息詳情表
ACT_ID_MEMBERSHIP 人與組關係表
ACT_ID_PRIV 權限表
ACT_ID_PRIV_MAPPING 用戶或組權限關係表
ACT_ID_PROPERTY 屬性表
ACT_ID_TOKEN 系統登錄日誌表
ACT_ID_USER 用戶表

流程定義表(3)

表名 說明
ACT_RE_DEPLOYMENT 部署單元信息
ACT_RE_MODEL 模型信息
ACT_RE_PROCDEF 已部署的流程定義

運行實例表(11)

表名 說明
ACT_RU_DEADLETTER_JOB 正在運行的任務表
ACT_RU_EVENT_SUBSCR 運行時事件
ACT_RU_EXECUTION 運行時流程執行實例
ACT_RU_HISTORY_JOB 歷史作業表
ACT_RU_IDENTITYLINK 運行時用戶關係信息
ACT_RU_JOB 運行時作業表
ACT_RU_SUSPENDED_JOB 暫停作業表
ACT_RU_TASK 運行時任務表
ACT_RU_TIMER_JOB 定時作業表
ACT_RU_VARIABLE 運行時變量表
ACT_RU_ACTINST 運行時節點信息,6.4.1版本新增此表

其他表(2)

表名 說明
ACT_EVT_LOG 事件日誌表
ACT_PROCDEF_INFO 流程定義信息

3. 關鍵表詳解

ACT_RU_EXECUTION 執行實例表

工作流程的核心表,保存了主幹與分支流程的執行實例。一般來講一個流程實例都有一條主線。如果流程爲直線流程,那麼流程實例在這個表中只有一條記錄對應。但如果流程有會籤多實例時,以及並行網關時,這時候它就有流程實例和執行實例,兩者是一對多的關係。所以一定要理解流實例和執行實例的區別,不要把執行實例等同於流程實例表。

當在並行網關和會籤多實例時,它是會產生多個執行實例,剛創建時各個執行實例的 IS_ACTIVE_ 這個字段的值都是爲1,即激活狀態。當每完成一個執行實例時,則其置爲0-非激活狀態,當所有執行實例完成後,它纔會轉移到歷史,把這個多實例自動刪除。另外當有子流程,子流程的實例是處於激活狀態,而主幹流程的實例處於非激活狀態。

表字段說明

字段名 中文名 說明
ID_ 執行實例主鍵 這個主鍵有可能和PROC_INST_ID_相同,相同的情況表示這條記錄爲主實例記錄。
REV_ 版本號 表示數據庫表更新次數。
PROC_INST_ID_ 流程實例ID 一個流程實例不管有多少條分支實例,這個ID都是一致的。
BUSINESS_KEY_ 業務主鍵 只有主流程纔會使用業務主鍵,另外這個業務主鍵字段在表中有唯一約束。
PARENT_ID_ 父實例ID 同步節點會產生兩條執行記錄,這兩條記錄的父ID爲主線的ID。
PROC_DEF_ID_ 流程定義ID
SUPER_EXEC 如果存在表示這個實例記錄爲一個外部子流程記錄,對應主流程的主鍵ID。
ACT_ID_ 節點ID 表示流程運行到的節點
IS_ACTIVE_ 是否激活 是否活動流程實例,當主流程爲非活動實例,其下面有兩個爲活動實例,如果其中一個完成,那麼完成的值將變爲0即非活動。
IS_CONCURRENT_ 是否併發 同步節點後爲併發,如果是併發多實例也是爲1。
IS_SCOPE_ 如會籤,子流程,同步等情況,主實例的情況這個字段爲1,子實例這個字段爲0。
TENANT_ID_ 租戶ID 可以應對多租戶的設計。
IS_EVENT_SCOPE 是否事件 沒有使用到事件的情況下,一般都爲0。
SUSPENSION_STATE_ 掛起狀態 標識是否暫停

數據變化情況

直線串行流程時:

1.啓動流程,即創建流程實例時,缺省爲創建2條記錄,其中一條是開始事件的執行實例,這個一直存在,只到流程結束後纔會自動刪除,另一條是普通的節點,所以它的流程實例id和PARENT_ID_字段即主幹執行實例id字段值是一樣的,完成任務時,它會第二轉入歷史任務和歷史活動表中,如果創建的下一個節點還是普通節點,則它的第二條記錄會變化。

ID_ PROC_INST_ID_ PARENT_ID_ IS_ACTIVE_
P1 P1 NULL 1
P2 P1 P1 1

2.並行網關時:創建了2個分支,他們的parant_id和流程實例id(proc_inst_id字段)都一樣,缺省is_active都是1表示激活狀態,當完成其中一個分支節點時,is_active就會變成0,等候其它節點一起完成後,纔會轉到歷史,到時刪除這些執行實例。並行網關的執行實例,它們的活動節點key是不一樣,act_run_task中的TASK_DEF_ID_字段值是不一樣(區別於會籤多實例,會籤多實例這個值是一樣的)。

ID_ PROC_INST_ID_ PARENT_ID_ IS_ACTIVE_
P1 P1 NULL 1
P2 P1 P1 1
P3 P1 P1 1

完成了其中一條分支節點時,is_active變爲了0。

ID_ PROC_INST_ID_ PARENT_ID_ IS_ACTIVE_
P1 P1 NULL 1
P2 P1 P1 0
P3 P1 P1 1

3.會籤多實例時,如下是一個3人的會籤,它會產生5條記錄,一條是開始事件執行實例,一條是主幹執行實例,只是它的狀態爲非激活狀態,其它3個會籤執行實例的parant_id值均是主幹執行實例的id值,其中一個人做完了,這時候的act_ru_execution數據還是3條,但完成任務的那個執行實例is_active由1變爲0了,它也一樣等待其它2人會籤均完成了纔會轉移到歷史,如果查看act_ru_task表,則會發現原來3條,變爲2條了,其中一條它已經轉移到歷史用戶任務了。

ID_ PROC_INST_ID_ PARENT_ID_ IS_ACTIVE_
P1 P1 NULL 1
P2 P1 P1 0
P3 P1 P2 1
P4 P1 P2 1
P5 P1 P2 0

其他表,待續。

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