1.1 數據庫表名說明
Activiti工作流總共包含23張數據表,所有的表名默認以“ACT_”開頭。
並且表名的第二部分用兩個字母表明表的用例,而這個用例也基本上跟Service API匹配。
u ACT_GE_* : “GE”代表“General”(通用),用在各種情況下;
u ACT_HI_* : “HI”代表“History”(歷史),這些表中保存的都是歷史數據,比如執行過的流程實例、變量、任務,等等。Activit默認提供了4種歷史級別:
Ø none: 不保存任何歷史記錄,可以提高系統性能;
Ø activity:保存所有的流程實例、任務、活動信息;
Ø audit:也是Activiti的默認級別,保存所有的流程實例、任務、活動、表單屬性;
Ø full:最完整的歷史記錄,除了包含audit級別的信息之外還能保存詳細,例如:流程變量。
對於幾種級別根據對功能的要求選擇,如果需要日後跟蹤詳細可以開啓full。
u ACT_ID_* : “ID”代表“Identity”(身份),這些表中保存的都是身份信息,如用戶和組以及兩者之間的關係。如果Activiti被集成在某一系統當中的話,這些表可以不用,可以直接使用現有系統中的用戶或組信息;
u ACT_RE_* : “RE”代表“Repository”(倉庫),這些表中保存一些‘靜態’信息,如流程定義和流程資源(如圖片、規則等);
u ACT_RU_* : “RU”代表“Runtime”(運行時),這些表中保存一些流程實例、用戶任務、變量等的運行時數據。Activiti只保存流程實例在執行過程中的運行時數據,並且當流程結束後會立即移除這些數據,這是爲了保證運行時表儘量的小並運行的足夠快;
1.2 數據庫表結構
1.2.1 Activiti數據表清單:
表分類 | 表名 | 解釋 |
一般數據 | 通用的流程定義和流程資源 | |
系統相關屬性 | ||
歷史的流程實例 | ||
歷史的流程附件 | ||
歷史的說明性信息 | ||
歷史的流程運行中的細節信息 | ||
歷史的流程運行過程中用戶關係 | ||
歷史的流程實例 | ||
歷史的任務實例 | ||
歷史的流程運行中的變量信息 | ||
身份信息-組信息 | ||
身份信息-組信息 | ||
身份信息-用戶和組關係的中間表 | ||
身份信息-用戶信息 | ||
部署單元信息 | ||
模型信息 | ||
已部署的流程定義 | ||
運行時事件 | ||
運行時流程執行實例 | ||
運行時用戶關係信息 | ||
運行時作業 | ||
運行時任務 | ||
運行時變量表 |
1.2.2表名:ACT_GE_BYTEARRAY(通用的流程定義和流程資源)
用來保存部署文件的大文本數據。
保存流程定義圖片和xml、Serializable(序列化)的變量,即保存所有二進制數據,特別注意類路徑部署時候,不要把svn等隱藏文件或者其他與流程無關的文件也一起部署到該表中,會造成一些錯誤(可能導致流程定義無法刪除)。
ACT_GE_BYTEARRAY(act_ge_bytearray) | |||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 可空 | 約束 | 缺省值 | 取值說明 |
是 | ID_ | 主鍵ID,資源文件編號,自增長 | VARCHAR(64) | ||||
REV_ | 版本號 | INT(11) | 是 | Version | |||
NAME_ | 部署的文件名稱, | VARCHAR(255) | 是 | mail.bpmn、mail.png 、mail.bpmn20.xml | |||
DEPLOYMENT_ID_ | 來自於父表ACT_RE_DEPLOYMENT的主鍵 | VARCHAR(64) | 是 | 部署的ID | |||
BYTES_ | 大文本類型,存儲文本字節流 | LONGBLOB | 是 | ||||
GENERATED_ | 是否是引擎生成。 | TINYINT(4) | 是 | 0爲用戶生成 1爲Activiti生成 |
1.2.3 表名:ACT_GE_PROPERTY(系統相關屬性)
屬性數據表。存儲這個流程引擎級別的數據。
ACT_GE_PROPERTY(act_ge_property) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 取值說明 |
是 | NAME_ | VARCHAR(64) | 64 | schema.version schema.history next.dbid | ||||
VALUE_ | 屬性值 | VARCHAR(300) | 300 | 是 | 5.* create(5.*) | |||
REV_INT | 版本號 | INT(11) | 11 | 是 |
1.2.4表名:ACT_HI_ACTINST(歷史節點表)
歷史活動信息。這裏記錄流程流轉過的所有節點,與HI_TASKINST不同的是,taskinst只記錄usertask內容。
ACT_HI_ACTINST(act_hi_actinst) | ||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 可空 | 約束 | 取值說明 |
是 | ID_ | ID_ | VARCHAR(64) | |||
PROC_DEF_ID_ | 流程定義ID | VARCHAR(64) | ||||
PROC_INST_ID_ | VARCHAR(64) | |||||
EXECUTION_ID_ | 流程執行ID | VARCHAR(64) | ||||
ACT_ID_ | 活動ID | VARCHAR(255) | 節點定義ID | |||
TASK_ID_ | 任務ID | VARCHAR(64) | 是 | 任務實例ID 其他節點類型實例ID在這裏爲空 | ||
CALL_PROC_INST_ID_ | 請求流程實例ID | VARCHAR(64) | 是 | 調用外部流程的流程實例ID' | ||
ACT_NAME_ | 活動名稱 | VARCHAR(255) | 是 | 節點定義名稱 | ||
ACT_TYPE_ | 活動類型 | VARCHAR(255) | 如startEvent、userTask | |||
ASSIGNEE_ | 代理人員 | VARCHAR(64) | 是 | 節點簽收人 | ||
START_TIME_ | 開始時間 | DATETIME | 2013-09-15 11:30:00 | |||
END_TIME_ | 結束時間 | DATETIME | 是 | 2013-09-15 11:30:00 | ||
DURATION_ | 時長,耗時 | BIGINT(20) | 是 | 毫秒值 |
1.2.5 表名:ACT_HI_ATTACHMENT(附件信息)
ACT_HI_ATTACHMENT(act_hi_attachment) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 取值說明 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | 主鍵ID | |||
REV_ | REV_ | INT(11) | 11 | 是 | Version | |||
USER_ID_ | 用戶id | VARCHAR(255) | 255 | 是 | 用戶ID | |||
NAME_ | 名稱 | VARCHAR(255) | 255 | 是 | 附件名稱 | |||
DESCRIPTION_ | 描述 | VARCHAR(4000) | 4000 | 是 | 描述 | |||
TYPE_ | 類型 | VARCHAR(255) | 255 | 是 | 附件類型 | |||
TASK_ID_ | VARCHAR(64) | 64 | 是 | |||||
PROC_INST_ID_ | 流程實例ID | VARCHAR(64) | 64 | 是 | 流程實例ID | |||
URL_ | 連接 | VARCHAR(4000) | 4000 | 是 | 附件地址 | |||
CONTENT_ID_ | 內容Id 字節表的ID | VARCHAR(64) | 64 | 是 | ACT_GE_BYTEARRAY的ID |
1.2.6 表名:ACT_HI_COMMENT(歷史審批意見表)
ACT_HI_COMMENT(act_hi_comment) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 取值說明 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | 主鍵ID | |||
TYPE_ | 意見記錄類型,爲comment時,爲處理意見 | VARCHAR(255) | 255 | 是 | 類型:event(事件) comment(意見) | |||
TIME_ | 記錄時間 | DATETIME | 填寫時間 | |||||
USER_ID_ | 用戶Id | VARCHAR(255) | 255 | 是 | 填寫人 | |||
TASK_ID_ | 任務Id | VARCHAR(64) | 64 | 是 | 節點實例ID | |||
PROC_INST_ID_ | 流程實例Id | VARCHAR(64) | 64 | 是 | 流程實例ID | |||
ACTION_ | 行爲類型。 | VARCHAR(255) | 255 | 是 | 值爲下列內容中的一種: AddUserLink、DeleteUserLink、AddGroupLink、DeleteGroupLink、AddComment、AddAttachment、DeleteAttachment | |||
MESSAGE_ | 處理意見 | VARCHAR(4000) | 4000 | 是 | 用於存放流程產生的信息,比如審批意見 | |||
FULL_MSG_ | 全部消息 | LONGBLOB | 是 |
1.2.7表名:ACT_HI_DETAIL(歷史詳細信息)
歷史詳情表:流程中產生的變量詳細,包括控制流程流轉的變量,業務表單中填寫的流程需要用到的變量等。
ACT_HI_DETAIL(act_hi_detail) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 取值說明 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | 主鍵 | |||
TYPE_ | 數據類型 | VARCHAR(255) | 255 | FormProperty, //表單 VariableUpdate //參數 | ||||
PROC_INST_ID_ | 流程實例ID | VARCHAR(64) | 64 | 是 | 流程實例ID | |||
EXECUTION_ID_ | 執行實例Id | VARCHAR(64) | 64 | 是 | 執行實例ID | |||
TASK_ID_ | 任務Id | VARCHAR(64) | 64 | 是 | 任務實例ID | |||
ACT_INST_ID_ | 活動實例Id | VARCHAR(64) | 64 | 是 | ACT_HI_ACTINST表的ID | |||
NAME_ | 名稱 | VARCHAR(255) | 255 | 名稱 | ||||
VAR_TYPE_ | 變量類型 | VARCHAR(255) | 255 | 是 | 參見VAR_TYPE_類型說明 | |||
REV_ | REV_ | INT(11) | 11 | 是 | Version | |||
TIME_ | 創建時間 | DATETIME | 創建時間 | |||||
BYTEARRAY_ID_ | 字節數組Id | VARCHAR(64) | 64 | 是 | ACT_GE_BYTEARRAY表的ID | |||
DOUBLE_ | DOUBLE_ | DOUBLE | 是 | 存儲變量類型爲Double | ||||
LONG_ | LONG_ | BIGINT(20) | 20 | 是 | 存儲變量類型爲long | |||
TEXT_ | 值 | VARCHAR(4000) | 4000 | 是 | ||||
TEXT2_ | 值2 | VARCHAR(4000) | 4000 | 是 | 此處存儲的是JPA持久化對象時,纔會有值。此值爲對象ID |
備註:VAR_TYPE_類型說明: jpa-entity、boolean、bytes、serializable(可序列化)、自定義type(根據你自身配置)、 CustomVariableType、date、double、integer、long、null、short、string
1.2.8 表名:ACT_HI_IDENTITYLINK (歷史流程人員表)
任務參與者數據表。主要存儲歷史節點參與者的信息。
ACT_HI_IDENTITYLINK(act_hi_identitylink) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 取值說明 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | ID_ | |||
GROUP_ID_ | 用戶組ID | VARCHAR(255) | 255 | 是 | 組ID | |||
TYPE_ | 用戶組類型 | VARCHAR(255) | 255 | 是 | 類型,主要分爲以下幾種: assignee、 candidate、 owner、starter 、participant | |||
USER_ID_ | 用戶ID | VARCHAR(255) | 255 | 是 | 用戶ID | |||
TASK_ID_ | 任務Id | VARCHAR(64) | 64 | 是 | 節點實例ID | |||
PROC_INST_ID_ | VARCHAR(64) | 64 | 是 | 流程實例ID |
1.2.9 表名:ACT_HI_PROCINST(歷史流程實例信息)核心表
ACT_HI_PROCINST(act_hi_procinst) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | ||||
PROC_INST_ID_ | 流程實例ID | VARCHAR(64) | 64 | |||||
BUSINESS_KEY_ | 業務Key | VARCHAR(255) | 255 | 是 | ||||
PROC_DEF_ID_ | 流程定義Id | VARCHAR(64) | 64 | |||||
START_TIME_ | 開始時間 | DATETIME | ||||||
END_TIME_ | 結束時間 | DATETIME | 是 | |||||
DURATION_ | 時長 | BIGINT(20) | 20 | 是 | ||||
START_USER_ID_ | 發起人員Id | VARCHAR(255) | 255 | 是 | ||||
START_ACT_ID_ | 開始節點 | VARCHAR(255) | 255 | 是 | ||||
END_ACT_ID_ | 結束節點 | VARCHAR(255) | 255 | 是 | ||||
SUPER_PROCESS_INSTANCE_ID_ | 超級流程實例Id | VARCHAR(64) | 64 | 是 | ||||
DELETE_REASON_ | 刪除理由 | VARCHAR(4000) | 4000 | 是 |
1.2.10 表名:ACT_HI_TASKINST(歷史任務流程實例信息)核心表
ACT_HI_TASKINST(act_hi_taskinst) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | 主鍵ID | |||
PROC_DEF_ID_ | VARCHAR(64) | 64 | 是 | 流程定義ID | ||||
TASK_DEF_KEY_ | 任務定義Key | VARCHAR(255) | 255 | 是 | 節點定義ID | |||
PROC_INST_ID_ | 流程實例ID | VARCHAR(64) | 64 | 是 | 流程實例ID | |||
EXECUTION_ID_ | 執行ID | VARCHAR(64) | 64 | 是 | 執行實例ID | |||
NAME_ | 名稱 | VARCHAR(255) | 255 | 是 | 名稱 | |||
PARENT_TASK_ID_ | 父任務iD | VARCHAR(64) | 64 | 是 | 父節點實例ID | |||
DESCRIPTION_ | 描述 | VARCHAR(4000) | 4000 | 是 | 描述 | |||
OWNER_ | 實際簽收人 任務的擁有者 | VARCHAR(255) | 255 | 是 | 簽收人(默認爲空,只有在委託時纔有值) | |||
ASSIGNEE_ | 代理人 | VARCHAR(255) | 255 | 是 | 簽收人或被委託 | |||
START_TIME_ | 開始時間 | DATETIME | 開始時間 | |||||
CLAIM_TIME_ | 提醒時間 | DATETIME | 是 | 提醒時間 | ||||
END_TIME_ | 結束時間 | DATETIME | 是 | 結束時間 | ||||
DURATION_ | 時長 | BIGINT(20) | 20 | 是 | 耗時 | |||
DELETE_REASON_ | 刪除理由 | VARCHAR(4000) | 4000 | 是 | 刪除原因(completed,deleted) | |||
PRIORITY_ | 優先級 | INT(11) | 11 | 是 | 優先級別 | |||
DUE_DATE_ | 應完成時間 | DATETIME | 是 | 過期時間,表明任務應在多長時間內完成 | ||||
FORM_KEY_ | 表單key | VARCHAR(255) | 255 | 是 | desinger節點定義的 form_key屬性 |
1.2.11 表名:ACT_HI_VARINST(歷史變量信息)
ACT_HI_VARINST(act_hi_varinst) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | ID_ | |||
PROC_INST_ID_ | 流程實例ID | VARCHAR(64) | 64 | 是 | 流程實例ID | |||
EXECUTION_ID_ | 執行ID | VARCHAR(64) | 64 | 是 | 執行實例ID | |||
TASK_ID_ | 任務Id | VARCHAR(64) | 64 | 是 | 任務實例ID | |||
NAME_ | 名稱 | VARCHAR(255) | 255 | 參數名稱(英文) | ||||
VAR_TYPE_ | 變量類型 | VARCHAR(100) | 100 | 是 | 參見VAR_TYPE_類型說明 | |||
REV_ | REV_ | INT(11) | 11 | 是 | Version | |||
BYTEARRAY_ID_ | 字節數組ID | VARCHAR(64) | 64 | 是 | ACT_GE_BYTEARRAY表的主鍵 | |||
DOUBLE_ | DOUBLE_ | DOUBLE | 是 | 存儲DoubleType類型的數據 | ||||
LONG_ | LONG_ | BIGINT(20) | 20 | 是 | 存儲LongType類型的數據 | |||
TEXT_ | TEXT_ | VARCHAR(4000) | 4000 | 是 | 存儲變量值類型爲String,如此處存儲持久化對象時,值jpa對象的class | |||
TEXT2_ | TEXT2_ | VARCHAR(4000) | 4000 | 是 |
1.2.12 表名:ACT_ID_GROUP(用戶組表)
用來存儲用戶組信息。
ACT_ID_GROUP(act_id_group) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | ID_ | 用戶組ID | VARCHAR(64) | 64 | ||||
REV_ | 版本號 | INT(11) | 11 | 是 | ||||
NAME_ | 用戶組描述信息 | VARCHAR(255) | 255 | 是 | ||||
TYPE_ | VARCHAR(255) | 255 | 是 |
1.2.13 表名:ACT_ID_INFO(用戶擴展信息表)
用戶擴展信息表。目前該表未用到。
ACT_ID_INFO(act_id_info) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | ID_ | VARCHAR(64) | 64 | |||||
REV_ | 版本號 | INT(11) | 11 | 是 | ||||
USER_ID_ | 用戶ID | VARCHAR(64) | 64 | 是 | ||||
TYPE_ | 類型 | VARCHAR(64) | 64 | 是 | ||||
KEY_ | formINPut名稱 | VARCHAR(255) | 255 | 是 | ||||
VALUE_ | 值 | VARCHAR(255) | 255 | 是 | ||||
PASSWORD_ | 密碼 | LONGBLOB | 是 | |||||
PARENT_ID_ | 父節點 | VARCHAR(255) | 255 | 是 |
1.2.14 表名:ACT_ID_MEMBERSHIP(用戶用戶組關聯表)
用來保存用戶的分組信息
ACT_ID_MEMBERSHIP(act_id_membership) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | USER_ID_ | 用戶Id | VARCHAR(64) | 64 | ||||
是 | GROUP_ID_ | 用戶組Id | VARCHAR(64) | 64 |
1.2.15 表名:ACT_ID_USER(用戶信息表)
ACT_ID_USER(act_id_user) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | ||||
REV_ | 版本號 | INT(11) | 11 | 是 | ||||
FIRST_ | 用戶名稱 | VARCHAR(255) | 255 | 是 | ||||
LAST_ | 用戶姓氏 | VARCHAR(255) | 255 | 是 | ||||
EMAIL_ | 郵箱 | VARCHAR(255) | 255 | 是 | ||||
PWD_ | 密碼 | VARCHAR(255) | 255 | 是 | ||||
PICTURE_ID_ | VARCHAR(64) | 64 | 是 |
1.2.16 表名:ACT_RE_DEPLOYMENT(部署信息表)
用來存儲部署時需要持久化保存下來的信息
ACT_RE_DEPLOYMENT(act_re_deployment) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | ID_ | 部署編號,自增長 | VARCHAR(64) | 64 | ||||
NAME_ | 部署包的名稱 | VARCHAR(255) | 255 | 是 | ||||
CATEGORY_ | 類型 | VARCHAR(255) | 255 | 是 | ||||
TENANT_ID_ | 租戶 | VARCHAR(255) | 255 | 是 | 多租戶通常是在軟件需要爲多個不同組織服務時產生的概念 | |||
DEPLOY_TIME_ | TIMESTAMP | CURRENT_TIMESTAMP |
1.2.17 表名:ACT_RE_MODEL(流程設計模型表)
創建流程的設計模型時,保存在該數據表中。
ACT_RE_MODEL(act_re_model) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | ID_ | |||
REV_ | INT(11) | 11 | 是 | 樂觀鎖 | ||||
NAME_ | 模型的名稱: 比如:收文管理 | VARCHAR(255) | 255 | 是 | 名稱 | |||
KEY_ | 模型的關鍵字,流程引擎用到。 比如:FTOA_SWGL | VARCHAR(255) | 255 | 是 | ||||
CATEGORY_ | 類型,用戶自己對流程模型的分類。 | VARCHAR(255) | 255 | 是 | 分類 | |||
CREATE_TIME_ | 創建時間 | TIMESTAMP | 是 | 創建時間 | ||||
LAST_UPDATE_TIME_ | 最後修改時間 | TIMESTAMP | 是 | 最新修改時間 | ||||
VERSION_ | 版本,從1開始。 | INT(11) | 11 | 是 | 版本 | |||
META_INFO_ | 數據源信息,比如: {"name":"FTOA_SWGL","revision":1,"description":"豐臺財政局OA,收文管理流程"} | VARCHAR(4000) | 4000 | 是 | 以json格式保存流程定義的信息 | |||
DEPLOYMENT_ID_ | 部署ID | VARCHAR(64) | 64 | 是 | 部署ID | |||
EDITOR_SOURCE_VALUE_ID_ | VARCHAR(64) | 64 | 是 | |||||
EDITOR_SOURCE_EXTRA_VALUE_ID_ | VARCHAR(64) | 64 | 是 | 是 ACT_GE_BYTEARRAY 表中的ID_值。 | ||||
TENANT_ID_ | 租戶 | VARCHAR(255) | 255 | 是 |
1.2.18 表名:ACT_RE_PROCDEF(流程定義:解析表)
流程解析表,解析成功了,在該表保存一條記錄。業務流程定義數據表
ACT_RE_PROCDEF(act_re_procdef) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省 | 備註 |
是 | ID_ | 流程ID,由“流程編號:流程版本號:自增長ID”組成 | VARCHAR(64) | 64 | ID_ | |||
REV_ | 版本號 | INT(11) | 11 | 是 | 樂觀鎖 | |||
CATEGORY_ | 流程命名空間(該編號就是流程文件targetNamespace的屬性值) | VARCHAR(255) | 255 | 是 | 流程定義的Namespace就是類別 | |||
NAME_ | 流程名稱(該編號就是流程文件process元素的name屬性值) | VARCHAR(255) | 255 | 是 | 名稱 | |||
KEY_ | 流程編號(該編號就是流程文件process元素的id屬性值) | VARCHAR(255) | 255 | 流程定義ID | ||||
VERSION_ | 流程版本號(由程序控制,新增即爲1,修改後依次加1來完成的) | INT(11) | 11 | 版本 | ||||
DEPLOYMENT_ID_ | 部署編號 | VARCHAR(64) | 64 | 是 | 部署表ID | |||
RESOURCE_NAME_ | 資源文件名稱 | VARCHAR(4000) | 4000 | 是 | 流程bpmn文件名稱 | |||
DGRM_RESOURCE_NAME_ | 圖片資源文件名稱 | VARCHAR(4000) | 4000 | 是 | png流程圖片名稱 | |||
DESCRIPTION_ | 描述信息 | VARCHAR(4000) | 4000 | 是 | 描述 | |||
HAS_START_FORM_KEY_ | 是否從key啓動 | TINYINT(4) | 4 | 是 | start節點是否存在formKey 0否 1是 | |||
SUSPENSION_STATE_ | 是否掛起 | INT(11) | 11 | 是 |
注:此表和ACT_RE_DEPLOYMENT是多對一的關係,即,一個部署的bar包裏可能包含多個流程定義文件,每個流程定義文件都會有一條記錄在ACT_RE_PROCDEF表內,每個流程定義的數據,都會對於ACT_GE_BYTEARRAY表內的一個資源文件和PNG圖片文件。和ACT_GE_BYTEARRAY的關聯是通過程序用ACT_GE_BYTEARRAY.NAME與ACT_RE_PROCDEF.NAME_完成的,在數據庫表結構中沒有體現。
1.2.19 表名:ACT_RU_EVENT_SUBSCR(運行時事件)
ACT_RU_EVENT_SUBSCR(act_ru_event_subscr) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | ID_ | ID | VARCHAR(64) | 64 | ||||
REV_ | 版本號 | INT(11) | 11 | 是 | ||||
EVENT_TYPE_ | 事件類型 | VARCHAR(255) | 255 | |||||
EVENT_NAME_ | 事件名稱 | VARCHAR(255) | 255 | 是 | ||||
EXECUTION_ID_ | 流程執行ID | VARCHAR(64) | 64 | 是 | ||||
PROC_INST_ID_ | 流程實例ID | VARCHAR(64) | 64 | 是 | ||||
ACTIVITY_ID_ | 活動ID | VARCHAR(64) | 64 | 是 | ||||
CONFIGURATION_ | 配置信息 | VARCHAR(255) | 255 | 是 | ||||
CREATED_ | 創建時間 | TIMESTAMP | CURRENT_TIMESTAMP |
1.2.20 表名:ACT_RU_EXECUTION(運行時流程執行實例)
核心,我的×××任務查詢表
ACT_RU_EXECUTION(act_ru_execution) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | ID_ | |||
REV_ | 版本號 | INT(11) | 11 | 是 | 樂觀鎖 | |||
PROC_INST_ID_ | 流程實例編號 | VARCHAR(64) | 64 | 是 | 流程實例ID | |||
BUSINESS_KEY_ | 業務編號 | VARCHAR(255) | 255 | 是 | 業務主鍵ID | |||
PARENT_ID_ | 父執行流程 | VARCHAR(64) | 64 | 是 | 父節點實例ID | |||
PROC_DEF_ID_ | 流程定義Id | VARCHAR(64) | 64 | 是 | 流程定義ID | |||
SUPER_EXEC_ | VARCHAR(64) | 64 | 是 | |||||
ACT_ID_ | 實例id | VARCHAR(255) | 255 | 是 | ACT_HI_ACTINST中ID | |||
IS_ACTIVE_ | 激活狀態 | TINYINT(4) | 4 | 是 | 是否存活 | |||
IS_CONCURRENT_ | 併發狀態 | TINYINT(4) | 4 | 是 | 是否爲並行(true/false) | |||
IS_SCOPE_ | TINYINT(4) | 4 | 是 | |||||
IS_EVENT_SCOPE_ | TINYINT(4) | 4 | 是 | |||||
SUSPENSION_STATE_ | 暫停狀態_ | INT(11) | 11 | 是 | 掛起狀態 1激活 2掛起 | |||
CACHED_ENT_STATE_ | 緩存結束狀態_ | INT(11) | 11 | 是 |
1.2.21 表名:ACT_RU_IDENTITYLINK(身份聯繫)
主要存儲當前節點參與者的信息,任務參與者數據表。
ACT_RU_IDENTITYLINK(act_ru_identitylink) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 取值說明 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | ||||
REV_ | 版本號 | INT(11) | 11 | 是 | ||||
GROUP_ID_ | 用戶組ID | VARCHAR(255) | 255 | 是 | ||||
TYPE_ | 用戶組類型 | VARCHAR(255) | 255 | 是 | owner、starter、participant。即:受讓人,候選人,所有者、起動器、參與者 | |||
USER_ID_ | 用戶ID | VARCHAR(255) | 255 | 是 | ||||
TASK_ID_ | 任務Id | VARCHAR(64) | 64 | 是 | ||||
PROC_INST_ID_ | 流程實例ID | VARCHAR(64) | 64 | 是 | ||||
PROC_DEF_ID_ | 流程定義Id | VARCHAR(64) | 64 | 是 |
1.2.22 表名:ACT_RU_JOB(運行中的任務)
運行時定時任務數據表
ACT_RU_JOB(act_ru_job) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 取值說明 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | 標識 | |||
REV_ | 版本號 | INT(11) | 11 | 是 | 版本 | |||
TYPE_ | TYPE_ | VARCHAR(255) | 255 | 類型 | ||||
LOCK_EXP_TIME_ | LOCK_EXP_TIME_ | TIMESTAMP | 是 | 鎖定釋放時間 | ||||
LOCK_OWNER_ | LOCK_OWNER_ | VARCHAR(255) | 255 | 是 | 掛起者 | |||
EXCLUSIVE_ | EXCLUSIVE_ | TINYINT(1) | 1 | 是 | ||||
EXECUTION_ID_ | EXECUTION_ID_ | VARCHAR(64) | 64 | 是 | 執行實例ID | |||
PROCESS_INSTANCE_ID_ | PROCESS_INSTANCE_ID_ | VARCHAR(64) | 64 | 是 | 流程實例ID | |||
PROC_DEF_ID_ | PROC_DEF_ID_ | VARCHAR(64) | 64 | 是 | 流程定義ID | |||
RETRIES_ | RETRIES_ | INT(11) | 11 | 是 | ||||
EXCEPTION_STACK_ID_ | EXCEPTION_STACK_ID_ | VARCHAR(64) | 64 | 是 | 異常信息ID | |||
EXCEPTION_MSG_ | EXCEPTION_MSG_ | VARCHAR(4000) | 4000 | 是 | 異常信息 | |||
DUEDATE_ | DUEDATE_ | TIMESTAMP | 是 | 到期時間 | ||||
REPEAT_ | REPEAT_ | VARCHAR(255) | 255 | 是 | 重複 | |||
HANDLER_TYPE_ | HANDLER_TYPE_ | VARCHAR(255) | 255 | 是 | 處理類型 | |||
HANDLER_CFG_ | HANDLER_CFG_ | VARCHAR(4000) | 4000 | 是 | 標識 |
1.2.23 表名:ACT_RU_TASK(運行時任務數據表)
(執行中實時任務)×××任務查詢表
ACT_RU_TASK(act_ru_task) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 取值說明 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | ID_ | |||
REV_ | 版本號 | INT(11) | 11 | 是 | 樂觀鎖 | |||
EXECUTION_ID_ | VARCHAR(64) | 64 | 是 | 執行實例ID | ||||
PROC_INST_ID_ | 流程實例ID(外鍵PROC_INST_ID_) | VARCHAR(64) | 64 | 是 | 流程實例ID | |||
PROC_DEF_ID_ | 流程定義ID | VARCHAR(64) | 64 | 是 | 流程定義ID | |||
NAME_ | 任務名稱 | VARCHAR(255) | 255 | 是 | 節點定義名稱 | |||
PARENT_TASK_ID_ | 父節任務ID | VARCHAR(64) | 64 | 是 | 父節點實例ID | |||
DESCRIPTION_ | 任務描述 | VARCHAR(4000) | 4000 | 是 | 節點定義描述 | |||
TASK_DEF_KEY_ | 任務定義key | VARCHAR(255) | 255 | 是 | 任務定義的ID | |||
OWNER_ | 所屬人(老闆) | VARCHAR(255) | 255 | 是 | 擁有者(一般情況下爲空,只有在委託時纔有值) | |||
ASSIGNEE_ | 代理人員 (受讓人) | VARCHAR(255) | 255 | 是 | 簽收人或委託人 | |||
DELEGATION_ | 代理團 | VARCHAR(64) | 64 | 是 | 委託類型,DelegationState分爲兩種:PENDING,RESOLVED。如無委託則爲空 | |||
PRIORITY_ | 優先權 | INT(11) | 11 | 是 | 優先級別,默認爲:50 | |||
CREATE_TIME_ | 創建時間 | TIMESTAMP | 創建時間,CURRENT_TIMESTAMP | |||||
DUE_DATE_ | 執行時間 | DATETIME | 是 | 耗時 | ||||
SUSPENSION_STATE_ | 暫停狀態 | INT(11) | 11 | 是 | 1代表激活 2代表掛起 |
1.2.24 表名:ACT_RU_VARIABLE(運行時流程變量數據表)
ACT_RU_VARIABLE(act_ru_variable) | ||||||||
是否主鍵 | 字段名 | 字段描述 | 數據類型 | 長度 | 可空 | 約束 | 缺省值 | 備註 |
是 | ID_ | ID_ | VARCHAR(64) | 64 | 主鍵標識 | |||
REV_ | 版本號 | INT(11) | 11 | 是 | 樂觀鎖 | |||
TYPE | 編碼類型 | VARCHAR(255) | 255 | |||||
NAME_ | 變量名稱 | VARCHAR(255) | 255 | 變量名稱 | ||||
EXECUTION_ID_ | 執行實例ID | VARCHAR(64) | 64 | 是 | 執行的ID | |||
PROC_INST_ID_ | 流程實例Id | VARCHAR(64) | 64 | 是 | 流程實例ID | |||
TASK_ID_ | 任務id | VARCHAR(64) | 64 | 是 | 節點實例ID(Local) | |||
BYTEARRAY_ID_ | 字節組ID | VARCHAR(64) | 64 | 是 | 字節表的ID (ACT_GE_BYTEARRAY) | |||
DOUBLE_ | DOUBLE_ | DOUBLE | 是 | 存儲變量類型爲Double | ||||
LONG_ | LONG_ | BIGINT(20) | 20 | 是 | 存儲變量類型爲long | |||
TEXT_ | TEXT_ | VARCHAR(4000) | 4000 | 是 | 存儲變量值類型爲String 如此處存儲持久化對象時,值jpa對象的class | |||
TEXT2_ | TEXT2_ | VARCHAR(4000) | 4000 | 是 | 此處存儲的是JPA持久化對象時,纔會有值。此值爲對象ID |
2 Activiti中主要對象的關係
本節主要介紹在工作流中出現的幾個對象及其之間的關係,以及在Activiti中各個對象是如何關聯的。
在開始之前先看看下圖,對整個對象結構有個瞭解,再結合實例詳細介紹理解。
圖1.Activiti中幾個對象之間的關係
我們模擬一個請假的流程進行分析介紹,該流程主要包含以下幾個步驟:
u 員工申請請假
u 部門領導審批
u 人事審批
u 員工銷假
ProcessInstance對象
員工開始申請請假流程,通過runtimeService.startProcessInstance()方法啓動,引擎會創建一個流程實例(ProcessInstance)。
簡單來說流程實例就是根據一次(一條)業務數據用流程驅動的入口,兩者之間是一對一的關係。流程引擎會創建一條數據到ACT_RU_EXECUTION表,同時也會根據history的級別決定是否查詢相同的歷史數據到ACT_HI_PROCINST表。
啓動完流程之後業務和流程已經建立了關聯關係,第一步結束。
啓動流程和業務關聯區別:
u 對於自定義表單來說啓動的時候會傳入businessKey作爲業務和流程的關聯屬性
u 對於動態表單來說不需要使用businessKey關聯,因爲所有的數據都保存在引擎的表中
u 對於外部表單來說businessKey是可選的,但是一般不會爲空,和自定義表單類似
Execution對象
對於初學者來說,最難理解的地方就是ProcessInstance與Execution之間的關係,要分兩種情況說明。Execution的含義就是一個流程實例(ProcessInstance)具體要執行的過程對象。
不過在說明之前先聲明兩者的對象映射關係:
ProcessInstance(1)→ Execution(N),(其中N>=1)。
1) 值相等的情況:
除了在流程中啓動的子流程之外,流程啓動之後在表ACT_RU_EXECUTION中的字段ID_和PROC_INST_ID_字段值是相同的。
圖2.ID_和PROC_INST_ID_相等
2) 值不相等的情況:
不相等的情況目前只會出現在子流程中(包含:嵌套、引入),例如一個購物流程中除了下單、出庫節點之外可能還有一個付款子流程,在實際企業應用中付款流程通常是作爲公用的,所以使用子流程作爲主流程(購物流程)的一部分。
當任務到達子流程時引擎會自動創建一個付款流程,但是這個流程有一個特殊的地方,在數據庫可以直觀體現,如下圖。
圖3.ID_和PROC_INST_ID_不相等
上圖中有兩條數據,第二條數據(嵌入的子流程)的PARENT_ID_等於第一條數據的ID_和PROC_INST_ID_,並且兩條數據的PROC_INST_ID_相同。
上圖中還有一點特殊的地方,字段IS_ACTIVE_的值分別是0和1,說明正在執行子流程主流程掛起。
Task對象
前面說了ProcessInstance和業務是一對一關聯的,和業務數據最親密;而Task則和用戶最親密的(UserTask),用戶每天的待辦事項就是一個個的Task對象。
從圖1中看得出Execution和Task是一對一關係,Task可以是任何類型的Task實現,可以是用戶任務(UserTask)、Java服務(JavaServiceTask)等,在實際流程運行中只不過面向對象不同,用戶任務(UserTask)需要有人爲參與完成(complete),Java服務需要由系統自動執行(execution)。
圖4. 表ACT_RU_TASK
Task是在流程定義中看到的最大單位,每當一個Task完成的時候引擎會把當前的任務移動到歷史中,然後插入下一個任務插入到表ACT_RU_TASK中。結合請假流程來說就是讓用戶點擊“完成”按鈕提交當前任務是的動作,引擎自動根據任務的順序流或者排他分支判斷走向。
HistoryActivity(歷史活動)
圖5. 表ACT_HI_ACTINST
Activity包含了流程中所有的活動數據,例如開始事件(圖5表中的第1條數據)、各種分支(排他分支、並行分支等,圖5表中的第2條數據)、以及剛剛提到的Task執行記錄(如圖5表中的第3、4條數據)。
有些人認爲Activity和Task是多對一關係,其實不是,從上圖中可以看出來根本沒有Task相關的字段。
結合請假流程來說,如Task中提到的當完成流程的時候所有下一步要執行的任務(包括各種分支)都會創建一個Activity記錄到數據庫中。例如領導審覈節點點擊“同意”按鈕就會流轉到人事審批節點,如果“駁回”那就流轉到調整請假內容節點,每一次操作的Task背後實際記錄更詳細的活動(Activity)。