審批流(一)


需求:


審批流程自定義
審批的每個節點可以有多個審覈人,有一個失敗則視爲審批失敗
審批的過程可以自由前進後退:
當發文到達某個節點失敗後,會自動被打回到上一個節點.
上一個節點可以選擇修改後繼續提交,或者再打回到上一個節點.

整個審批可以看成是三種狀態:


1.草稿:
來自兩種情況:1.發起人剛起草審覈.2.審覈被第一個審覈人打回

此狀態下發起人可自由修改發文


2.審批中:

不管是正常審批,審批失敗往回打,還是修改後重新提交.都放入這一個狀態
作爲發起人:只可查看當前審批狀態.

作爲審批者:只可查看審批流程節點輪到自己的發文


3.審批完成:



一.如何確定一套流程

這裏使用2個表,一對多的關係,用來表示一套流程

舉例:

現在要確定一套流程,他的名字叫做 "前期部審批流程"

這套流程需要走4道手續,其中有第3道手續需要2個部門同時通過纔算是通過.

這個時候需要往定製流程表裏插入一條數據

往流程表插入5條數據

*


其中的deptId是指由哪個部門來審批,node表示它在流程中是第幾個輪到的,node相同的就說明是由多個人共同決定的


二.如何發起一套流程


上面講的,確定一套流程,那隻不過是一個模版,一個流程確定了,以後就可以根據這個模版來,

至於實際的某個發文用到了流程,那該怎麼辦?


新建一個如下的流程表


然後把對應的流程的一個個節點全部搬到審批流程表中來.

需要幾個部門來審覈,就往審批流程表裏插入幾條數據.


舉例:

還是上面的情景,現在要發起一套上面的流程,數據庫情況如下:

上表中的flowId是完全冗餘沒用了,,就當沒這個把

可以看到把node deptId都拷過來了,另外還加入了checkCommon,用於記錄每個節點的審批意見;checkResult,用於記錄每個節點的審批結果.

這裏還有一個baseProjectId,用來標記這是哪個項目對應的流程,後面再說.


現在的狀態是審批到了第3個節點.

前面1.2都是同意的.3中的其中一個人是同意的,3中的另一個人是不同意的

所以說現在的狀態應該是打回到2,讓2決定是繼續回滾還是修改後繼續提交.


但是如果2修改後提交了,表中的狀態還是:

1.2同意,3同意不同意各一個....這就出問題了


怎麼確定現在的狀態是3剛打回去,還是2修改後重新提交的呢???

下回分解.....




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章