本文發(fā)表于《中國計(jì)算機(jī)用戶》雜志2009年第3、4期
http://media.ccidnet.com/art/2655/20090106/1652443_1.html
http://media.ccidnet.com/art/2655/20090223/1686267_1.html
大型企業(yè)信息化中的BPM和SOA實(shí)戰(zhàn)
萬星
JPort
Group
北京交通大學(xué)
1
概覽
對(duì)于BPM和SOA的理解一直是非常困難的,我認(rèn)為如果沒有企業(yè)信息系統(tǒng)的豐富開發(fā)背景,以及對(duì)于軟件工程歷史的充分了解,想要從紛繁的概念中理清一條思路,進(jìn)一步為己所用更是讓人難以下手。SOA和BPM概念的提出都具有悠久的歷史,在學(xué)術(shù)界的研究也在向語義SOA和語用SOA等方向發(fā)展(這也是我們另一個(gè)實(shí)驗(yàn)室正在探索的方向)。而廠商的驅(qū)動(dòng)使得SOA和BPM逐漸落地,從早期的大量文獻(xiàn)在解釋SOA≠Web Service,到后來ESB的出現(xiàn),以及最近的SCA/SDO規(guī)范的完善(特別是具體產(chǎn)品的落地),直至今年興起的BPM和SOA熱潮,我們可以看到SOA離我們的工業(yè)實(shí)踐越來越近了,它不再是一個(gè)時(shí)髦的大詞。工作流抑或業(yè)務(wù)流程的辨析同樣也使用戶為難,簡(jiǎn)單而言,業(yè)務(wù)流程∈工作流。業(yè)務(wù)流程管理,或BPM,強(qiáng)調(diào)的概念是企業(yè)應(yīng)用集成(EAI)。而Workflow領(lǐng)域的研究則顯得單純一些。許多開發(fā)者都是從技術(shù)的角度來考慮SOA,因此相信SOA只是一種新的分布式架構(gòu)或者是一種新的EAI方式。起初,我也興奮的認(rèn)為將BPM和SOA結(jié)合起來是偉大的想法(兩種以EAI為目標(biāo)的技術(shù)整合在一起),以流程的方式整合服務(wù),這是比ESB的想法更加先進(jìn)的主意。然而,隨著研究和實(shí)踐的深入,我越發(fā)覺得SOA和BPM結(jié)合帶來的好處遠(yuǎn)不止于此。
1.1 我們做了什么?
我們JPort團(tuán)隊(duì)主要研究了IBM的BPM和SOA方法論,并結(jié)合了企業(yè)管理中的一些方法,又融合了軟件開發(fā)領(lǐng)域幾十年的模式和最佳實(shí)踐,對(duì)于我國南方某大型港口企業(yè)的業(yè)務(wù)流程進(jìn)行了優(yōu)化,并基于優(yōu)化的流程設(shè)計(jì)了SOA風(fēng)格的IT系統(tǒng)。
我們的主要工作包括:
1 找到了從企業(yè)戰(zhàn)略到業(yè)務(wù)操作具有完整映射的組件模型方法論——IBM創(chuàng)造的CBM(組件化商業(yè)模型),設(shè)計(jì)業(yè)務(wù)組件模型;
2 引入了企業(yè)價(jià)值樹模型從企業(yè)戰(zhàn)略出發(fā)推導(dǎo)出業(yè)務(wù)流程的KPI(關(guān)鍵績(jī)效指標(biāo));
3 結(jié)合既有的業(yè)務(wù)流程優(yōu)化模式,CBM方法論,企業(yè)價(jià)值樹模型,創(chuàng)建了一套業(yè)務(wù)流程重構(gòu)方法論,包括業(yè)務(wù)流程Bad
Smell,重構(gòu)名錄,以及評(píng)估測(cè)試模型體系;
4 利用用例對(duì)企業(yè)的既有業(yè)務(wù)流程和業(yè)務(wù)規(guī)則(包括國家法規(guī)和企業(yè)內(nèi)部的規(guī)章制度以及其他更為細(xì)節(jié)的業(yè)務(wù)規(guī)則)進(jìn)行了詳盡的調(diào)研;
5 通過使用IBM
Websphere Business Modeler(WBM)對(duì)那些畫在紙上或Visio,甚至是Rational Rose中的現(xiàn)有業(yè)務(wù)流程模型(AS-IS Model)進(jìn)行了重繪,并利用其按照我們提出的業(yè)務(wù)流程重構(gòu)方法論進(jìn)行業(yè)務(wù)流程優(yōu)化,得到未來的業(yè)務(wù)流程模型(TO-BE Model)。在WBM中,我們可以為組件(在WBM中每個(gè)流程任務(wù)都是一個(gè)組件)的一些特別的事件屬性賦值,并將那些由企業(yè)價(jià)值樹模型推導(dǎo)出的KPI設(shè)置在相應(yīng)的組件上;
6 利用IBM的SOMA(面向服務(wù)建模和架構(gòu))方法論識(shí)別,規(guī)約和實(shí)現(xiàn)服務(wù);
7 使用IBM
Websphere Integration Developer(WID)來設(shè)計(jì)和開發(fā)SOA系統(tǒng)。其中除了包含一般服務(wù),業(yè)務(wù)流程服務(wù),人員任務(wù)服務(wù),狀態(tài)機(jī)服務(wù)和業(yè)務(wù)規(guī)則服務(wù),還包括與第三方服務(wù)(無線通訊服務(wù),消息服務(wù)以及金蝶財(cái)務(wù)系統(tǒng),AIS等)的交互,與遠(yuǎn)程RCP(Rich Client Platform)客戶端的交互,以及遺留系統(tǒng)集成;
8 將系統(tǒng)部署在IBM
Websphere Process Server和IBM Websphere ESB之上,并通過企業(yè)Dashboard監(jiān)控之前在WBM中設(shè)置的KPI;
9 提供了一份完整的投資回報(bào)分析報(bào)告。
1.2 本文提供什么?
在針對(duì)該大型港口企業(yè)信息化項(xiàng)目中,我們遇到了一系列的問題,在理清了SOA和BPM、企業(yè)信息系統(tǒng)這幾個(gè)大的主題紛繁復(fù)雜的知識(shí)結(jié)構(gòu),以及IBM在這些領(lǐng)域的眾多概念之后,對(duì)關(guān)于這些主題的如下問題進(jìn)行了重新的審視:
兩個(gè)首先被提出來的大問題是:
n 從企業(yè)角度看SOA和BPM,SOA有何不同?
n SOA如何幫助企業(yè)進(jìn)行業(yè)務(wù)流程管理?
大量的文獻(xiàn)都在講解什么是SOA,然而關(guān)于它究竟有何不同的討論卻難以具有說服力。本文試圖結(jié)合理論和實(shí)踐,規(guī)范與實(shí)現(xiàn)來說明實(shí)戰(zhàn)中的SOA和BPM是如何相互作用幫助企業(yè)提升企業(yè)績(jī)效,滿足企業(yè)核心戰(zhàn)略,以及實(shí)現(xiàn)ROI(投資回報(bào)率)。
2
從企業(yè)角度看SOA和BPM
2.1 SOA有何不同?
正如前文所說,理解SOA一定要站在企業(yè)的高度,與其他方法學(xué)和技術(shù)相比,SOA具有以下特點(diǎn):
n
SOA是一種架構(gòu)模式(現(xiàn)在來看,其應(yīng)該是一整套方法論),而非一個(gè)產(chǎn)品。
n
SOA比過去的任何IT技術(shù)都要更關(guān)注企業(yè),其中的服務(wù)應(yīng)該是指業(yè)務(wù)服務(wù),或者說企業(yè)服務(wù),而非具體技術(shù)提供的服務(wù),注意這是一個(gè)識(shí)別和設(shè)計(jì)服務(wù)時(shí)選取視角的問題。與領(lǐng)域建模中所提到的服務(wù)區(qū)分比較困難,因?yàn)閷?duì)于這兩個(gè)概念的理解因人而異。
n
SOA比過去的任何IT技術(shù)更加強(qiáng)調(diào)抽象、關(guān)注點(diǎn)分離,也更加強(qiáng)調(diào)基于標(biāo)準(zhǔn)和規(guī)范,平臺(tái)中立,技術(shù)無關(guān),這與計(jì)算機(jī)科學(xué)的發(fā)展是密不可分的。
SOA絕不僅僅意味著企業(yè)應(yīng)用集成(EAI),也絕不僅僅就是一種分布式架構(gòu),與JEE,.Net,以及更早的CORBA(公用對(duì)象請(qǐng)求代理(調(diào)度)程序體系結(jié)構(gòu)Common Object
Request Broker Architecture )等技術(shù)相提并論。
SOA的革命性之處在于其把企業(yè)定義為提供服務(wù)的組織,服務(wù)提供的單元作為組件,就像OO(面向?qū)ο螅┦歉锩缘囊粯樱ㄒ膊粌H僅只是一個(gè)編程模型)。在從面向過程、結(jié)構(gòu)化方法論向OO邁進(jìn)過程中(其間還經(jīng)歷過很多的開發(fā)范型),我們需要改變過去以機(jī)器指令看待業(yè)務(wù)執(zhí)行的思維,而應(yīng)以對(duì)象來建模業(yè)務(wù)。而SOA中,則需要我們從更加宏觀的企業(yè)關(guān)注點(diǎn)出發(fā),其最高綱領(lǐng)當(dāng)然就是企業(yè)戰(zhàn)略了。
在1.1節(jié)中我所提到的那些方法論,相輔相成,渾然一體,完成了一個(gè)從企業(yè)戰(zhàn)略逐步推向IT實(shí)現(xiàn),又以IT實(shí)現(xiàn)幫助企業(yè)監(jiān)控企業(yè)績(jī)效,從而調(diào)整企業(yè)戰(zhàn)略的過程。在環(huán)環(huán)相扣的BPM和SOA解決方案中,可以更好的體會(huì),SOA中的服務(wù),是如何從企業(yè)的高度得來的。
2.2 Component Business Model
CBM是IBM提出的以組件方式重新理解企業(yè)的方法論,在這個(gè)方法論中,包括三個(gè)主要步驟:洞察,架構(gòu)和投資。其中最為重要的就是設(shè)計(jì)業(yè)務(wù)組件模型。
業(yè)務(wù)組件模型就是將企業(yè)中那些使用了相似的資源(人員,技術(shù)等)的類似活動(dòng)聚合起來,其實(shí)這一概念和好處是非常容易理解的。快速理解這一概念的好方法是(我們就是這樣做的),把企業(yè)的流程搜集起來,然后使用Excel將每個(gè)流程作為一列,然后行表示業(yè)務(wù)活動(dòng),你可以將那些相同的活動(dòng)(不同的流程總是會(huì)共享一些共同的流程活動(dòng),比如付款,計(jì)費(fèi),查詢訂單號(hào))放在同一行,給他們起一個(gè)名字,這個(gè)名字就是服務(wù)名,然后在將一些看上去屬于同一類的活動(dòng)用一個(gè)彩色的方塊圍起來,這就是一個(gè)業(yè)務(wù)組件了。企業(yè)的組織結(jié)構(gòu)將幫助你設(shè)計(jì)業(yè)務(wù)組件,然而對(duì)于大型企業(yè)進(jìn)行分析,你就會(huì)發(fā)現(xiàn)其中存在很多冗余、重復(fù)甚至是莫名奇妙的組織單元或職能部門,因此需要注意的是,不要讓糟糕的組織模型限制了設(shè)計(jì)業(yè)務(wù)組件的思維。
CBM將組件放在一個(gè)二維矩陣中,橫軸是責(zé)任等級(jí),縱軸是業(yè)務(wù)能力,交點(diǎn)是業(yè)務(wù)組件。責(zé)任等級(jí)與我們?cè)谛畔⒐芾韺I(yè)課本上看到的那個(gè)信息系統(tǒng)分級(jí)是一致的,CBM中定為Direct(引導(dǎo)),Control(控制),Execute(執(zhí)行),對(duì)應(yīng)的信息系統(tǒng)分級(jí)實(shí)際上就是戰(zhàn)略層,戰(zhàn)術(shù)層和操作層。其中Control主要完成的是業(yè)務(wù)的監(jiān)管,包括一些分析,報(bào)告等內(nèi)容。
按照IBM的官方說法7:業(yè)務(wù)組件包含五個(gè)方面,分別是業(yè)務(wù)用途,活動(dòng),資源,治理模式和業(yè)務(wù)服務(wù)。如果你使用過WBM,那么看到活動(dòng),資源和業(yè)務(wù)服務(wù)一定會(huì)感到興奮,如果這些直接轉(zhuǎn)成IT設(shè)計(jì),那么我們就完成了一次從業(yè)務(wù)直接映射到IT的過程!而其中的業(yè)務(wù)服務(wù),就是我們?cè)?/span>SOA中的服務(wù)的一部分(因?yàn)檫€包括其他兩類來源的服務(wù),見2.3節(jié))。
2.3 Service-Oriented Modeling Architecture
IBM的SOMA方法論主要就是用來識(shí)別、規(guī)約和實(shí)現(xiàn)服務(wù)的。識(shí)別服務(wù)主要有三種方式,第一種就是分解業(yè)務(wù)領(lǐng)域,其實(shí)這種方法可以借助CBM來完成,還記得前面所說的業(yè)務(wù)組件包含的業(yè)務(wù)服務(wù)嗎?那個(gè)業(yè)務(wù)服務(wù)實(shí)際上就是這么推導(dǎo)出來的。第二種就是基于對(duì)既有系統(tǒng)的分析(這也是SOMA方法論中包含的一個(gè)活動(dòng)),在已有的系統(tǒng)中(這些系統(tǒng)不久就變成遺留系統(tǒng)了),提供了哪些功能,完成了業(yè)務(wù),這就是服務(wù)了,第一種方法叫自頂向下,第二種方法叫自底向上,而第三種方法當(dāng)然就是從中間向兩邊了(沒有創(chuàng)意的IT理論界)。這種方法就是從其他方面考慮一下,有沒有落下的服務(wù)。
第二個(gè)步驟是制定服務(wù)規(guī)約,包括接口簽名,數(shù)據(jù)對(duì)象,組件設(shè)計(jì)等。列舉出的就是最重要的。其實(shí)這些設(shè)計(jì)的原則以及模式,大都可以來自于過去分布式系統(tǒng)的經(jīng)驗(yàn),而對(duì)于服務(wù)識(shí)別,我們亦可參考分析模式,我主要參考的是Martin Fowler的《分析模式》。在實(shí)際項(xiàng)目中,我主要需要研究計(jì)費(fèi)模式。服務(wù)是通過接口暴露的,而由組件來提供相應(yīng)的服務(wù)實(shí)現(xiàn)。這沒什么特別的。而數(shù)據(jù)對(duì)象設(shè)計(jì),這里的數(shù)據(jù)對(duì)象并非單指持久化對(duì)象,也非表現(xiàn)層數(shù)據(jù)對(duì)象或者數(shù)據(jù)傳輸對(duì)象(DTO)1、值對(duì)象(VO)2,而是指貫穿于各層之間的數(shù)據(jù)對(duì)象。這些數(shù)據(jù)對(duì)象就是Pure Data Object,只有屬性沒有方法。
第三個(gè)步驟就是決策服務(wù)的實(shí)現(xiàn)。每種服務(wù)究竟該如何實(shí)現(xiàn),是自己實(shí)現(xiàn)還是封裝遺留系統(tǒng)提供的服務(wù)/第三方服務(wù)(映射已有/外部服務(wù)),自己實(shí)現(xiàn)是新建Java服務(wù),還是流程服務(wù)(包括狀態(tài)機(jī)),或是人員任務(wù),抑或是業(yè)務(wù)規(guī)則。
從這套思想的步驟我們就可以看到,從來自于業(yè)務(wù)域(其來自于更高層的企業(yè)戰(zhàn)略分析)識(shí)別出來的服務(wù),到規(guī)約上的設(shè)計(jì),以及最終的實(shí)現(xiàn)決策,充分的體現(xiàn)了,SOA方法論中更加注重從企業(yè)出發(fā)和關(guān)注點(diǎn)分離這兩個(gè)特點(diǎn)。換個(gè)角度,由于當(dāng)前IT技術(shù)以及計(jì)算機(jī)科學(xué)的發(fā)展,才使得我們可以如此輕松的實(shí)現(xiàn)從業(yè)務(wù)到IT的映射。下面就來講一下技術(shù)標(biāo)準(zhǔn),以及它在現(xiàn)實(shí)世界中是什么樣子的。同時(shí),也可以體會(huì)一下思想,理論,技術(shù)與實(shí)現(xiàn)是如何很好的結(jié)合起來的。
2.4 SCA/SDO規(guī)范與實(shí)現(xiàn)
就在我擱置對(duì)于SOA的研究有半年之久的時(shí)候,忽然打開互聯(lián)網(wǎng),發(fā)現(xiàn)SOA已經(jīng)有標(biāo)準(zhǔn)了,那就是剛露頭角的SCA(Service Component Architecture)和SDO(Service Data Object)。因此,在SOA有何不同的論述中,我尤其強(qiáng)調(diào)了SOA注重標(biāo)準(zhǔn)和規(guī)范這一事實(shí)。
SCA
SCA是一個(gè)SOA的編程模型,就好比JSP是Web開發(fā)的一個(gè)編程模型一樣,Web是一種架構(gòu)模式,而SOA亦然。SCA有很多部分組成,核心理念是1)將業(yè)務(wù)功能作為一系列的服務(wù)而提供,2)將這一系列的服務(wù)組裝起來。SCA致力于創(chuàng)建服務(wù)組件,以及解決各服務(wù)組件間的多技術(shù)互訪問題。SCA的核心工件是組件(Component)。5
如果想要問SCA與其他諸如JMS、CORBA這樣的編程模型有何不同,我覺得IBM的Barcia 和Brent給了我們最好的答案:SCA 向您提供一個(gè)以與技術(shù)無關(guān)的方式定義接口、實(shí)現(xiàn)和引用的模型,從而使您能夠?qū)⑦@些元素綁定到所選擇的某一技術(shù)的特定實(shí)現(xiàn)。3
OK,當(dāng)我們談及組件或?qū)ο髸r(shí),無非要涉及這么幾個(gè)抽象關(guān)注點(diǎn)(如果你認(rèn)同每個(gè)實(shí)組件或?qū)ο蠖家獙⒔涌谂c實(shí)現(xiàn)分離的話):其接口是什么,實(shí)現(xiàn)是什么,以及其依賴了什么(依賴的組件或?qū)ο螽?dāng)然又包含接口和實(shí)現(xiàn))。SCA則把關(guān)注點(diǎn)分離發(fā)揮到了極致,接口,實(shí)現(xiàn),以及引用都是可選的。如圖2.4-1所示。

