| 流程驅動(dòng)面向服務(wù)的架構 |
|
分離關(guān)注,松散耦合是軟件系統開(kāi)發(fā)的一個(gè)目標,Aop & Ioc是這種思想很好的詮釋。下面要介紹的SOA和Workflow是這種思想更高層次的應用。
傳統的軟件系統中,業(yè)務(wù)邏輯沒(méi)有被分離。直到Workflow引擎的不斷開(kāi)發(fā),業(yè)務(wù)邏輯才逐漸從整個(gè)系統中被單獨分離。加上SOA這一概念,讓業(yè)務(wù)邏輯采用松耦合的調用機制,粗粒度的服務(wù)也讓系統的使用者更易操作。本人將兩個(gè)概念結合起來(lái),談如何用Workflow來(lái)驅動(dòng)SOA。
引言
傳統的三層架構(表示層,業(yè)務(wù)邏輯層,數據訪(fǎng)問(wèn)層)應用由于業(yè)務(wù)流程邏輯被硬編碼于程序代碼中,并且采用了緊耦合的功能調用機制,使得應用系統缺乏敏捷性和互操作性。本文提出了一個(gè)流程驅動(dòng)面向服務(wù)的架構,它采用了松耦合的web服務(wù)調用機制。它使得系統設計不再是以對象,接口和組件等技術(shù)術(shù)語(yǔ)為中心,而是以流程和服務(wù)為中心。它將流程提升到架構的中心地位,形成獨立的流程層,采用業(yè)務(wù)流程管理系統實(shí)現流程的獨立管理和控制,提升了流程動(dòng)態(tài)調整的能力,從而大大提升了系統的敏捷性。
傳統的業(yè)務(wù)流程處理問(wèn)題
傳統的兩層或者多層應用架構存在以下問(wèn)題:
1.業(yè)務(wù)流程硬編碼于程序中,無(wú)法可視化,不利于分析和設計 2.無(wú)法方便地修改和調整代碼以適應流程變化。 3.流程設計到流程實(shí)現需要大量人工轉換,效率低,代碼可能脫離需求 4.多種應用標準(COM, J2EE)導致互操作和集成困難 5.系統集成采用轉有技術(shù),成本高,維護困難
新技術(shù)的解決之道
本文為解決長(cháng)期以來(lái)困擾企業(yè)系統建設中存在的系統隔離,缺乏靈活性等問(wèn)題,提出了一種不同于傳統應用架構的新的應用架構,稱(chēng)之為”流程驅動(dòng)面向服務(wù)的架構”——PdSoA。該架構充分采用了XML, WebService和BPM(Business Process Management)等新的技術(shù),為構造敏捷的,互操作的應用打下了堅實(shí)的基礎。
首先,XML為數據描述提供了一種通用的,開(kāi)放的,平臺無(wú)關(guān)的表示方案,它已成為系統間數據交換的標準格式。
其次,WebService技術(shù)的出現極大的簡(jiǎn)化了程序功能的調用,特別是跨組織(異構)的遠程調用,這對跨組織的應用集成具有重要意義。
但是,離散的,孤立的Web服務(wù)尚不足以發(fā)揮最大的價(jià)值,而將各種相關(guān)的Web服務(wù)組合連結起來(lái),形成完整的業(yè)務(wù)流程將會(huì )給企業(yè)帶來(lái)突破性的效益。此時(shí)BPM可以發(fā)揮它的威力了。它使得應用開(kāi)發(fā)范式由傳統的面向對象的范式轉變到以流程為中心的范式,開(kāi)發(fā)人員直接使用與現實(shí)世界相符的流程概念進(jìn)行設計,設計結果可以在BPMS中立即執行,無(wú)需復雜的人工轉換。
PdSoA架構組成
由于WebSerive技術(shù)的成功,許多廠(chǎng)商提出了SOA的概念,SOA強調了服務(wù)(通常由WebService實(shí)現)在應用架構中的重要地位。但僅有服務(wù)尚不夠,所以本文提出了一種新的應用架構PdSoA。
表示層 用戶(hù)接口
業(yè)務(wù)流程層 業(yè)務(wù)流程,業(yè)務(wù)規則 | | (服務(wù)注冊庫) 業(yè)務(wù)服務(wù)接口層 業(yè)務(wù)服務(wù) |
業(yè)務(wù)服務(wù)實(shí)現層 遠程調用,業(yè)務(wù)組件,Web服務(wù)
數據訪(fǎng)問(wèn)層 數據訪(fǎng)問(wèn)組件或服務(wù)
數據源層 DB, XML, File
整個(gè)PdSoA架構的運行過(guò)程大概是這樣的:
1.用戶(hù)通過(guò)用戶(hù)接口啟動(dòng)相應的業(yè)務(wù)流程(也可以由其他流程或組件啟動(dòng)) 2.業(yè)務(wù)流程編排調用相應的業(yè)務(wù)服務(wù)(通常實(shí)現為Web服務(wù)) 3.業(yè)務(wù)服務(wù)代表系統內部功能對外的業(yè)務(wù)接口,它調用下一層的業(yè)務(wù)組件 4.業(yè)務(wù)組件調用數據訪(fǎng)問(wèn)組件訪(fǎng)問(wèn)數據庫 5.不同的數據源可以通過(guò)數據轉換服務(wù)形成全局性的聯(lián)邦數據虛擬視圖,供上層調用
PdSoA架構不同于傳統架構之處在于:
1. 首先,它多了一層業(yè)務(wù)服務(wù)接口層(以WebService實(shí)現)。服務(wù)設計面向業(yè)務(wù)而非技術(shù)。該層通常以粗粒度的WebService暴露系統的業(yè)務(wù)功能,而非傳統的細粒度的組件和對象。這樣,即使業(yè)務(wù)人員也可以編排業(yè)務(wù)服務(wù)。
2. 其次,它將業(yè)務(wù)流程抽象出來(lái),形成一種獨立,可視化的業(yè)務(wù)流程層。
a) 流程可以由業(yè)務(wù)人員(而非技術(shù)人員)可視化設計。例如可以用BPMN可視化建模。
b) 設計好的流程幾乎可以直接部署執行,解決了傳統上從設計到實(shí)現的轉換問(wèn)題。建好的模型可以由BPMS自動(dòng)轉化為一種非可視的模型(如BPEL4WS)來(lái)表達的,然后BPMS可以解釋相應的BPEL4WS并執行之。
c) 極大地提高了流程動(dòng)態(tài)調整的能力。由于流程可以以可視化方式表達(BPMN),不再固化于程序代碼中,業(yè)務(wù)人員可以方便的以可視化方式修改流程并由BPMS執行,整個(gè)過(guò)程在最好的情況下甚至無(wú)需編碼。這就為業(yè)務(wù)人員調整流程打開(kāi)了新的途徑,動(dòng)態(tài)調整流程以適應業(yè)務(wù)變化已不再是業(yè)務(wù)人員和技術(shù)人員的夢(mèng)魘。
d) 更好地控制業(yè)務(wù)流程。使用流程服務(wù)可以提供一個(gè)中心服務(wù),該中心服務(wù)控制器它服務(wù)的交互,從而可以查詢(xún)運作信息和管理信息,這將進(jìn)一步改善系統的管理和維護。
e) 減少依賴(lài)項的數量。當許多服務(wù)直接交互時(shí),這些服務(wù)必須辨別出彼此的服務(wù)接口。這樣,在合并更多服務(wù)時(shí),依賴(lài)項數量將按服務(wù)數的指數增長(cháng)。而利用流程服務(wù)提供的中心管理點(diǎn),則可以形成星形拓撲,其在系統中保留的依賴(lài)項總數與涉及的服務(wù)呈線(xiàn)性比例關(guān)系。
f) 簡(jiǎn)化外部通信。僅向外部公開(kāi)一個(gè)入口點(diǎn),即流程服務(wù)入口點(diǎn)。
g) 簡(jiǎn)化異常處理。 在PdSoA中,以BPEL4WS表達的業(yè)務(wù)流程本身也可以作為一個(gè)Web服務(wù)對外展示自己,供其它系統以一致的方式調用,這種基于業(yè)務(wù)流程的服務(wù)稱(chēng)為流程服務(wù)。不管是業(yè)務(wù)服務(wù)還是流程服務(wù)都可以將自己注冊到服務(wù)注冊庫,供其它系統查找。業(yè)務(wù)流程層的業(yè)務(wù)規則是流程執行時(shí)所遵循的規則,由BPMS維護。
BPMS
如上所述,PdSoA架構將業(yè)務(wù)流程提升到架構的中心地位,專(zhuān)門(mén)增加了一個(gè)流程抽象層來(lái)表達和管理流程,但這需要一類(lèi)特定的軟件系統來(lái)管理和控制業(yè)務(wù)流程,這就是業(yè)務(wù)流程管理系統BPMS。在BPMS中,業(yè)務(wù)流程成為新的數據類(lèi)型,它不僅可以被IT人員理解和操縱,而且可以直接被業(yè)務(wù)人員理解和操縱,在BPMS中創(chuàng )建的流程模型幾乎不需任何編碼就可以立即執行。BPMS應該具有的基本功能包括:定義業(yè)務(wù)流程,運行業(yè)務(wù)流程,監控業(yè)務(wù)流程,集成人,流程和應用,仿真業(yè)務(wù)流程,實(shí)現業(yè)務(wù)流程規則引擎。
應用開(kāi)發(fā)范式的轉變
隨著(zhù)企業(yè)開(kāi)發(fā)的業(yè)務(wù)服務(wù)越來(lái)越多,業(yè)務(wù)服務(wù)將成為企業(yè)最重要的基礎設施和資產(chǎn)。
傳統開(kāi)發(fā)范式 建立業(yè)務(wù)模型 -à 系統設計(業(yè)務(wù)模型轉化為設計模型) -à 系統實(shí)現(編碼)-à 系統部署與執行。
基于PdSoA架構的開(kāi)發(fā)范式 建立業(yè)務(wù)模型(主要是業(yè)務(wù)流程模型) -à 直接部署與執行。
對比上面兩種開(kāi)發(fā)范式,可以看出,基于PdSoA架構的應用開(kāi)發(fā)范式由于采用了BPM技術(shù),其業(yè)務(wù)模型在設計好后可以通過(guò)BPMS直接部署和執行,而無(wú)需象傳統范式那樣經(jīng)過(guò)繁瑣的業(yè)務(wù)模型到設計模型的轉換以及后續地編碼,這就極大的簡(jiǎn)化了開(kāi)發(fā)過(guò)程,提高了開(kāi)發(fā)效率。
PdSoA架構支持標準
PdSoA架構相對于傳統三層架構實(shí)際上增加了兩個(gè)技術(shù)層次,一是業(yè)務(wù)服務(wù)接口層,二是業(yè)務(wù)流程層。目前,業(yè)界已開(kāi)發(fā)了比較成熟的技術(shù)標準支持這兩個(gè)層次,從而使PdSoA架構具有了廣泛應用的可能性,支持這兩層的技術(shù)標準棧如圖所示
流程符號 BPMN 流程實(shí)施 BPML (BPML4WS) 流程接口 BPQL,UDDI,WSCI,WS-Security,WS-Transaction,WS-Coordination 服務(wù)描述 WSDL 服務(wù)傳輸 SOAP
結語(yǔ)
傳統的三層架構應用由于流程邏輯硬編碼與程序代碼中,使得程序難以動(dòng)態(tài)調整以適應業(yè)務(wù)流程的變化,缺乏敏捷性;又因為采用了緊耦合的技術(shù),使得程序互操作性差,難以有效集成。而流程驅動(dòng)的面向服務(wù)地架構采用了松耦合的Web服務(wù)技術(shù),大大提高了系統的互操作性,同時(shí),由于采用了現代BPM技術(shù),將流程獨立出來(lái),實(shí)現了對流程的獨立管理和控制,使得流程的動(dòng)態(tài)調整得以實(shí)現,系統敏捷性得到巨大提升。
|
聯(lián)系客服