前言
本文是根據《瘋狂工作流講義-Activiti6.0》一書中提取過來的,有興趣的可以去當當網買這本書,講的很不錯,最后還有實戰案例。
雖然是提取過來的,但完全靠手打梳理,覺得有用的小伙伴可以給予一定支持,謝謝。
共分為六大部分
1、通用數據表
2、流程存儲數據表
3、身份數據表
4、運行時數據表
5、歷史數據表
6、DMN規則引擎數據表
一、通用數據表
1、資源表,act_ge_bytearray
用於保存和流程引擎相關的資源,只要調用了Activiti存儲服務的API,涉及的資源均會被轉換為byte數組保存到這個表中。
一般情況下,Activiti使用這個表來保存字符串、流程文件的內容、流程圖片內容。
主要包含如下字段:
字段 | 注釋 |
---|---|
REV_ | 數據版本,Activiti為一些有可能會被頻繁修改的數據表,加入該字段,用來表示該數據被操作的次數。 |
Name_ | 資源名稱,類型為varchar,長度為255字節。 |
DEPLOYMENT_ID_ | 一次部署可以添加多個資源,該字段與部署表act_re_deployment的主鍵相關聯。 |
BYTES_ | 資源內容,數據類型為longblob,最大可存4GB數據。 |
GENERATED_ | 是否由Activiti自動產生的資源,0表示false,1為true。 |
2、屬性表,act_ge_property
Activiti將全部的屬性抽象為key-value對,每個屬性都有名稱和值,使用act_ge_property來保存這些屬性,該表有以下三個字段。
字段 | 注釋 |
---|---|
NAME_ | 屬性名稱,varchar類型。 |
VALUE_ | 屬性值,varchar類型。 |
REV_ | 數據的版本號。 |
二、流程存儲數據表
1、部署數據表,act_re_deployment。
部署信息會被保存在部署表中
主要包含字段:
字段 | 注釋 |
---|---|
NAME_ | 部署的名稱,可以調用Activiti的流程存儲API來設置,類型為varchar,長度為255字節。 |
DEPLOYMENT_TIME_ | 部署時間,類型為timestamp。 |
2、流程定義表,act_re_procdef。
Activiti在部署添加資源時,如果發布部署的文件是流程文件(.bpmn或者.BPMN20.xml),則除了會解析這些流程文件,將內容保存到資源表外,還會解析流程文件的內容,形成特定的流程定義數據,寫入流程定義表中。
主要包含字段:
字段 | 注釋 |
---|---|
GATEGORY_ | 流程定義的分類,讀取流程XML文件中的targetNamespace值。 |
NAME_ | 流程定義名稱,讀取流程文件中process元素的name屬性。 |
KEY_ | 流程定義的key,讀取流程文件中process元素的id屬性。 |
DEPLOYMENT_ID_ | 流程定義對應的部署數據ID |
RESOURCE_NAME_ | 流程定義對應的資源名稱,一般為流程文件的相對路徑。 |
DGRM_RESOURCE_NAME_ | 流程定義對應的流程圖資源名稱 |
SUSPENSION_STATE_ | 表示流程定義的狀態是激活還是中止,激活狀態時該字段值為1,中止時字段值為2,如果流程定義被設置為中止狀態,那么將不能啟動流程。 |
三、身份數據表
1、用戶表,act_id_user。
流程引擎的用戶信息被保存在act_id_user表中
主要包含字段:
字段 | 注釋 |
---|---|
FIRST_ | 人名 |
LAST_ | 姓氏 |
EMAIL_ | 用戶郵箱 |
PWD_ | 用戶密碼 |
PICTURE_ID_ | 用戶圖片,對應資源中的數據ID。 |
2、用戶賬號信息表,act_id_info。
Activiti將用戶、用戶賬號和用戶信息分為三種數據,其中用戶表保存用戶的數據,而用戶賬號和用戶信息,則被保存到act_id_info表中。
主要包含字段:
字段 | 注釋 |
---|---|
USER_ID_ | 對應用戶表的數據ID,但沒有強制做外鍵關聯。 |
TYPE_ | 信息類型,當前可以設置用戶賬號(account)、用戶信息(userinfo)和NULL三種值。 |
KEY_ | 數據的鍵,可以根據該鍵來查找用戶信息的值。 |
VALUE_ | 數據的值,類型為varchar,長度為255字節。 |
PASSWORD_ | 用戶賬號的密碼字段,不過當前版本的Activiti並沒有使用該字段。 |
PARENT_ID_ | 該信息的父信息ID,如果一條數據設置了父信息ID,則表示該數據時用戶賬號(信息)的明細數據,例如一個賬號有激活日期,那么激活日期就是該賬號的明細數據,此處使用了自關聯來實現。 |
3、用戶組表,act_id_group。
保存用戶組的數據
主要包含字段:
字段 | 注釋 |
---|---|
NAME_ | 用戶組名稱 |
TYPE_ | 用戶組類型,類型不由Activiti提供,但是在某些業務中,Activiti會根據該字段的值進行查詢,字段值由Activiti定義(如Activiti的webservice)。 |
4、關系表,act_id_membership。
一個用戶組下有多個用戶,一個用戶可以屬於不同的用戶組,那么這種多對多的關系,就使用關系表來進行描述,關系表為act_id_membership。
主要包含字段:
PS:act_id_membership的兩個字段均做了外鍵約束,寫入該表的數據,必須要有用戶和用戶組數據與之關聯。
字段 | 注釋 |
---|---|
USER_ID_ | 用戶ID,不能為NULL。 |
GROUP_ID_ | 用戶組ID,不能為NULL。 |
四、運行時數據表
1、流程實例表,act_ru_execution。
流程啟動后,會產生一個流程實例,同時會產生相應的執行流,流程實例和執行流數據均被保存在act_ru_execution表中,如果一個流程實例只有一條執行流,那么該表中只產生一條數據,該數據既表示執行流,也表示流程實例。
主要包含字段:
字段 | 注釋 |
---|---|
PROC_INST_ID_ | 流程實例ID,一個流程實例有可能會產生多個執行流,該字段表示執行流所屬的流程實例。 |
BUSINESS_KEY_ | 啟動流程時指定的業務主鍵 |
PARENT_ID_ | 父執行流的ID,一個流程實例有可能會產生執行流,該字段保存父執行流ID。 |
PROC_DEF_ID_ | 流程定義數據的ID |
ACT_ID_ | 當前執行流行為的ID,ID在流程文件中定義。 |
IS_ACTIVE_ | 該執行流是否活躍的標識 |
IS_CONCURRENT_ | 執行流是否正在並行 |
SUSPENSION_STATE_ | 標識流程的中斷狀態 |
2、流程任務表,act_ru_task。
流程在運行過程中所產生的任務數據保存在act_ru_task表中
主要包含字段:
字段 | 注釋 |
---|---|
EXECUTION_ID_ | 任務所在的執行流ID |
PROC_INST_ID_ | 對應的流程實例ID |
PROC_DEF_ID_ | 對應流程定義數據的ID |
NAME_ | 任務名稱,在流程文件中配置。 |
DESCRIPTION_ | 任務描述,在流程文件中配置。 |
TASK_DEF_KEY_ | 任務定義的ID值,在流程文件中定義。 |
OWNER_ | 任務擁有人,沒有做外鍵關聯。 |
ASSIGNEE_ | 被指派執行該任務的人,沒有做外鍵關聯。 |
PRIORITY_ | 任務優先級數值 |
DUE_DATE_ | 任務預定日期,類型為datetime。 |
3、流程參數表,act_ru_variable。
存放流程中的參數,這類參數包括流程實例參數、執行流參數和任務參數,參數有可能會有多種類型,因此該表使用多個字段來存放參數值。
主要包含字段:
字段 | 注釋 |
---|---|
TYPE_ | 參數類型,該字段值可以為boolean、bytes、serializable、date、double、integer、jap-entity、long、null、short、string,這些字段值均為Activiti提供,還可以通過擴展來自定義參數類型。 |
NAME_ | 參數名稱 |
EXECUTION_ID_ | 該參數對應的執行ID,可以為null。 |
PROC_INST_ID | 該參數對應的流程實例ID,可以為null。 |
TASK_ID_ | 如果該參數是任務參數,就需要設置任務ID。 |
BYTEARRAY_ID_ | 如果參數值是序列化對象,那么可以將該對象作為資源保存到資源表中,該字段保存資源表中數據的ID。 |
DOUBLE_ | 參數類型為double的話,則值會保存到該字段中。 |
LONG_ | 參數類型為long的話,則值會保存到該字段中。 |
TEXT_ | 用戶保存文本類型的參數值,該字段為varchar類型,長度為4000字節。 |
TEXT2_ | 與TEXT_字段一樣,用於保存文本類型的參數值、 |
4、流程與身份關系表,act_ru_identitylink。
用戶或者用戶組與流程數據之間的關系,使用act_ru_identitylink來保存。
主要包含字段:
字段 | 注釋 |
---|---|
GROUP_ID_ | 該關系數據中的用戶組ID |
TYPE_ | 該關系數據的類型,當前提供了3個值:assignee、candidate和owner,表示流程數據的指派人(組)、候選人(組)和擁有人。 |
USER_ID_ | 關系數據中的用戶ID |
TASK_ID_ | 關系數據中的人物ID |
PROC_DEF_ID_ | 關系數據中的流程定義ID |
5、工作數據表,一共4個。
act_ru_job:一般工作表
act_ru_deadletter_job:無法執行工作表,用於存放無法執行的工作。
act_ru_suspended_job:中斷工作表,中斷工作產生后,會將工作保存到該表中。
act_ru_timer_job:定時器工作表,用於存放定時器工作。
6、事件描述表,act_ru_event_subscr。
如果流程到達某類事件節點,Activiti會往act_ru_event_subscr表中加入事件描述數據,這些事件描述數據將會決定流程事件的觸發。
主要包含字段:
字段 | 注釋 |
---|---|
EVENT_TYPE_ | 事件類型,不同的事件會產生不同類型的事件描述,並不是所有的事件都會產生事件描述。 |
EVENT_NAME_ | 事件名稱,在流程文件中定義。 |
EXECUTION_ID_ | 事件所在的執行流ID |
PROC_INST_ID_ | 事件所在的流程實例ID |
ACTIVITY_ID_ | 具體事件的ID,在流程文件中定義。 |
CONFIGURATION_ | 事件的配置屬性,該字段中有可能存放流程定義ID、執行流ID或者其他數據。 |
五、歷史數據表
1、流程實例表,act_hi_procinst。
流程實例的歷史數據會保存在act_hi_procinst表中,只要流程被啟動,就會將流程實例的數據寫入act_hi_procinst表中。除了基本的流程字段外,與運行時數據表不同的是,歷史流程實例表還會記錄流程的開始活動ID、結束活動ID等信息。
主要包含字段:
PS:該表的其他字段含義與運行時的流程視力表字段類似,在此不再贅述。
字段 | 注釋 |
---|---|
START_ACT_ID_ | 開始活動的ID,一般是流程開始事件的ID,在流程文件中定義。 |
END_ACT_ID_ | 流程最后一個活動的ID,一般是流程結束事件的ID,在流程文件中定義。 |
DELETE_REASON_ | 該流程實例被刪除的原因 |
2、流程明細表,act_hi_detail。
記錄流程執行過程中的參數或者表單數據,由於在流程執行過程中,會產生大量這類數據,因此默認情況下,Activiti不會保存流程明細數據,除非將流程引擎的歷史數據配置為null。
3、歷史任務表,act_hi_taskinst。
當流程到達某個任務節點時,就會向歷史任務表中寫入歷史任務數據,該表與運行時的任務表類似。
4、歷史行為表,act_hi_actinst。
記錄沒一個流程活動的實例,一個流程活動將會被記錄為一條數據,根據該表可以追蹤最完整的流程信息。
5、附件表,act_hi_attachment。
使用任務服務(TaskService)的API,可以添加附件,這些附件的數據將會被保存到act_hi_attachment表中。
主要包含字段:
字段 | 注釋 |
---|---|
USER_ID_ | 附件對應的用戶ID,可以為NULL。 |
NAME_ | 附件名稱 |
DESCRIPTION_ | 附件描述 |
TYPE_ | 附件類型 |
TASK_ID_ | 該附件對應的任務ID |
PROC_INST_ID_ | 對應的流程實例ID |
URL_ | 連接到該附件的URL |
CONTENT_ID_ | 附件內容ID,附件的內容將會被保存到資源表中,該字段記錄資源數據ID。 |
6、評論表,act_hi_comment。
不只保存評論數據,還會保存某些事件數據,但它的表名為COMMENT,因此更傾向把它叫做評論表。
主要包含字段:
字段 | 注釋 |
---|---|
TYPE_ | 評論的類型,可以設值為event或者comment,表示事件記錄數據或者評論數據。 |
TIME_ | 數據產生的時間 |
USER_ID_ | 產生評論數據的用戶ID |
TASK_ID_ | 該評論數據的任務ID |
PROC_INST_ID_ | 數據對應的流程實例ID |
ACTION_ | 該評論數據的操作標識 |
MESSAGE_ | 該評論數據的信息 |
FULL_MSG_ | 該字段同樣記錄評論數據的信息 |
六、DMN規則引擎數據表
1、決策部署表,act_dmn_deployment。
保存決策數據,類似於流程定義部署,每一次部署,可以添加多份決策文件,向部署表中寫入一條部署數據。
主要包含字段:
PS:只啟動流程引擎,並不會創建規則引擎表。
字段 | 注釋 |
---|---|
NAME_ | 部署名稱 |
CATEGORY_ | 部署的目錄名稱 |
PARENT_DEPLOYMENT_ID_ | 父部署ID |
2、決策表,act_dmn_decision_table。
可以先將決策看做流程定義,決策文件中保存着決策表,部署時會解析決策文件中的決策模型並將其保存到act_dmn_decision_table中。
主要包含字段:
字段 | 注釋 |
---|---|
KEY_ | 決策業務主鍵 |
DEPLOYMENT_ID_ | 所屬的部署數據ID |
3、部署資源表,act_dmn_deployment_resource。
規則引擎相關的資源,例如決策文件、圖片等,被保存在act_dmn_deployment_resource表中,該表類似於流程引擎的資源表。
主要包含字段:
字段 | 注釋 |
---|---|
NAME_ | 資源名稱 |
DEPLOYMENT_ID_ | 所屬的部署數據ID |
RESOURCE_BYTES_ | 資源內容,longblob類型。 |
結語
Activiti6.0的表相較於Activiti5有所不同,但核心的內容實質上還是一樣,數據庫這一塊沒有太大差別,對於這么多表,大體過一遍有個印象即可,Activiti6.0的重點仍在核心API。