一、數據庫表的命名
acitiviti數據庫中表的命名都是以act_開頭的。
第二部分是一個兩個字符用例表的標識。此用例大體與服務api是匹配的。
act_re_*:’re’表示repository。帶此前綴的表包含的是靜態信息,如,流程定義,流程的資源(圖片,規則等)。
act_ru_*:’ru’表示runtime。這是運行時的表存儲着流程變量,用戶任務,變量,職責(job)等運行時的數據。activiti只存儲實例執行期間的運行時數據,當流程實例結束時,將刪除這些記錄。這就保證了這些運行時的表小且快。
act_id_*:’id’表示identity。這些表包含標識的信息,如用戶,用戶組,等等。
act_hi_*:’hi’表示history。就是這些表包含着歷史的相關數據,如結束的流程實例,變量,任務,等等。
act_ge_*:普通數據,各種情況都使用的數據。
二、數據庫表結構說明
1,act_ge_property:屬性數據表。存儲這個流程引擎級別的數據。
name_:屬性名稱
value_:屬性值
rev_int:版本號
2,act_ge_bytearray:用來保存部署文件的大文本數據
id_:資源文件編號,自增長
rev_int:版本號
name_:資源文件名稱
deployment_id_:來自於父表act_re_deployment的主鍵
bytes_:大文本類型,存儲文本字節流
3,act_re_deployment:用來存儲部署時需要持久化保存下來的信息
id_:部署編號,自增長
name_:部署包的名稱
deploy_time_:部署時間
4,act_re_procdef:業務流程定義數據表
id_:流程id,由“流程編號:流程版本號:自增長id”組成
category_:流程命名空間(該編號就是流程文件targetnamespace的屬性值)
name_:流程名稱(該編號就是流程文件process元素的name屬性值)
key_:流程編號(該編號就是流程文件process元素的id屬性值)
version_:流程版本號(由程序控制,新增即為1,修改后依次加1來完成的)
deployment_id_:部署編號
resource_name_:資源文件名稱
dgrm_resource_name_:圖片資源文件名稱
has_start_from_key_:是否有start from key
注:此表和act_re_deployment是多對一的關系,即,一個部署的bar包里可能包含多個流程定義文件,
每個流程定義文件都會有一條記錄在act_reprocdef表內,每個流程定義的數據,都會對於act_ge_bytearray表內的一個資源文件
和png圖片文件。和act_ge_bytearray的關聯是通過程序用act_ge_bytearray.name與act_re_procdef.name_完成的,
在數據庫表結構中沒有體現。
5,act_id_group:用來存儲用戶組信息。
id_:用戶組名*
rev_int:版本號
name_:用戶組描述信息*
type_:用戶組類型
6,act_id_membership:用來保存用戶的分組信息
user_id_:用戶名
group_id_:用戶組名
7,act_id_user:用戶信息表
id_:用戶名
rev_int:版本號
first_:用戶名稱
last_:用戶姓氏
email_:郵箱
pwd_:密碼
8,act_ru_execution:
id_:主鍵
rev_:版本號
proc_inst_id_:流程實例編號
business_key_:業務編號
parent_id_:找到該執行實例的父級,最終會找到整個流程的執行實例
proc_def_id_:流程id
super_exec_: 引用的執行模板
act_id_: 節點id
is_active_: 是否訪問
is_concurrent_:
is_scope_:
9,act_ru_task:運行時任務數據表。
id_:主鍵
rev_:版本號
execution_id_: 執行實例的id
proc_inst_id_: 流程實例的id
proc_def_id_: 流程定義的id,對應act_re_procdef 的id_
name_: 任務名稱,對應 ***task 的name
parent_task_id_ : 對應父任務
description_:
task_def_key_: ***task 的id
owner_ : 發起人
assignee_: 分配到任務的人
delegation_ : 委托人
priority_: 緊急程度
create_time_: 發起時間
due_time_:審批時長
10,act_ru_identitylink:任務參與者數據表。主要存儲當前節點參與者的信息。
id_: 標識
rev_: 版本
group_id_: 組織id
type_: 類型
user_id_: 用戶id
task_id_: 任務id
11,act_ru_variable:運行時流程變量數據表。
id_:標識
rev_:版本號
type_:數據類型
name_:變量名
execution_id_: 執行實例id
proc_inst_id_: 流程實例id
task_id_: 任務id
bytearray_id_:
double_:若數據類型為double ,保存數據在此列
long_: 若數據類型為long保存數據到此列
text_: string 保存到此列
text2_:
12,act_hi_procinst:
id_ : 唯一標識
proc_inst_id_ : 流程id
business_key_ : 業務編號
proc_def_id_ : 流程定義id
start_time_ : 流程開始時間
ent__time : 結束時間
duration_ : 流程經過時間
start_user_id_ : 開啟流程用戶id
start_act_id_ : 開始節點
end_act_id_: 結束節點
super_process_instance_id_ : 父流程流程id
delete_reason_ : 從運行中任務表中刪除原因
13,act_hi_actinst:
id_ : 標識
proc_def_id_ :流程定義id
proc_inst_id_ : 流程實例id
execution_id_ : 執行實例
act_id_ : 節點id
act_name_ : 節點名稱
act_type_ : 節點類型
assignee_ : 節點任務分配人
start_time_ : 開始時間
end_time_ : 結束時間
duration : 經過時長
14,act_hi_taskinst:
id_ : 標識
proc_def_id_ : 流程定義id
task_def_key_ : 任務定義id
proc_inst_id_ : 流程實例id
execution_id_ : 執行實例id
parent_task_id_ : 父任務id
name_ : 任務名稱
description_ : 說明
owner_ : 擁有人(發起人)
assignee_ : 分配到任務的人
start__time_ : 開始任務時間
end_time_ : 結束任務時間
duration_ : 時長
delete_reason_ :從運行時任務表中刪除的原因
priority_ : 緊急程度
due_date_ :
15,act_hi_detail:啟動流程或者在任務complete之后,記錄歷史流程變量
id_ : 標識
type_ : variableupdate 和 formproperty 兩種值
proc_inst_id_ : 對應流程實例id
execution_id_ : 對應執行實例id
task_id_ : 對應任務id
act_inst_id : 對應節點id
name_ : 歷史流程變量名稱,或者表單屬性的名稱
var_type_ : 定義類型
rev_ : 版本
time_ : 導入時間
bytearray_id_
double_ : 如果定義的變量或者表單屬性的類型為double,他的值存在這里
long_ : 如果定義的變量或者表單屬性的類型為long ,他的值存在這里
text_ : 如果定義的變量或者表單屬性的類型為string,值存在這里
text2_:
16,act_hi_comment 意見表
id_ :標識
type_ : 意見記錄類型 為comment 時 為處理意見
time_ : 記錄時間
user_id_ :
task_id_ : 對應任務的id
proc_inst_id_ : 對應的流程實例的id
action_ : 為addcomment 時為處理意見
message_ : 處理意見
full_msg_ :
三、總結:
1,流程文件部署主要涉及到3個表,分別是:act_ge_bytearray、act_re_deployment、act_re_procdef。
主要完成“部署包”-->“流程定義文件”-->“所有包內文件”的解析部署關系。從表結構中可以看出,流程定義的元素需要每次從數據庫加載並解析,
因為流程定義的元素沒有轉化成數據庫表來完成,當然流程元素解析后是放在緩存中的;
2,流程定義中的java類文件不保存在數據庫里 。
3,組織機構的管理相對較弱,如果要納入單點登錄體系內還需要改造完成。
結論及總結
l 流程文件部署主要涉及到3個表,分別是:act_ge_bytearray、act_re_deployment、act_re_procdef。主要完成“部署包”-->“流程定義文件”-->“所有包內文件”的解析部署關系。從表結構中可以看出,流程定義的元素需要每次從數據庫加載並解析,因為流程定義的元素沒有轉化成數據庫表來完成,當然流程元素解析后是放在緩存中的,具體的還需要后面詳細研究。
l 流程定義中的java類文件不保存在數據庫里 。
l 組織機構的管理相對較弱,如果要納入單點登錄體系內還需要改造完成,具體改造方法有待研究。
l 運行時對象的執行與數據庫記錄之間的關系需要繼續研究
l 歷史數據的保存及作用需要繼續研究。
activiti使用mybatis3做持久化工作,可以在配置中設置流程引擎啟動時創建表。
activiti使用到的表都是act_開頭的。
act_re_*:流程定義存儲。
act_ru_*:流程執行記錄,記錄流程啟動到結束的所有動作,流程結束后會清除相關記錄。
act_id_*:用戶記錄,流程中使用到的用戶和組。
act_hi_*:流程執行的歷史記錄。
act_ge_*:通用數據及設置。
使用到的表:
act_ge_bytearray:流程部署的數據。
act_ge_property:通用設置。
act_hi_actinst:流程活動的實例。
act_hi_attachment:
act_hi_comment:
act_hi_detail:
act_hi_procinst:流程實例。
act_hi_taskinst:任務實例。
act_id_group:用戶組。
act_id_info:
act_id_membership:
act_id_user:用戶。
act_re_deployment:部署記錄。
act_re_procdef:流程定義。
act_ru_execution:流程執行記錄。
act_ru_identitylink:
act_ru_job:
act_ru_task:執行的任務記錄。
act_ru_variable:執行中的變量記錄。
activiti-administrator
自帶的用戶管理系統,維護用戶和組,需要配置數據連接參數,在activiti-administrator\web-inf\applicationcontext.xml中,並加入jdbc驅動包。
activiti-cycle
pvm活動檢測的,由activiti-rest提供服務,不需配置。
activiti-explorer
可以查看用戶任務和啟動流程,由activiti-rest提供服務,不需配置。
activiti-kickstart
簡單的點對點流程定義維護工具,需要配置數據連接,把activiti.cfg.xml文件放在classes下,並加入驅動包。
activiti-modeler
在線編輯和維護流程定義的工具,最后以文件夾方式部署,需要配置activiti-modeler\web-inf\classes\configuration.properties文件。
activiti-probe
pvm的觀測服務,由activiti-rest提供服務,不需配置,可以查看deployment、processdefinition、processinstance、database。
activiti-rest
其他幾個應用的服務提供者,需要配置數據連接,把activiti.cfg.xml文件放在classes下,並加入驅動包。