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 |
其他表,待續。