https://yunmel.gitbooks.io/snakerflow/
七張核心表

表定義詳細(xì)
-
WF_PROCESS
流程定義,例如請假申請,用車申請等流程定義
153019_729ddee2_13178.png WF_ORDER
流程實例,當(dāng)前運行中的流程實例的信息,比如,我申請了一條請假流程,流程編號“請假-001”,這個請假流程“請假-001”就是一個流程實例WF_HIST_ORDER
歷史流程實例,只要啟動過的流程,歷史流程實例表中就會存儲流程的實例信息,比如這條流程是否結(jié)束WF_TASK
任務(wù),某個流程中某個節(jié)點,叫做任務(wù)實例。比如“請假-001”中需要上級審批,“上級審批”這個節(jié)點就是一個任務(wù)實例WF_HIST_TASK
歷史任務(wù)(就是執(zhí)行完了的任務(wù)),所有任務(wù)結(jié)束以后都會在歷史任務(wù)信息表里存一條記錄WF_TASK_ACTOR
每個任務(wù)對應(yīng)的參與者(記住誰可以簽收或處理),可能會有多個人或者用戶組。WF_HIST_TASK_ACTOR
歷史的參與者表,任務(wù)處理完以后,對應(yīng)處理人的信息會存到這個表里面
詳細(xì)講解
WF_PROCESS:存放流程定義,通過編輯一個后綴為.snaker的xml文檔來定義流程的走向;在前端流程定義管理里有個部署流程的按鈕,可以將編輯好的xml文檔保存到WF_PROCESS表中,并產(chǎn)生一條記錄。xml文檔里有流程的名字,如果這個名字在WF_PROCESS已經(jīng)存在了,則保存時產(chǎn)生的新的記錄的version字段值會自動加1。processId是唯一的,不重復(fù)。
WF_ORDER:存放流程實例的。開啟一個流程實例時,WF_ORDER表有個字段PROCESS_ID和流程定義的process_id相關(guān)聯(lián),他們是一對多的關(guān)系。當(dāng)開啟一個流程實例WF_ORDER時,在WF_ORDER和WF_HIST_ORDER都新增一條記錄,并且同時產(chǎn)生的那兩條記錄的主鍵id是一樣的。,其中WF_HIST_ORDER比WF_ORDER多一個字段ORDER_STATUS 流程實例狀態(tài)(0:結(jié)束;1:活動)。
當(dāng)流程沒跑完時,ORDER_STATUS的值是1;
當(dāng)整個事件流程跑完了,WF_ORDER表的那條記錄會被刪除,WF_HIST_ORDER表對應(yīng)的那條記錄的ORDER_STATUS的值變成0,表示流程實例跑完了。WF_TASK:存當(dāng)前任務(wù)的;當(dāng)流程執(zhí)行完當(dāng)前任務(wù)節(jié)點時,WF_TASK的這條記錄會被剪切到WF_HIST_TASK表中,然后在WF_TASK表中新增下一個任務(wù)節(jié)點的信息記錄。新增的下一任務(wù)節(jié)點的task有個字段parent_task_id記住上一個任務(wù)節(jié)點在WF_HIST_TASK表里的WF_HIST_TASK_ID(上一個任務(wù)節(jié)點從WF_TASK表剪切到WF_HIST_TASK了);這樣就可以實現(xiàn)回退等功能。
WF_TASK_ACTOR:存哪個任務(wù)關(guān)聯(lián)了那些參與者的,就是哪些人可以簽收或者處理。如果當(dāng)前任務(wù)節(jié)點被執(zhí)行了,則相關(guān)的參與者會被剪切到WF_HIST_TASK_ACTOR表里,和WF_TASK、WF_HIST_TASK類似,這樣回退時,就知道以前這一步是誰處理的。
假如現(xiàn)在執(zhí)行節(jié)點的任務(wù)是A2,上述中wf_task存的是執(zhí)行中的記錄,也就是說在執(zhí)行A2前,wf_task中肯定會有一條執(zhí)行中的任務(wù)記錄,假設(shè)為A1,那么執(zhí)行A2時的增刪改為先將wf_task和wf_task_actor表中A1的記錄插入wf_hist_task和wf_hist_task_actor中;其次是刪除wf_task和wf_task_actor中A1記錄,然后將A2的信息插入到wf_task和wf_task_actor中。此時wf_task表的parent_task_id是歷史表A1記錄的Id,通過此可將所有任務(wù)串聯(lián)起來。task表的variable中的值為局部變量只能在當(dāng)前task中使用。有人會有疑問,假設(shè)有如下流程圖,執(zhí)行task1時會怎么樣?

因為開始節(jié)點是一個比較特殊的nodemodel,群主稱之為流轉(zhuǎn)邏輯元素(下面總體設(shè)計思路中會有詳細(xì)介紹),它只負(fù)責(zé)流轉(zhuǎn)到下一節(jié)點不負(fù)責(zé)執(zhí)行,也就沒有數(shù)據(jù)庫的增刪改。這樣直接流轉(zhuǎn)到task1,插入wf_hist_task和wf_hist_task_actor,并且又直接流轉(zhuǎn)到end節(jié)點,end節(jié)點也是一個流轉(zhuǎn)元素,它會直接刪除wf_order表的記錄并更改該流程實例wf_hist_order表的order_state的狀態(tài)。
至此一個流程的所有增刪改查結(jié)束。
