面向服務(wù)的體系架構(gòu)(service oriented architecture,SOA)是一種可以根據(jù)業(yè)務(wù)需求,通過(guò)網(wǎng)絡(luò)對(duì)松散耦合的粗粒度應(yīng)用組件進(jìn)行分布式部署、組合和使用的軟件系統(tǒng)架構(gòu)。SOA使得業(yè)務(wù)流程的自動(dòng)化和在不同系統(tǒng)之間的信息共享變得更加容易腳,并支持跨企業(yè)和業(yè)務(wù)合作伙伴之間的端到端集成,使得客戶可以迅速地響應(yīng)新的業(yè)務(wù)需求,為企業(yè)的信息化帶來(lái)了一種全新的設(shè)計(jì)理念。
供應(yīng)鏈管理(supply chain management,SCM)是一種集成的管理思想和方法,其圍繞核心企業(yè),執(zhí)行供應(yīng)鏈中從供應(yīng)商到最終用戶的物流、信息流、業(yè)務(wù)流、資金流的計(jì)劃和控制職能,并通過(guò)分析、整合價(jià)值鏈來(lái)進(jìn)行供應(yīng)鏈管理。汽車業(yè)供應(yīng)鏈?zhǔn)亲畹湫偷墓?yīng)鏈組織結(jié)構(gòu)模式。以汽車制造企業(yè)為供應(yīng)鏈的核心,作為供應(yīng)鏈的物流調(diào)度與管理中心,擔(dān)負(fù)著信息集成與交換的作用,在產(chǎn)品設(shè)計(jì)、制造、裝配等方面具有強(qiáng)大優(yōu)勢(shì),其不但可以拉動(dòng)上游供應(yīng)商的原材料供應(yīng),也可以推動(dòng)下游分銷商的產(chǎn)品分銷及客戶服務(wù)。隨著Web服務(wù)及相關(guān)計(jì)算機(jī)技術(shù)的迅速發(fā)展,汽車供應(yīng)鏈系統(tǒng)也逐步過(guò)渡到以Web服務(wù)為基礎(chǔ)的面向服務(wù)的系統(tǒng)結(jié)構(gòu)(SOA)之上。如何在面向服務(wù)的體系結(jié)構(gòu)之上實(shí)現(xiàn)隨汽車工業(yè)市場(chǎng)的全球化與制造的全球化而靈活多變的SCM業(yè)務(wù)集成,建立松散耦合的供應(yīng)鏈管理系統(tǒng),成為各大汽車廠商迫切需要解決的問(wèn)題。
1 面向服務(wù)的體系架構(gòu)
早在2000年,面向服務(wù)的體系結(jié)構(gòu)就隨著HP的E-Speak實(shí)現(xiàn)而出現(xiàn)了。從20世紀(jì)90年代早期到中期,HP的實(shí)驗(yàn)室開始著手研究如何解決分布式系統(tǒng)的技術(shù)和成本的難題,這項(xiàng)研究被其稱為E-Speak。E-Speak使用HTTP這樣的通用協(xié)議,數(shù)據(jù)的表示采用的是XML,并且將各種聯(lián)網(wǎng)系統(tǒng)看成能夠快速插接數(shù)據(jù)流的電子服務(wù)。但是,E-Speak的理念比目前的WebServices技術(shù)內(nèi)聚性更強(qiáng),HP最近決定淡化E-Speak,轉(zhuǎn)而支持更主流的WebServices。IBM和Microsoft發(fā)現(xiàn)SOA的潛在概念非常有價(jià)值:基于開發(fā)的標(biāo)準(zhǔn)下實(shí)現(xiàn)SOA,可使它在其它分布式計(jì)算模型失敗之處獲得成功。這些IT巨頭都迅速的推出了各自的SOA技術(shù)和產(chǎn)品,同時(shí)得到了其它行業(yè)的熱烈響應(yīng),如美國(guó)印第安納大學(xué)CommunityGridsLab嘗試用WebServices構(gòu)建SOA架構(gòu)的GIS系統(tǒng)。
若不考慮具體實(shí)現(xiàn),基本的SOA架構(gòu)包含了SOAP、WSDL、UDDI等支持服務(wù)請(qǐng)求者與服務(wù)提供者進(jìn)行交互,以及用于Web服務(wù)發(fā)現(xiàn)的規(guī)范:
(1)服務(wù)提供者通常用WSDL來(lái)描述它所提供的服務(wù),然后將該WSDL描述發(fā)布。它為處理一系列特定任務(wù)的軟件資源提供服務(wù)接口。服務(wù)提供者能代表商業(yè)實(shí)體的服務(wù),或者它甚至能代表可重用的子系統(tǒng)的服務(wù)接口。
(2)服務(wù)請(qǐng)求者可以通過(guò)UDDI或其它的注冊(cè)庫(kù)來(lái)獲取WSDL描述,并通過(guò)向服務(wù)提供者發(fā)送一個(gè)SOAP消息來(lái)請(qǐng)求執(zhí)行服務(wù)。它發(fā)現(xiàn)并調(diào)用其它的軟件服務(wù)來(lái)提供商業(yè)解決方案。服務(wù)請(qǐng)求者常常指對(duì)分布式對(duì)象(即服務(wù)提供者)執(zhí)行遠(yuǎn)端過(guò)程調(diào)用的商業(yè)應(yīng)用程序組件。在某些情況下,提供者就在本地的企業(yè)內(nèi)部網(wǎng)上,在其它情況下,它可能存在于遠(yuǎn)端的Internet上。從本質(zhì)上來(lái)說(shuō),SOA將傳輸協(xié)議、安全細(xì)節(jié)等留給特定的實(shí)現(xiàn)來(lái)處理。
(3)服務(wù)注冊(cè)者也稱為服務(wù)中介者,作為存儲(chǔ)庫(kù)的功能,產(chǎn)生由服務(wù)提供者發(fā)布的軟件接口。商業(yè)實(shí)體或者獨(dú)立運(yùn)營(yíng)商能代表服務(wù)中介者。
以上3類SOA參與者通過(guò)3項(xiàng)基本操作:發(fā)布、查找、綁定相互作用。服務(wù)提供者向服務(wù)中介者發(fā)布服務(wù),服務(wù)請(qǐng)求者通過(guò)服務(wù)中介者查找所申請(qǐng)的服務(wù),并綁定到這些服務(wù)上。SOA是執(zhí)行分布式動(dòng)態(tài)服務(wù)的概念性架構(gòu)州。
2 Web服務(wù)技術(shù)
在SOA架構(gòu)中,Web服務(wù)是封裝成用于業(yè)務(wù)流程的可重用組件的應(yīng)用程序函數(shù),它提供信息或簡(jiǎn)化業(yè)務(wù)數(shù)據(jù)從一個(gè)有效的、一致的狀態(tài)向另一個(gè)狀態(tài)的轉(zhuǎn)變。Web服務(wù)成功實(shí)現(xiàn)的關(guān)鍵就是以SOA為構(gòu)架、依靠開放的Intcrnet標(biāo)準(zhǔn)建立一個(gè)新興的核心技術(shù)系列:服務(wù)描述語(yǔ)言(web servicesdescription language,WSDL)、服務(wù)注冊(cè)和發(fā)現(xiàn)(universal,discovery,description,integration,UDDI)協(xié)議、服務(wù)通信協(xié)議一簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(simple object access protocol,SOAP)。Web服務(wù)定義了一種自描述方式來(lái)發(fā)現(xiàn)并調(diào)用軟件應(yīng)用程序中的方法——不必考慮位置或平臺(tái)。數(shù)據(jù)被編入XML請(qǐng)求/響應(yīng)文檔,并使用HTTP或基于消息的協(xié)議在軟件包之間進(jìn)行傳遞?;ゲ僮餍詥?wèn)題就潛伏在定義、發(fā)現(xiàn)以及請(qǐng)求/響應(yīng)機(jī)制中。
(1)Web服務(wù)描述語(yǔ)言(WSDL):WSDL是通過(guò)使用標(biāo)準(zhǔn)的XML語(yǔ)法描述服務(wù)IDL。它為服務(wù)提供者提供一種簡(jiǎn)單的方法,描述服務(wù)請(qǐng)求及響應(yīng)方式的遠(yuǎn)程方法調(diào)用(RMI)信息,利用各自的參數(shù)和數(shù)據(jù)類型來(lái)定義其發(fā)布的操作。
(2)通用服務(wù)描述、發(fā)現(xiàn)和集成協(xié)議(UDDI):UDDI規(guī)范提供一組公用的SOAPAPI來(lái)實(shí)現(xiàn)服務(wù)中介者,它們管理的服務(wù)接口目錄是中介者所需要的標(biāo)準(zhǔn)方法。UDDI規(guī)范定義了4種核心數(shù)據(jù)模型,業(yè)務(wù)實(shí)體信息(businessEntity)、業(yè)務(wù)服務(wù)信息(businessService)、技術(shù)綁定信息(bindingTcmplate)和元技術(shù)信息(tModel),它促進(jìn)了基于Web服務(wù)的創(chuàng)建、描述、發(fā)現(xiàn)和集成。
(3)簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP):SOAP是一個(gè)基于XML的,用于在分布式環(huán)境下交換信息的輕量級(jí)協(xié)議,它在請(qǐng)求者和提供者對(duì)象之間定義了一個(gè)通訊協(xié)議。SOAP消息基本上就是一個(gè)XML文檔,它包括4個(gè)部分:SOAP封裝,封裝定義了一個(gè)描述消息中的內(nèi)容是什么,是誰(shuí)發(fā)送的,誰(shuí)應(yīng)當(dāng)接受并處理它以及如何處理它們的框架;SOAP編碼規(guī)則,用于表示應(yīng)用程序需要使用的數(shù)據(jù)類型的實(shí)例;SOAPRPC表示,表示遠(yuǎn)程過(guò)程調(diào)用和應(yīng)答的協(xié)定;SOAP綁定,使用底層協(xié)議交換信息。
3 企業(yè)服務(wù)總線
企業(yè)服務(wù)總線(enterprise service bus,ESB)是一種邏輯體系結(jié)構(gòu),它提供與SOA的原則保持一致的集成基礎(chǔ)架構(gòu),并提供了管理服務(wù)基礎(chǔ)架構(gòu)的方法和在分布式異構(gòu)環(huán)境中進(jìn)行操作的功能。ESB是為了更好的服務(wù)于企業(yè)應(yīng)用,解決SOA架構(gòu)中服務(wù)模塊間調(diào)用的互操作問(wèn)題的一種基礎(chǔ)架構(gòu)。在ESB模式中,服務(wù)交互的參與者并不直接交互,而是通過(guò)一個(gè)總線交互,該總線提供虛擬化和管理功能來(lái)實(shí)現(xiàn)和擴(kuò)展SOA的核心定義。
ESB提供一個(gè)基于標(biāo)準(zhǔn)的松散應(yīng)用耦合模式,可以作為分布式的異構(gòu)基礎(chǔ)架構(gòu),擔(dān)當(dāng)連接應(yīng)用程序和整個(gè)企業(yè)中其它服務(wù)的共享消息收發(fā)層,可采用事件通知、智能路由、數(shù)據(jù)轉(zhuǎn)換等技術(shù)實(shí)現(xiàn)。ESB所涉及的技術(shù)有:訪問(wèn)各個(gè)應(yīng)用服務(wù)的適配器、消息的可靠傳遞與管理、基于XML的統(tǒng)一訪問(wèn)接口等,使用JMS(Java消息服務(wù))和XML來(lái)實(shí)現(xiàn)標(biāo)準(zhǔn)化。JMS提供事件分布和事務(wù)性確保傳遞的方法,主要應(yīng)用在事務(wù)性消息交換和實(shí)時(shí)事件通知領(lǐng)域。ESB是一個(gè)基于XML消息的高速邏輯通信總線,可用于所有的服務(wù)請(qǐng)求者和提供者,服務(wù)、應(yīng)用以及資源的動(dòng)態(tài)發(fā)現(xiàn),元目錄搜索,事務(wù)傳輸?shù)取?/p>
4 基于SOA架構(gòu)實(shí)現(xiàn)汽車SCM系統(tǒng)
利用面向服務(wù)的架構(gòu)設(shè)計(jì)汽車供應(yīng)鏈管理系統(tǒng),在汽車企業(yè)現(xiàn)狀基礎(chǔ)上實(shí)現(xiàn)業(yè)務(wù)流程的改善,對(duì)整個(gè)供應(yīng)鏈實(shí)施協(xié)同管理,平衡整體利益分配,建立充分的信任關(guān)系,實(shí)現(xiàn)流程的協(xié)同共享,進(jìn)一步實(shí)現(xiàn)協(xié)同知識(shí)創(chuàng)新。建立生產(chǎn)主計(jì)劃信息平臺(tái)(master planning system,MPS) 、物料需求計(jì)劃信息平臺(tái)(materiel requirementplanning,MRP) 、零部件庫(kù)存信息平臺(tái)(warehouse management system,WMS) 、生產(chǎn)制造執(zhí)行平臺(tái)(manufacture execution system,MES) ,以及供應(yīng)商數(shù)據(jù)信息交換平臺(tái)。打通供應(yīng)生態(tài)鏈的信息孤島,逐步實(shí)現(xiàn)的同期化生產(chǎn),縮短產(chǎn)品交付周期,降低制造成本,提高質(zhì)量,以達(dá)到提高客戶滿意度和企業(yè)競(jìng)爭(zhēng)力的目的。
(1)系統(tǒng)模型:各模塊都是基于服務(wù)實(shí)現(xiàn)的,這些服務(wù)提供可被調(diào)用的Web Services接口。通過(guò)單個(gè)服務(wù)或者多個(gè)服務(wù)的組合來(lái)形成業(yè)務(wù)流程,從而構(gòu)成各業(yè)務(wù)子模塊。各子模塊通過(guò)SOAP消息進(jìn)行通信,相互訪問(wèn)業(yè)務(wù)資源。系統(tǒng)從邏輯上分為3層:持久層、業(yè)務(wù)邏輯層、表示層。其中,持久層實(shí)現(xiàn)了業(yè)務(wù)對(duì)象數(shù)據(jù)的固化過(guò)程,主要封裝了通過(guò)JDBC訪問(wèn)數(shù)據(jù)庫(kù)的一些方法,業(yè)務(wù)對(duì)象數(shù)據(jù)最終存儲(chǔ)的地方,例如Oracle、DB2、SQLServer數(shù)據(jù)庫(kù)等;業(yè)務(wù)邏輯層實(shí)現(xiàn)業(yè)務(wù)邏輯、服務(wù)封裝和數(shù)據(jù)訪問(wèn)代理的功能,并采用一致的組織策略對(duì)所有業(yè)務(wù)實(shí)體進(jìn)行統(tǒng)一表示,對(duì)封裝的Web服務(wù)提供查找和邏輯組合功能,業(yè)務(wù)實(shí)體和數(shù)據(jù)類的映射采用XML配置文件實(shí)現(xiàn),業(yè)務(wù)邏輯層也是應(yīng)用服務(wù)器上的UI層代理,作為UI和中間業(yè)務(wù)邏輯層以及業(yè)務(wù)流程引擎打交道的橋梁,可以根據(jù)界面的要求組織業(yè)務(wù)邏輯層的調(diào)用;表示層是最終用戶的使用界面,包括Java應(yīng)用程序、JavaApplet、Scrvlet或者JSP程序統(tǒng)稱為UI層,主要體現(xiàn)與用戶的交互過(guò)程。系統(tǒng)模型如圖1所示。
圖1 系統(tǒng)模型
此外,在設(shè)計(jì)軟件架構(gòu)中創(chuàng)造性的將業(yè)務(wù)對(duì)象的屬性單獨(dú)提出形成業(yè)務(wù)數(shù)據(jù)BusincssData,各層應(yīng)用之間的數(shù)據(jù)傳遞通過(guò)傳遞BusincssData完成。這些BusinessData對(duì)應(yīng)于業(yè)務(wù)數(shù)據(jù)字典,同企業(yè)具體業(yè)務(wù)數(shù)據(jù)的描述保持一致,實(shí)現(xiàn)一個(gè)數(shù)據(jù)在企業(yè)應(yīng)用中的定義及這個(gè)數(shù)據(jù)的構(gòu)成結(jié)構(gòu)。例如發(fā)布給供應(yīng)商的采購(gòu)訂單、采購(gòu)驗(yàn)收單等都是這樣的業(yè)務(wù)數(shù)據(jù)類。
(2)Web服務(wù)實(shí)現(xiàn):以PurchascOrderService為例說(shuō)明服務(wù)的具體實(shí)現(xiàn):PurclmseOrder Service服務(wù)對(duì)應(yīng)物料需求計(jì)劃中的采購(gòu)訂單功能模塊,實(shí)現(xiàn)了對(duì)采購(gòu)訂單的新增、修改、刪除、生產(chǎn)部回復(fù)、審核、跟蹤和查詢操作,分別對(duì)應(yīng)CreatePurchaseOrder()、ModifyPurchaseOrder()、DeletePurchaseOrder()、FeedBackPurclmseOrder()、CheckPurchaseOrder()、OverPurchaseOrder()和QueryPurchaseOrder()方法。生產(chǎn)部回復(fù)采購(gòu)訂單且經(jīng)營(yíng)部門同意生產(chǎn)部回復(fù)后,確定合同履行承諾的入庫(kù)日期,并由經(jīng)營(yíng)部門負(fù)責(zé)回復(fù)發(fā)交計(jì)劃,這個(gè)操作對(duì)應(yīng)PurchaseOrder Service中的FeedBackToDistributePlan()方法。服務(wù)模型如圖2所示。
圖2 Purchase Order Service實(shí)現(xiàn)模型
(3)服務(wù)組合及流程編排:采用BPEL流程管理器將上述定義好的Web服務(wù)進(jìn)行編排,定義這些Web服務(wù)操作的執(zhí)行順序,并將聚集Web服務(wù)定義的操作映射到內(nèi)含的Web服務(wù)所實(shí)現(xiàn)的操作中去。流程模型通過(guò)定義一個(gè)公共接口或操作的portType表示聚集Web服務(wù)。如圖3所示,在采購(gòu)收貨流程中,將定義的Web服務(wù):接收交換單服務(wù)(ReceiveDeliveryOrderService)、按采購(gòu)訂單收貨服務(wù)(ReceiveByPurchaseOrderService)、補(bǔ)采購(gòu)訂單服務(wù)(AddeurchaseOrderService)、質(zhì)量檢驗(yàn)服務(wù)(QualitylnspectionService)、入庫(kù)服務(wù)(MoveInService)、退貨服務(wù)(RetumBackService),通過(guò)BPEL業(yè)務(wù)流程執(zhí)行語(yǔ)言進(jìn)行編排,實(shí)現(xiàn)這些服務(wù)的連接。
圖3 采購(gòu)收貨流程編排
通過(guò)BPEL流程管理,能夠?qū)⑾到y(tǒng)中的任意服務(wù)進(jìn)行松散耦合地編排起來(lái),各服務(wù)程序并不關(guān)心對(duì)方服務(wù)的內(nèi)部實(shí)現(xiàn),只要按照預(yù)先暴露出來(lái)的服務(wù)接口進(jìn)行編程即可。在這種交互模式中,對(duì)于同一個(gè)服務(wù)在不同時(shí)刻,可能是服務(wù)提供者,也可能是服務(wù)請(qǐng)求者,接收其它服務(wù)所傳遞過(guò)來(lái)的消息。
(4)系統(tǒng)運(yùn)行實(shí)例:通過(guò)基于SOA架構(gòu)的思想實(shí)現(xiàn)了汽車供應(yīng)鏈管理系統(tǒng),整個(gè)系統(tǒng)是一個(gè)松散耦合的體系,不但內(nèi)部結(jié)構(gòu)更加具有柔韌性,而且可以隨時(shí)響應(yīng)外部系統(tǒng)的需求,并提供共通開放的數(shù)據(jù)接口,為企業(yè)的擴(kuò)展帶來(lái)了巨大改善。而且系統(tǒng)在加密通信和系統(tǒng)權(quán)限上也采取了有效的措施,能夠保證企業(yè)供應(yīng)鏈得到平穩(wěn)安全地運(yùn)行。
在系統(tǒng)運(yùn)行過(guò)程中,通過(guò)利用WebSphcreBusinessMonitor的實(shí)時(shí)圖形化監(jiān)控、性能管理功能,幫助流程的持續(xù)改善,能夠讓W(xué)eb服務(wù)變得易管理,而且能及時(shí)發(fā)現(xiàn)Web服務(wù)存在的情況、可用性、運(yùn)行狀況、性能、用法以及動(dòng)態(tài)配置平臺(tái)內(nèi)的Web服務(wù)。
面向服務(wù)的架構(gòu)不是一項(xiàng)技術(shù),也不是一項(xiàng)技術(shù)標(biāo)準(zhǔn),而是一個(gè)高級(jí)概念,SOA獨(dú)立于標(biāo)準(zhǔn),提供了架構(gòu)藍(lán)圖。通過(guò)強(qiáng)大的企業(yè)架構(gòu)概念來(lái)解決企業(yè)IT環(huán)境的結(jié)構(gòu)性問(wèn)題,建立一個(gè)組織級(jí)別的架構(gòu)策略。SOA提供了這一手段,基于SOA架構(gòu)的汽車供應(yīng)鏈管理系統(tǒng)便是一個(gè)有效的解決方案。此外,SOA架構(gòu)的實(shí)現(xiàn)是一個(gè)漸進(jìn)的過(guò)程,需要長(zhǎng)期的監(jiān)管和指導(dǎo),應(yīng)該分步實(shí)現(xiàn),一步一個(gè)腳印、穩(wěn)定地接近日標(biāo)。前進(jìn)的路上不是一帆風(fēng)順,有時(shí)會(huì)遇到一些無(wú)法控制的影響。但要堅(jiān)信,SOA一定會(huì)給企業(yè)帶來(lái)長(zhǎng)期效益。
分享到微信 ×
打開微信,點(diǎn)擊底部的“發(fā)現(xiàn)”,
使用“掃一掃”即可將網(wǎng)頁(yè)分享至朋友圈。