92. 基于Notes/Domino的文檔工作流系統(四)
來源:程序員人生 發布時間:2015-01-21 09:02:27 閱讀次數:3646次
現在我們以演示的采購工作流來研究工作流系統的設計。本文將討論1個通用的工作流“引擎”包括哪些功能。通過需求分析和梳理,我們已取得以下的流程圖。由此可知該流程由1組狀態、與狀態對應的1組用戶和流程處于某種狀態時當前用戶所能進行的若干操作組成。
接下來逐一分析這些操作。首先看IT部門的起草人填完采購單后提交。此時流程系統須做以下工作:
- 校驗必填字段。
- 生成采購單號。
- 修改采購單狀態為Waiting For IT Approval。
- 將流程確當前處理人由起草人改成負責審批的IT Leader,將起草人添加入讀者域,將容納采購單基本信息的存取控制區段的寫權限設置為無人。
- 添加操作記錄,即什么時候起草人將采購單從草稿提交,和可能有的備注。
- 發送郵件通知IT Leader處理該單。
IT Leader通過郵件鏈接或直接在采購系統的My Work視圖下看到該采購單,他可以選擇批準或駁回。批準時流程系統將做以下動作:
- 修改采購單狀態為Waiting For Finance Verification。
- 將IT Leader存入讀者域,將流程當前處理人改成財務部負責Finance Verification的同事。
- 添加操作記錄,即什么時候IT Leader將采購單從Waiting For Finance Verification狀態批準,和可能有的備注。
- 發送郵件通知當前處理人處理該單。
我們再選取其他幾個節點的某些操作。流程處于Waiting For Finance Confirmation狀態時,財務部負責Finance Confirmation的員工選擇批準時:
- 如果采購金額超過500元,修改采購單狀態為Waiting For Final Review,否則改成Inputting Payment Information。
- 將負責當前狀態的用戶存入讀者域,將流程當前處理人據上述規則改成對應狀態的處理人。如果下1狀態為Inputting Payment Information,將Payment Information所在的存取控制區段的寫權限設置為該狀態的處理人。
- 添加操作記錄。
- 發送郵件通知當前處理人處理該單。
流程處于Inputting Payment Information狀態時,負責處理的起草人如果選擇Change Price:
- 系統將彈出修改價格對話框。
- 修改采購單狀態為Waiting For IT Approval。
- 將流程確當前處理人由起草人改成負責審批的IT Leader,將起草人添加入讀者域。
- 添加操作記錄。
- 發送郵件通知IT Leader處理該單。
流程處于Inputting Bank Information狀態時,負責處理的財務部員工選擇關閉:
- 修改采購單狀態為Closed。
- 將流程確當前處理人由改成代表沒有人的[Nobody],將當前用戶添加入讀者域,將所有存取控制區段的寫權限設置為無人。
- 添加操作記錄。
- 發送郵件通知起草人該單已審批完成。
- 在財務部的費用報銷流程系統里自動創建1張報銷單,從當前采購單填入相干信息。
可以看出,上述節點操作有相當部份是類似的,例如修改采購單的權限,包括有關的讀者域、作者域、存取控制區段,只是具體每一個操作修改的內容不同。因此與其為每一個操作寫代碼,更理想的方式是寫通用的代碼來處理這些
類似的動作,而在每一個操作上某個動作用到的具體的數據則由配置文檔提供。這些通用代碼就構成所謂的流程引擎。至于某個操作包括的
特定動作,則要根據每一個流程的具體需求臨時編寫。
我們看看流程引擎包括哪些功能:
雖然上面的操作實例中,只有提交需要校驗必填字段,但這項功能在其他節點操作中也時有需要,并且功能的需求邊界清晰,易于標準化,所以包括在我們的流程引擎中。另外流程文檔從1個狀態跳轉至另外一狀態時,有時需要修改1些業務字段的值,將此功能包括在流程引擎里也能省去為很多此類簡單的特定動作編寫代碼。生成采購單號之類流水號,雖然在開發中也很常見,但是此功能其實不僅限與于流程系統,而且實現它用到的流水號配置文檔也最好單獨保存,所以雖然也采取通用的配置文檔和代碼來生成流水號,但是獨立于流程系統以外。再加上從以上的操作例子中可明顯看出的類似動作,終究流程引擎包括以下功能:
- 校驗必填字段。
- 修改流程文檔的權限,包括有關的讀者域、作者域、存取控制區段。
- 添加操作記錄。
- 修改配置的業務字段。
- 發送郵件通知相干處理人。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