談談工作流引擎及面向服務編程

 

相信很多人對於BizTalk Server 2004(簡稱BTS)都有一種誤解,認爲這是微軟出品的工作流引擎。包括我在內,從沒有進入MS以來,一直在圍繞着BizTalk Server 2004做開發,而加入後,所做的大部分PoC都是基於BizTalk Server 2004的。當然,我做的都是一些外圍開發,而不是一些核心性的BizTalk開發。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

所謂的外圍開發,就是爲工作流做一些UI界面,以便驅動整個工作流能夠進行下去。做得久了,經常會有一些疑問,我相信大部分做過BizTalk Server開發的人員都會遇到類似的疑問,因爲在我與Partner的研發人員閒聊時,也遇到類似的困惑,那就是爲什麼有了BizTalk Server 2004這麼好的工具,我們做工作流開發還這麼累呢??很多時候,爲了完成一個簡單的公文流轉功能,我們用ASP.NET可能幾行代碼就搞定了,但加上了BizTalk Server 2004後,卻發現工作量成倍的增加。

經過這一個月以來,與同事探討,終於找到了一個原因。因爲我們錯了,BizTalk Server不是微軟的工作流引擎。這話似乎有一點驚世駭俗,但我相信,我們的觀點沒有錯誤。

博客堂前段時間一直在探討SOA(面向服務編程),其實在我看來,BizTalk Server 2004正是爲了SOA而做準備的,它是爲了整合各個System的Service,而建立的自動流程功能,同時,由於各個System的Service所傳遞的消息的Schema的不統一,所以BTS裏面提供了Mapping的功能。在BizTalk Server 2004的文檔中,其功能就列了兩點:(1)EAI,企業應用整合;(2)B2B的消息傳送。

這種EAI的Service整合,在流程運行時,沒有人爲因素的干擾,沒有UI的驅動,非常適合BTS這種無角色流程引擎進行驅動(BizTalk Server還是有角色的,不過非常淡化)。而類似於OA這種公文工作流的引擎,則BTS根本不適合。

前段時間,非常有幸看到了ADOBE Workflow Server的介紹(本來也想去看看點擊科技王志東老大的工作流系統,可是無緣),對此我更有感悟。ADOBE的這套東西,纔是真正基於公文工作流的,我們可以比較它的流程圖與BTS流程圖的異同。BTS的流程圖更像我們的軟件邏輯圖,在這個圖中,你很難一眼就從中找到哪個點應該是一個UI,這個UI上應該有哪些單元。但ADOBE的流程圖則不一樣,它每個節點就是一個UI,在這個節點旁邊可以羅列一些選項,比如“同意”、“不同意”、“退回祕書”之類的,然後從這些選項到它們應該到的下一個節點間連一點線。非常清晰的就把這個工作流的UI都給清晰化了。再配合ADOBE Form Server以及Form Designer,則能夠很簡單的做出來一個公文工作流系統。

且慢,難道微軟真的沒有工作流軟件嗎?非也非也。加入微軟之前,也很有幸接觸到了Teamplate的工作流產品,這是一個微軟的全球合作伙伴,它的TeamPlate產品基本上把MS的所有Server都包含進來了,比如BizTalk Server 2004、SharePoint Portal Server 2003、Exchange Server 2003,那麼這個工作流產品使用了BizTalk Server 2004的什麼特性呢?原來使用的是HWS(工作流服務,Human Workflow Service)。

HWS,翻開BTS的隨機文檔,發現關於HWS的文檔真的是非常珍貴,打印出來估計不到十頁紙(估計其中大部分還是HWS的UI方面的,介紹哪個按鈕做什麼的)。估計沒有人能夠看得明白,但是再去MSDN Online上找一下,好多了,因爲我們發現了BTS的SDK,在Sample裏面還是一些料的,不過,我估計再沒有人指引的情況下,沒有幾個人會對這東西能夠上手。

HWS,實現的就是ADOBE Workflow Server所實現的東西,但是在目前,它缺少一個Workflow Desinger的設計工具,所以會造成它的曲高和寡的局面。你必須自己手動寫代碼去完成你的工作流設計,雖然在SDK裏面有Step By Step的指導,但似乎還是很難(想想BizTalk Server 2004本身,本來設計流程就是畫畫那麼簡單,但MS還是怕很多人不會,還提供了一個免費的Visio插件,供大家做圖玩)。

可能很多人讀了上面的文章,會認爲我在貶低BTS,其實不然。我覺得做BTS始終是MS的大智慧所在,它早在2000年就預示到了SOA的到來。只不過由於其流程圖畫得那麼“好看”,導致大家有一些誤解,從而殺雞用坦克,既不順手,還勞民傷財。在SOA服務來臨之日,BTS更能突顯其危力。我們想想Longhorn,那裏面有一個Indigo。仔細思考一下,其實Indigo的很多功能似乎與BTS有交集,所以有理由相信,在未來,BTS下一版本又有新的面貌了,至於新貌如何,還請各位看倌拭目以待。

BTW:講到SOA,想到前段時間博客堂對於SOA中傳遞消息的討論,一派人認爲SOA應該只傳簡單類型,一派人認爲SOA可以傳遞複雜自定義對象,甚至包括DataSet在內。我蒐集到的材料讓我確認第二派會在未來占上方,有時間大家再一起聊聊吧 Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=32485

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章