流程審批設計

這是個人項目中使用的一套關於工做流和審批流的配置,算是比較簡單的,這裏只寫其中比較核心的思路,算是對以前工做的一個技術總結吧。數據庫

如下是數據庫設計;後面再跟據實例分析每一個表的做用。數據庫設計

首先是流程配置表:post

若是須要用到一個工做流就要先配置,test_workflow_configuration就須要存入該流程的基本信息設計

test_workflow_details須要存入該流程的工做流配置,須要幾級審覈等信息3d

而後是流程記錄表:code

這個表存儲的是流程記錄,每一個流程送審以後都會存在這條記錄中,一級審覈完在插入下一級記錄blog

最後是申請單表:workflow

這個表存儲的是申請單信息工作流

ps:這裏有一些關聯設計的表被我省略了,只說最核心的思路,下面舉個栗子it

如今有一個工單申請需求

首先這個申請單記錄記錄應該存儲在test_order中,包括單據號,建立日期,建立人等信息(相關業務明細另外建表)

而後配置審覈流程

test_workflow_configuration中應該存入這個流程的基本信息

test_workflow_details中設置工做流配置(附圖1)

接下來流程開始

第一步:該工單填寫完畢,送審

當點擊【送審】按鈕時後臺須要如下操做:

1.將test_order中的status改成1送審狀態

2.流程記錄表test_workflow_records插入工做流第一條記錄(主管審覈)

test_workflow_details裏的post_id是主管崗位id,test_workflow_records裏須要的是主管這個崗位上的人的id,做爲assignee_id(該工做流受理人id)

第二步:主管登陸系統,進入審批頁面,跟據主管id/既是當前用戶id(assignee_id)和(is_audit = 0)能夠展現當前主管須要審覈的全部申請。

    主管點擊【審覈】按鈕,可根據document_code(申請單據號)展現當前申請的全部詳細信息,選擇【經過】/【駁回】,並填寫意見等,最後點擊【提交】。

此時後臺須要作如下操做:

1.更新流程記錄爲已審覈狀態(is_audit=1)

2.跟據workflow_id查詢該流程分爲多少步(幾條記錄就是幾步),取出當前記錄的flow_serialnumber,判斷是不是最後一步

如果最後一步 {

  判斷當前記錄是否經過

  若經過{

    編寫審覈經過的業務處理代碼

  }  

  不然 {

    直接更新test_order申請狀態爲駁回(status=3)

  }

若不是最後一步{

  再判斷當前記錄是否審覈經過

  若不經過{

    直接更新test_order申請狀態爲駁回(status=3)

  }

  若經過(這個栗子就走這種狀況)

  {

    取出flow_serialnumber,+1,查詢下一個節點(經理審覈)

    

    流程記錄表test_workflow_records插入工做流第二條記錄(經理審覈)

  }

插入處理方式同上

第三步:同第二步,此時流程走到經理這裏,流程繼續進行。

附上幾張截圖:

圖1:工做流配置

圖2:審覈記錄詳情

相關文章
相關標籤/搜索