很久沒寫點東西了,現在有點時間來分享下工作流引擎設計的一點體會。希望能幫助各位園友。
前段時間接手一OA系統項目,經過一段時間的需求調研,總共十多個功能模塊,但系統主要功能是應付一堆堆審批流程,各流程千差萬別,而且流程變動也大,這無疑是需要設計一個工作流引擎才能解決。這個引擎主要做到流程可配置,可視化編輯,可視化的流程圖展示,且需要保留審批處理的歷史快照......
經過一段時間的資料查閱(感謝園子的大蝦們),並且經合自身的經歷(曾經用過,但未曾開發過工作流引擎),終於想出了一套方案:
以下是相關的網絡資料:
http://www.cnblogs.com/f2flow/p/3659685.html
http://cqroad.cn/
鏈接一主要是可借鑒下流程的運轉模型,連接二主要是可借鑒下流程圖設計
標准參考模型圖:
以我的理解,工作流引擎分兩大部分:流程模板庫和流程實例庫。
流程模板庫是各流程配置的地方,可看作是工廠生產倉庫中的機模,里面包含了流程制作的處理步驟,各步驟的運轉方式,發起權限,提醒處理,處理人設置等,當流程模板裝配完畢后就可批量生產,上市銷售了。
流程實例就好比如上述已上市銷售的流程產品了,經過用戶的選擇購買。按照相關說明進行使用。
其組成可理解如下:
一個流程模板可生成多個實例(如對象實例化一樣),每個實例中包含多個處理步驟,每個處理步驟中蘊含了所指定的表單(數據呈現)、處理動作、運轉規則、提醒處理等。
其中處理動作主要是:草稿,提交,駁回,作廢,暫存,轉辦,轉閱。
處理規則就是根據流程的運轉模型而定,順序模式,單選模式,並行分支模式,匯聚模式,轉辦模式,駁回模式等
而表單,則是流程步驟處理時的數據展現形式,可理解為頁面。里面的數據及呈現需根據自身業務情況而定。流程與表單的結合是一個難點。
經過我的理解,梳理出一個適合自己設計時的流程引擎模型
模型中分成三個庫,這主要都是為了體現在數據存儲上。模板管理與表單庫有機地結合(模板管理負責流轉規則的配置,表單庫負責數據呈現)制作成模板,最終被用戶所使用,激活成一個個實例至運行庫中。如運行庫中的實例出現異常,則需要流程監控模塊進行調整。
不過表單的設計是一個難點,需要進行多種格式化的處理,由於時間和人力都有限,沒有具體實現此功能。目前是使用硬編碼設計表單的形式來應付。
分享一下數據結構:
流程配置圖:
步驟配置:
目前的流程引擎還未考慮到支持多平台調用,只局限於自身系統。各們有見解的可留言分享,感謝。
有很多實現細節未能詳細講述,日后有時間再分享。