輕量級審批流設計

串行審批流程
  1. 基礎設置


    Screen Shot 2020-04-11 at 11.54.52 AM.png
  2. 表單設計
    表單以json形式單獨存儲到數(shù)據(jù)庫
    存儲表單的數(shù)據(jù)庫表以 f_ 開頭

    Screen Shot 2020-04-11 at 12.03.42 PM.png

  3. 流程設計
    表單和流程一對一
    流程設計完成,以json形式存儲到表單定義表, 以 wf_ 開頭
    流程分支條件來源于表單中的某個屬性,以參數(shù)形式存儲在流程json中

    Screen Shot 2020-04-11 at 12.02.50 PM.png

  4. 高級設計


    Screen Shot 2020-04-11 at 12.03.16 PM.png
截屏2020-04-13 上午11.12.37.png

將設計好的流程JSON保存到WF_PROCESS表中,產(chǎn)生一條記錄。xml文檔里有流程的名字,如果這個名字在WF_PROCESS已經(jīng)存在了,則保存時產(chǎn)生的新的記錄的version字段值會自動加1。processId是唯一的,不重復。

截屏2020-04-13 上午11.13.51.png

開啟一個流程實例時,WF_ORDER表有個字段PROCESS_ID和流程定義的process_id相關聯(lián),他們是一對多的關系。
從業(yè)務表把條件屬性取出來,直接存到variable里面,例如,請假2天以上需要不同人員審批,先把請幾天假取出來,{condition: "4>2"}。
當開啟一個流程實例WF_ORDER時,在WF_ORDER和WF_HIST_ORDER都新增一條記錄,并且同時產(chǎn)生的那兩條記錄的主鍵id是一樣的。并把這條記錄存到緩存中。
其中WF_HIST_ORDER比WF_ORDER多一個字段ORDER_STATUS 流程實例狀態(tài)(0:結束;1:活動)。
當流程沒跑完時,ORDER_STATUS的值是1;
當整個事件流程跑完了,WF_ORDER表的那條記錄會被刪除,WF_HIST_ORDER表對應的那條記錄的ORDER_STATUS的值變成0,表示流程實例跑完了。

截屏2020-04-13 上午11.14.09.png
截屏2020-04-13 上午11.41.09.png

存當前任務的;當流程執(zhí)行完當前任務節(jié)點時,WF_TASK的這條記錄會被剪切到WF_HIST_TASK表中,然后在WF_TASK表中新增下一個任務節(jié)點的信息記錄。新增的下一任務節(jié)點的task有個字段parent_task_id記住上一個任務節(jié)點在WF_HIST_TASK表里的WF_HIST_TASK_ID(上一個任務節(jié)點從WF_TASK表剪切到WF_HIST_TASK了);這樣就可以實現(xiàn)回退等功能。

截屏2020-04-13 上午11.41.37.png
截屏2020-04-13 上午11.15.05.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容