圖2.4-1 SCA組件模型
于是在SCA規(guī)范中5,SCA當(dāng)前支持接口類型系統(tǒng)包括:Java interfaces和WSDL(WSDL 1.1
portTypes和 WSDL 2.0
interfaces)
而對(duì)于實(shí)現(xiàn),則可以包括Java,C++,BPEL流程,Web Service以及SCA Composite。在IBM WID中可以選擇實(shí)現(xiàn)(generating implements)為Java,Web Service,Process,State Machine,Rule,Human Task等。Process,State Machine(特定的Process)由BPEL技術(shù)支持。
當(dāng)SCA模塊(在SCA規(guī)范中即Composite,在IBM的產(chǎn)品中被稱為Module)被導(dǎo)出(作為服務(wù)),或者需要導(dǎo)入其他服務(wù)時(shí),SCA中還可以指定要訪問服務(wù)使用的機(jī)制是什么。這是通過Binding實(shí)現(xiàn)的。由于導(dǎo)入、導(dǎo)出都是抽象概念,因此需要綁定通訊機(jī)制。
通過Binding,來指出想要調(diào)用服務(wù)和服務(wù)被調(diào)用時(shí)的訪問機(jī)制,包括SCA,JCA,Web Service,JMS,無狀態(tài)會(huì)話bean等。
OK,接口,實(shí)現(xiàn),Binding,引用,全是獨(dú)立變化,自由組合的,全面的靈活,與技術(shù)無關(guān)。前所未有,這就是SCA。
在IBM的實(shí)現(xiàn)版本中,可以借助WID,很方便的開發(fā)SCA程序,并且提供了很多便利的擴(kuò)展。比如談及實(shí)現(xiàn)問題時(shí),IBM提供的諸如Process,State Machine之類的實(shí)現(xiàn)類型。
SDO
SDO是一個(gè)數(shù)據(jù)應(yīng)用系統(tǒng)開發(fā)框架,它包括架構(gòu)和API。它在SOA系統(tǒng)中充當(dāng)抽象數(shù)據(jù)。6
SCA規(guī)定了怎樣編寫SOA程序,組件、服務(wù)、引用等都是如何定義的,以及它們之間如何通訊,而且還規(guī)定了如何傳遞數(shù)據(jù),數(shù)據(jù)的類型可以有很多種,但是首選SDO。
那么SDO又是如何超越以往任何技術(shù)或規(guī)范實(shí)現(xiàn)技術(shù)中立、平臺(tái)無關(guān)的呢?沒什么令人驚奇的,做到這些無非就是增加中介和中間層次,將不同的關(guān)注點(diǎn)隔離。SDO客戶端通過SDO框架工作在SDO數(shù)據(jù)圖(Data Graph)之上。數(shù)據(jù)圖中包含多個(gè)數(shù)據(jù)對(duì)象和改變摘要(Change Summary)。DMS(數(shù)據(jù)中介服務(wù))訪問數(shù)據(jù)源,即DMS負(fù)責(zé)從數(shù)據(jù)源創(chuàng)建數(shù)據(jù)圖,并且基于對(duì)數(shù)據(jù)圖的改變更新數(shù)據(jù)源。
如果想要更新SDO數(shù)據(jù),將如何做呢?首先SDO客戶端(即SDO應(yīng)用)遍歷數(shù)據(jù)圖,修改其中的數(shù)據(jù)對(duì)象,然后將修改的數(shù)據(jù)圖傳回DMS,然后DMS根據(jù)修改的數(shù)據(jù)圖更新數(shù)據(jù)源。
可以看出,正是由于有了數(shù)據(jù)圖和數(shù)據(jù)中介服務(wù)這兩個(gè)隔離,才將具體的數(shù)據(jù)源與SDO應(yīng)用分離開,而由SDO框架來做出相應(yīng)的轉(zhuǎn)換。
IBM對(duì)SDO進(jìn)行了擴(kuò)展,就是所謂的BO(Business Object)。
閱讀和理解規(guī)范,并且與具體的實(shí)現(xiàn)產(chǎn)品聯(lián)系起來,可以更好的理解SOA思想。
BPEL
BPEL是用來編排流程服務(wù)的規(guī)范,這里的服務(wù)技術(shù)是WS*-堆棧的Web Service。BPEL規(guī)范中詳細(xì)的定義了如何引入Web Service,其中包含的各種活動(dòng)(諸如Invoke,IF,Scope等)以及如何建立引用。在規(guī)范中,對(duì)于引用的其他服務(wù)稱為Partner,可以看出,這樣的說法更貼近于業(yè)務(wù)層次。4
正是由于SCA、SDO這樣的將抽象發(fā)揮到極致的規(guī)范,使得我們可以按照CBM、SOMA方法來設(shè)計(jì)SOA系統(tǒng)。我想使用一下WID來進(jìn)行SOA系統(tǒng)的開發(fā),將使你更容易體會(huì)我想說的內(nèi)容。可見,SCA和SDO中規(guī)定的組件,服務(wù),接口,數(shù)據(jù)對(duì)象,以及BPEL中提到的活動(dòng),與之前CBM、SOMA方法中提到的組件,業(yè)務(wù)服務(wù),接口,數(shù)據(jù)對(duì)象,和活動(dòng),是非常吻合的,而且這是一個(gè)前后照應(yīng),完整的方法體系。
小結(jié)
寫到這,似乎可以將理論和實(shí)踐、規(guī)范和實(shí)現(xiàn)聯(lián)系起來了,再強(qiáng)調(diào)一次,SOA的思維是從企業(yè)業(yè)務(wù)出發(fā),甚至是企業(yè)戰(zhàn)略出發(fā),來考慮服務(wù)和組件,而不是從遠(yuǎn)程方法調(diào)用(RPC),消息服務(wù),或者是分布式對(duì)象(EJB等)的角度去考慮服務(wù)。
SOA不只是EAI,這句話的另一個(gè)意思是,SOA包含EAI的部分。前文我提到了,通過BPEL和SCA Composite這樣的技術(shù),我們可以實(shí)現(xiàn)系統(tǒng)的集成,企業(yè)是流程驅(qū)動(dòng)的,流程是由業(yè)務(wù)組件組成的,那么我們就可以通過BPEL將服務(wù)組合起來,或者通過SCA將服務(wù)組裝起來(SCA的基本理念之一)。那么,還要ESB干嘛?ESB在哪?
2.5 ESB在哪?
ESB(Enterprise
Service Bus,企業(yè)服務(wù)總線)繼承了EAI的思想。我不必重復(fù)講解Hub/Spoke和Bus這兩種拓?fù)浣Y(jié)構(gòu)。因此,ESB的出現(xiàn)是為了解決集成問題。
ESB是SOA的一種實(shí)現(xiàn)模式,任何接入ESB的應(yīng)用都將封裝為服務(wù)的形式,其核心是個(gè)中介流(在IBM
Websphere ESB(WESB)中是通過策略SCA/SDO實(shí)現(xiàn)的中介流組件),可以在其中設(shè)計(jì)消息路由,然后由其來完成消息的路由,格式、協(xié)議的轉(zhuǎn)換/翻譯,以及消息的分發(fā)。消息路由當(dāng)然是要按照業(yè)務(wù)邏輯來設(shè)計(jì)。兩個(gè)系統(tǒng)(包括但不限于異構(gòu)系統(tǒng))需要進(jìn)行通訊難道不是因?yàn)闃I(yè)務(wù)邏輯的需要?這其中的業(yè)務(wù)邏輯就包括了業(yè)務(wù)規(guī)則和業(yè)務(wù)流程,不過也有可能就是某個(gè)業(yè)務(wù)需求,需要對(duì)兩個(gè)系統(tǒng)進(jìn)行消息轉(zhuǎn)換。
可以簡(jiǎn)單的說,SCA+BPEL就可以代替ESB的存在了,BPEL可以充當(dāng)中介流,只不過它更為強(qiáng)大(尤其是IBM將SCA作為WESB的編程模型之后,這進(jìn)一步模糊了直接使用SCA和使用ESB的界限,如果說狀態(tài)機(jī)是Process的一個(gè)特定實(shí)現(xiàn),那么WESB就是SCA的一個(gè)特定實(shí)現(xiàn)了)。但是如果僅僅是想做EAI,或者嘗試用SOA的方式做EAI,而不是如我前文所講,采用一套完整的、從業(yè)務(wù)到IT的水到渠成式的SOA解決方案,則采用SCA+BPEL會(huì)面臨更加復(fù)雜的學(xué)習(xí)曲線,雖然我認(rèn)為它是更好的實(shí)現(xiàn)。
3
BPM與SOA互動(dòng)
BPM是從BPR(業(yè)務(wù)流程重組)發(fā)展而來,在大型的企業(yè)中,想要實(shí)施ERP(企業(yè)資源計(jì)劃)往往都要經(jīng)歷一個(gè)BPR的過程,然而想要一蹴而就的BPR很難在大型企業(yè)中實(shí)現(xiàn)。預(yù)先看不到一點(diǎn)好處的改革將會(huì)受到巨大的阻撓,因此,一個(gè)更好的方式,先將企業(yè)的流程監(jiān)管起來,發(fā)現(xiàn)流程運(yùn)轉(zhuǎn)中的問題,或者那些大幅度創(chuàng)造價(jià)值的熱區(qū),然后在對(duì)業(yè)務(wù)活動(dòng)揚(yáng)長(zhǎng)避短,以提高企業(yè)的效率。那么,如果才能有效的監(jiān)管流程呢?答案當(dāng)然是數(shù)字化業(yè)務(wù)流程,還記得CBM方法論嗎?我們需要一套從執(zhí)行到控制再到戰(zhàn)略的、互相溝通的組件。然后在組件之上設(shè)定KPI和特別事件(執(zhí)行時(shí)間和成本,資源,等待時(shí)間和成本,角色/人員等)的屬性。當(dāng)企業(yè)正常運(yùn)轉(zhuǎn)時(shí),我們就可以從現(xiàn)場(chǎng)直接搜集到第一手資料,進(jìn)行企業(yè)的監(jiān)控了。然后根據(jù)監(jiān)控結(jié)果進(jìn)行流程優(yōu)化。優(yōu)化后再監(jiān)控,再根據(jù)新的結(jié)果優(yōu)化,如此反復(fù)。
這里就存在兩個(gè)問題,一個(gè)問題是KPI如何得來;第二個(gè)問題,當(dāng)發(fā)現(xiàn)了問題,并且找到了優(yōu)化方案后,IT如何能夠快速的隨需而變。以下兩節(jié)將解決這兩個(gè)問題。
3.1 企業(yè)價(jià)值樹模型
企業(yè)價(jià)值樹可以幫助我們從企業(yè)戰(zhàn)略到業(yè)務(wù)流程KPI的推導(dǎo),當(dāng)然,這不是數(shù)學(xué),嚴(yán)謹(jǐn)?shù)耐茖?dǎo)是不可能的。我們可以先從企業(yè)戰(zhàn)略主題出發(fā),然后由主題發(fā)現(xiàn)企業(yè)關(guān)鍵績(jī)效指標(biāo),然后在尋找影響這些企業(yè)關(guān)鍵績(jī)效指標(biāo)的核心驅(qū)動(dòng)流程,最終推導(dǎo)出流程的關(guān)鍵績(jī)效指標(biāo)(KPI)。
不得不說,詳細(xì)完整的CBM方法論應(yīng)該包括這個(gè)部分,但是這一方面大概是IBM內(nèi)部的機(jī)密,因此我們只能通過引入其他的模型來解決問題。
3.2 SOA幫助企業(yè)數(shù)字化BPM
從CBM方法論我們可以看到(你可以回顧本文的相應(yīng)章節(jié)),其核心的業(yè)務(wù)組件模型包括了活動(dòng)、資源等,我們也提到過,業(yè)務(wù)組件是從業(yè)務(wù)流程中歸納出來的,它們是一個(gè)互動(dòng)的關(guān)系。
從概覽部分你可以了解到JPort團(tuán)隊(duì)做了哪些工作,這些工作連起來就是為了利用SOA幫助企業(yè)數(shù)字化BPM。
SOA的方法論支持BPM中需要監(jiān)控業(yè)務(wù)組件的需求,因?yàn)?/span>SOA的服務(wù)是由業(yè)務(wù)組件來實(shí)現(xiàn)的。另外,SOA也可以滿足隨需應(yīng)變的業(yè)務(wù)要求,就像領(lǐng)域驅(qū)動(dòng)建模一樣,基于業(yè)務(wù)建立的模型,神奇的可以隨業(yè)務(wù)更好的變化。SOA的方法論可以完整的更好的以這種方式建模,就像本文始終所演示的那樣。
4
結(jié)論
采用SOA方法論一定要站在企業(yè)的角度去思考問題,具體的、可操作的方法就是CBM,更重要的是其中蘊(yùn)含的思想。首先要了解企業(yè)的戰(zhàn)略是什么,根據(jù)戰(zhàn)略再來了解企業(yè)的業(yè)務(wù),可以通過業(yè)務(wù)流程建模軟件模擬企業(yè)流程,分析企業(yè)問題。然后俯視整個(gè)企業(yè),設(shè)計(jì)出業(yè)務(wù)組件模型,并暴露服務(wù)。接下來在通過SOMA方法識(shí)別出所有的服務(wù),之后再考慮服務(wù)規(guī)約,數(shù)據(jù)對(duì)象模型的設(shè)計(jì)。最后,才是決策實(shí)現(xiàn)的方式,復(fù)用遺留系統(tǒng)的功能,引入第三方服務(wù),還是自行開發(fā)。當(dāng)然并非所有的企業(yè)應(yīng)用都有必要采用這樣的步驟,比如只是一個(gè)新的功能,可以不妨以SOA的思想來開發(fā)這個(gè)新功能,關(guān)鍵是要為企業(yè)提供合理的ROI。
新的SOA編程模型SCA,與過去的眾多用于SOA實(shí)現(xiàn)技術(shù)相結(jié)合,使得SOA的思想可以更好的實(shí)現(xiàn),比如復(fù)用遺留系統(tǒng),Web Service不再是不二法門,諸如無狀態(tài)會(huì)話Bean,JMS之類的應(yīng)用,亦可無縫的連接到SOA系統(tǒng)之中。SDO也增加了更多的抽象層次,其目標(biāo)也更為宏大,這與JDO等目標(biāo)不同。
SOA和BPM結(jié)合起來,使得SOA找到了新的務(wù)實(shí)方向,對(duì)于企業(yè)信息系統(tǒng)而言是大有裨益的。
當(dāng)然,本文主要是從IBM,BEA,Oracle,SAP,JBoss,Sun等這些Java世界的領(lǐng)導(dǎo)者的視角來看待SOA,以它們的產(chǎn)品和理論為基礎(chǔ),然而不得不說Microsoft有其自己的一套產(chǎn)品和理念,但是,其根本的SOA理論是一致的:以企業(yè)為圓點(diǎn),高度抽象,關(guān)注點(diǎn)分離,技術(shù)中立,平臺(tái)無關(guān);另外,就是其亦看中與業(yè)務(wù)流程管理的整合。畢竟,微軟是BPEL的締造者之一。
一種務(wù)實(shí)的精神是,開發(fā)那些真正為企業(yè)創(chuàng)造價(jià)值的系統(tǒng),如果某個(gè)業(yè)務(wù)單元本身就是低效和沒有價(jià)值的,我們是不是可以考慮一下改變它的運(yùn)作模式?
參考文獻(xiàn)
1.
Deepak Alur , John Crupi , Dan
Malks ,Core J2EE
Patterns: Best Practices and Design Strategies (2nd Edition),Prentice Hall PTR
2.
Martin Fowler,Patterns of Enterprise Application
Architecture,Addison-Wesley
Professional
3.
Roland
Barcia,Jeff Brent,使用服務(wù)組件體系結(jié)構(gòu)構(gòu)建 SOA 解決方案——第 1 部分http://www.ibm.com/developerworks/cn/websphere/techjournal/0510_brent/0510_brent.html
4.
Tony Andrews, Francisco
Curbera,.etc,2003,Business
Process Execution Language for Web Services,Version 1.1
5.
Michael Beisiegel,Henning Blohm,.etc,2007,SCA
Service Component Architecture:Assembly Model Specification
6.
Bertrand Portier, Frank
Budinsky,2004, Introduction to Service Data Objects:Next-generation data
programming in the Java environment,http://www.ibm.com/developerworks/java/library/j-sdo/
7.
IBM商業(yè)研究院,2006,組件化業(yè)務(wù)模型:企業(yè)實(shí)現(xiàn)專業(yè)化的有效工具
8.
IBM Business Consulting
Services, New competitive weapons in the insurance business: Insurance component
business modeling, http://www-935.ibm.com/services/us/imc/pdf/g510-4033-new-competitive-weapons.pdf
9.
Anurag Goel, Enterprise Integration:EAI vs. SOA vs. ESB, http://hosteddocs.ittoolbox.com/Enterprise%20Integration%20-%20SOA%20vs%20EAI%20vs%20ESB.pdf