转贴:是K2,還是WF(Workflow Foundation)?
原文作者:michaelpeng
許多朋友問我為什麼不直接就問Workflow Foundation建立工作流程解決方案,而要建議K2來進行?當然,因為我是K2的員工,推薦K2是我的天職。不過如果只是因為這樣的關係,問我也等於白問,不會得到信服人的理由了。在我問答之前,我要先強調, Workflow Foundation是一組API,是基礎,而不是完整的平台或解決方案。另一方面,WF真的是很了不得的技術,但是要從技術走到平台,再從平台走到解決方案,這可是一條很長的路。
接下來就是我對這個問題的回應:
- 當你使用WF建立工作流程解決方案時,一旦碰到組織架構的問題,你得面對ADSI (Active Directory API)。
- 當你使用WF建立工作流程解決方案時,一旦碰到電子郵件的發送,你得面對SMTP通訊協定。
- 當你使用WF建立工作流程解決方案時,一旦碰到SharePoint文件庫(文檔庫)、清單、record management…,你得面對SharePoint API。相信我,這東西可比ADSI更複雜的多。
- 當你使用WF建立工作流程解決方案時,一旦面對工作流程狀態的管理,你需要面對多執行緒(multi-thread)的管理以提供高效能,你需要透過序列化(serialization)作業進行資料及狀態保存、你需要建立自訂的追蹤服務(tracking service)以充份掌握流程的進展,提供報表給管理人員(不論是IT管理或商務管理)。如果你的開發人員經驗豐富,技巧純熟,同時很喜歡寫程式(代碼),那就儘管去做。
- 當你使用WF建立工作流程解決方案時,一旦碰到工作流程授權及權限的管理時,你需要自行設計足夠強健的模型。如果你是經驗豐富的安全專案,沒問題,就自己來吧。
- WF只是BPM解決方案的起點,對於商務流程管理,要解決的還不只是流程的問題,資料整合(數據集成)也是個大問題。如果你很熟Microsoft BizTalk,你可以自己寫Adapter(或是產生XML文件/文檔)去和它銜接,不然你就得很清楚要面對的整合對象,像是SAP、Oracle...,然後自己去處理。光是這樣還不夠...
- 你如何確保你的工作流程解決方案是高效能,具延展性的?你的解決方案能不能透過sacle-out的方式持續擴充支援(支持)的容量,應付企業的成長?
這些還都只是開始而已,一個開發人員要充份掌握WF的技術,同時能設計出一個因應真實世界需求的應用程式,可能得一到兩個月的時間(很少有開發人員是手上沒案子,只要專心學習就好的對吧!如果什麼都不做,只是專心學,一到兩週總是要的)。不過這個前題必須是這個開發人員的經驗豐富,清楚瞭解類別和介面的設計、知道如何使用泛用群集(generic collection)、資料序列化(data serialization)、事件處理機制(可不只是用或寫事件處理常式─event handler─而已,同時也要知道如何觸發事件,安排事件委派─event delegate)、執行緒安全(thread safe)等。不過就以我個人的經驗,我還是花了兩個多月才大致掌握整個WF的精神和架構,能寫簡單的程式。真的要讓WF發揮功能,你最好還要清楚如何建立WF的活動(activity),否則幫助真的不大。
那K2呢?首先,K2 blackpearl包裝了ADSI,同時還支持其他的組織架構資訊來源,像是資料庫(數據庫)。再來,K2 包裝了.NET Framework 3.0的SMTP/TCPIP/HTTP 類別,熟悉如何和電子郵件、網頁程式打交道。其次,K2包裝了SharePoint API。同時,K2在微軟設計WF的過程中就參與開發的工作,提供了不少工作流程狀態保存或是工作流程執行過程中面對的問題等相關意見給微軟。而且,K2的流程授權管理機制是經過三代產品的錊練累積下來,現在要步入第四代了。它是經過市場嚴苛驗證的。最重要的是,K2 blackpearl就是建構在WF之上,這意味著如果你的開發人員能夠開發(或是購買)WF的活動,或者能夠以WF建立應用程式,這個技巧就可以延用到K2 blackpearl的解決方案建立上,而且避開所有的繁瑣事務,直接專注在商業問題的解決上。
有人說:「但是K2很貴,WF不用錢!」K2要付錢(貴不貴是要比較的),因為K2綱羅了一批有經驗的開發人員,充份的和微軟團隊搭配合作,並且在產品中注入了我們長期以來累積的寶貴經驗,這可是很重要的知識資產。我們總是說我們對微軟平台很行,這可都不是我們自己這麼說,這是微軟的看法,也是客戶的看法。當我還沒加入K2之前,我就是這麼看的。
為什麼用K2?一旦你選擇了微軟平台,K2代表的就是開放,善用既有投資、無縫整合(集成)、同時還代表充滿願景、預見未來。如果你選擇的不是微軟平台,那我只能說可惜,因為你可能怎麼看K2都不覺得好,即便它也可以妥善銜接微軟和非微軟的世界,但那個陣營的人(我指的是廠商)恐怕都不願意這麼講。