寫下這個這題目我知道意味着一項艱巨冗長的任務開始了,做工作流方面的研發已經7年了,總算能拿出一些東西來,雖然走過很多彎路,但最終都變成收獲。今天把一些心得和成果共享出來,和大家一起交流、探討,也希望能得到大家的寶貴意見和建議。
說實話,不知道這個專題能持續多久,能持續到什么程度,但我盡力把工作流系統的核心和精華共享給大家,在開始詳細的介紹之前,我會先介紹為什么要開發工作流系統,讓大家充分體會到工作流系統的必要性和前景;然后我會介紹為什么要使用.net來開發工作流系統,讓大家了解語言選擇的原因;接下來詳細介紹工作流系統的組成部分和每一部分的核心實現代碼,在介紹核心代碼的過程中,會結合工作流原理進行闡述,讓讀者真正從思想和應用上學會開發工作流系統。
聲明:該系列文章中設計到的源碼都屬於本人編寫,不會存在版權問題,本人已經申請版權保護,本着開源的精神,大家可以放心拿來研究,但不能用於商業用途。
第一篇 為什么要開發工作流系統
我們先來了解一下行業知識和行業背景,先來了解幾個概念,什么是工作流系統,什么是BPM。工作流系統是以任務為中心,按照先后順序把任務和數據有機的連接起來,使不同的人做不同的事,實現協同工作,這樣的系統就是工作流系統,它體現在幾個要素上:任務,數據,順序,協同,這是工作流系統必須實現的四個要素。再抽象一點“達成企業各種業務環節(包括人和任務)整合的全面管理模式”,這種抽象的描述就是BPM(Business Process Management的英文字母縮寫),后面沒有什么特殊說明我們就稱工作流系統為BPM。概念方面的知識大家可以百度搜索,這里不再做詳細介紹。
國內做工作流系統的廠家很多,大部分是java語言的,全球做BPM系統的更是五花八門,也有幾款比較流行的開源系統比如JBPM(java語言),NetBPM是JBPM的Net版,這幾款很復雜,主要是學習資料很少,而且還嚴重的水土不服,國外的軟件進入中國好像都有找個問題,原因是國外沒有我們這么復雜的組織機構。國內的幾款bpm系統做的還不錯,java領域的不在我們討論范圍,主要研究NET領域的,最早的東蘭的LiveFlow,合明的BPM系統,這兩個出自一家,后來的H3,主要偏向於系統集成,最近方正也搞了一套,看了視頻介紹還不錯。這幾套BPM產品都是很成熟的系統,包括流程設計器和表單設計器,是一整套系統,不可分割,對與全新開發業務系統的用戶來說比較合適,對於已有業務系統的用戶並不是他們的優勢。
可見BPM系統正在迅速崛起,為什么會有這個趨勢呢?需要我們從企業信息化需求找原因,只有這樣我們才能明確是否值得花大力氣研發BPM。
企業信息化建設分四個階段,每個階段有不同軟件需求。如下圖:
BPM正是第2和第3個階段的工作,軟件行業在國內發展了這么多年,如今已經到了企業流程再造的階段,所以這方面的需求會大大增加,這也就是BPM系統需求為什么這么旺盛的原因。要詳細了解企業信息化建設四個階段的請訪問《企業ERP系統的四個階段》這篇文章,要想了解為什么要使用工作流系統的請訪問《HF業務流程管理解決方案》這篇文章。
以上我們從行業背景和需求介紹了為什么要開發工作流系統,不知道您看到這里是不是已經充滿信心,看好BPM的前景呢?
如果您已經充分認識到開發BPM系統的重要性和緊迫性,那么我們開始進行語言選型。
我們有倆個選擇一是Java,二是NET,其他的也就不用考慮了。
目前Java領域的比較多,原因是Java開源做的比較好,留下來很多好東西,並不斷完善。但是版本比較亂一個公司一個標准,學習成本很高,基本上都是
熟悉的人在玩,新人很少能玩的了的,成本高一般公司也玩不起,隨着Net的興起,java語言的程序員也面臨着挑戰。Net成本低,程序員也多,這個領域開源的好東西少,很多應用還是空白的,這正好給我們一個機會,物以稀為貴嗎,我們選擇使用Net語言來開發BPM,誰先做出來誰就是前輩。
選好了語言我們,我們又面臨着一個選擇,偉大的無所不能的微軟在Net3.0推出了一WWF框架,支持工作流 系統開發,當初得到這個消息,很興奮,但是研究一段時間后,很失望。一句話總結WWF,它只是一個底層框架,只告訴你它能干什么,怎么干還得你自己來實現。而且WWF極其復雜,學習成本很高。既然這樣,我們是否可以按照工作流原理自己實現一套流程系統呢?回答是肯定的。這也正是該系列文章的內容。要詳細了解WWF和自開發流程的區別的請訪問《微軟wwf與自開發工作流引擎的比較》這篇文章。
本篇到這里就該結束了,如果看到這里你不能認識到自己開發BPM的重要性的話,那么你可以再去好好理會一下,再去查查相關的資料,或者跟同行交流一下。
下一篇我們正式開始介紹如何開發BPM系統。