在論壇中常常會看到一些初生牛犢發布的,我設計的工作流系統 等等。對這類的帖子我都會饒有興趣點擊進去,准備仔細觀摩和研究,但往往是一略而過,失望而歸,或許是我的期望太高了,以為能得到更多的借鑒和啟發。
更多的經驗和啟發還是得來自項目實施中,根據更多的用戶使用情況來歸納和總結,再反應到產品中。
在論壇和博克中看到的大多還是很初級的工作流系統設計,甚至是只為實現一個項目中的某種特定的流程而設計的,特別是如為了實現審批流而設計的流程管理,將很多審批的過程和記錄等都固化在流程引擎中了,甚至很多人都認為工作流就是審批流,能夠處理好審批流,就是工作流系統了。這其實不叫工作流系統,更不能算是工作流產品了,只能是做的審批流項目。
一個工作流軟件產品,是能適用到各個行業,並且流程引擎的模型設計很健壯,利用流程引擎的模型能設計出各式各樣的業務流程。順序流,條件流,循環,分支,合並,子流程,回退,自由跳轉等等這些都是基本的功能,還會有很多特殊的功能設置。
一套工作流系統要做好,要有長時間的積累,人力,物力,時間,經驗,設計能力等等一樣都不能少,不是做一兩個項目,滿足了項目的需要,就是工作流系統了。短時間構造出來的,只能是1.0的測試版本,還需要更多的項目實踐來驗證和提高。如果基礎構架不好,后期很可能走進死胡同,無法升級和擴展,僅局限於這一畝三分地了。
好的流程引擎設計,能夠適應變化,在給業務流程建模時,可能還會有多種實現方式,就像我們利用工具來編程實現功能一樣,最終的目的是一樣的,可是寫法不一定完全相同,代碼功底強的人,實現的簡潔明了,初學者費了很大勁最終也能實現,但是代碼的可讀性和后期維護性就差很多了。
一套好的工作流系統,首先要有好流程引擎的模型,就是我們常說的工作流規范,先制定好一個規范,然后按照這個規范去給流程建模。就類似我們學面向對象編程一樣,首先要有類,接口,繼承,多態,等等這些基本的概念和規范,再利用這些去發揮,編寫自己的實現,就像站在巨人的肩膀上一樣。
當然初生牛犢式的工作流系統也有一定的運用場景,如有些業務系統中,只是要簡單的運用一下流程,甚至客戶也沒明白工作流是做什么用的,只是有的地方需要按順序等的流轉一下,自己設計只是為實現項目需要而做的簡單的工作流,能滿足項目的需要,解決客戶的問題,就也ok了.
術業有專攻,客戶點名提出要上的工作流系統,還是交給我們專門做工作流產品的公司來處理了。
一般的開發和設計過程如下圖:
我們公司的eworkflow自定義工作流系統,集成eform自定義表單后,就是類似上面的那種工作順序了,可視化的給業務流程建模,可視化的設計表單,設計完成后,立即可以在線運行,查看跟蹤流程流轉的結果,將一些業務系統的開發和流程的流轉運行變得簡單和快捷了。