這是個人項目中使用的一套關於工做流和審批流的配置,算是比較簡單的,這裏只寫其中比較核心的思路,算是對以前工做的一個技術總結吧。數據庫
如下是數據庫設計;後面再跟據實例分析每一個表的做用。數據庫設計
首先是流程配置表: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:審覈記錄詳情