摘 要:以SOA理論體系為出發(fā)點(diǎn),提出了基于企業(yè)服務(wù)總線(xiàn)(enterprise service bus,ESB)的分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)的體系結(jié)構(gòu),并分析了該信息共享平臺(tái)建設(shè)的生命周期。進(jìn)一步采用案例分析的研究方法,以企業(yè)信息系統(tǒng)設(shè)計(jì)項(xiàng)目與IBM高校合作項(xiàng)目為例子,探討了分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)的服務(wù)建模過(guò)程,并設(shè)計(jì)和開(kāi)發(fā)了一個(gè)分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)。
關(guān)鍵詞:服務(wù)供應(yīng)鏈; 面向服務(wù)架構(gòu); 企業(yè)服務(wù)總線(xiàn); 生命周期; 服務(wù)建模
中圖分類(lèi)號(hào):TP391
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2010)02-0606-05
doi:10.3969/j.issn.1001-3695.2010.02.057
Research and practice on SOA-based distributed information system for service supply chain
SHEN Hui-zhang1, ZHAO Ji-di1, QIU Robin2
(1.Dept. of Management Information Systems, Antai College of Economics Management,Shanghai Jiaotong University,Shanghai 200052, China; 2. Division of Engineering Information Science, The Pennsylvania State University, Great Valley, Malvern, PA 19355, U.S.A.)
Abstract:Start from the underlying theory of SOA, this papeer presented the system architecture for distributed information systems of service supply chain based on ESB, and proposed the lifecycle model for building such an information system. With the case study of IBM SUR project, probed into the process of service modeling in the supply chain and its distributed system implementation.
Key words:service supply chain; SOA(service-oriented architecture); ESB; life cycle; service modeling
0 引言
當(dāng)今的企業(yè)以及服務(wù)供應(yīng)鏈上的各合作伙伴已經(jīng)越來(lái)越依賴(lài)IT基礎(chǔ)結(jié)構(gòu)來(lái)支撐其業(yè)務(wù)流程,然而目前的企業(yè)信息系統(tǒng)普遍存在著兩大問(wèn)題,即不敏捷和效率不高。不敏捷是指企業(yè)及其合作伙伴不能依賴(lài)IT基礎(chǔ)結(jié)構(gòu)來(lái)快速滿(mǎn)足業(yè)務(wù)需求的變化,缺乏有效應(yīng)對(duì)市場(chǎng)需求的能力。效率不高是指企業(yè)信息系統(tǒng)開(kāi)發(fā)的成本過(guò)高,投入的資金往往得不償失。此外,服務(wù)供應(yīng)鏈上的企業(yè)及其合作伙伴往往擁有異構(gòu)系統(tǒng),即各自系統(tǒng)在基礎(chǔ)架構(gòu)、技術(shù)實(shí)現(xiàn)、數(shù)據(jù)描述等多方面采用的方法不一致,以致這些位置上分散的獨(dú)立系統(tǒng)逐漸形成了所謂的“信息孤島”,導(dǎo)致多個(gè)信息系統(tǒng)之間的通信與集成非常困難,形成了服務(wù)供應(yīng)鏈發(fā)展的瓶頸。
本文基于IBM中國(guó)研究院(IBM CRL)與上海交通大學(xué)、清華大學(xué)等國(guó)內(nèi)四所著名大學(xué)聯(lián)合開(kāi)展合作項(xiàng)目“服務(wù)供應(yīng)鏈系統(tǒng)”的研究工作,研究一個(gè)分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)的服務(wù)建模和實(shí)施過(guò)程。本文首先以SOA理論體系的研究為出發(fā)點(diǎn),然后提出了信息共享平臺(tái)建設(shè)的生命周期。以筆者所參與的某外資企業(yè)信息系統(tǒng)開(kāi)發(fā)項(xiàng)目為業(yè)務(wù)背景,探討了分布式服務(wù)供應(yīng)鏈的體系結(jié)構(gòu)。首先對(duì)分布式服務(wù)供應(yīng)鏈中的業(yè)務(wù)進(jìn)行了描述,然后采用案例分析的研究方法,以自動(dòng)補(bǔ)充庫(kù)存這一業(yè)務(wù)流程為例,詳細(xì)分析了服務(wù)建模、服務(wù)開(kāi)發(fā)和基于服務(wù)總線(xiàn)(ESB)的服務(wù)集成和實(shí)施過(guò)程。
1)面向服務(wù)架構(gòu) 回顧軟件工程的發(fā)展歷史和狀況發(fā)現(xiàn),軟件開(kāi)發(fā)者一直努力地嘗試在開(kāi)發(fā)中實(shí)現(xiàn)各種分離[1],如頁(yè)面顯示層和業(yè)務(wù)邏輯層的分離,實(shí)現(xiàn)了業(yè)務(wù)組件和調(diào)用者的分離等,其目的是為了實(shí)現(xiàn)組件的可重用性,從而幫助企業(yè)建立敏捷服務(wù)、快速重構(gòu)、資源重用和具備良好擴(kuò)展性的IT系統(tǒng),以適應(yīng)迅速變化的市場(chǎng)需求。1996年,Gartner最早提出SOA(面向服務(wù)架構(gòu))的概念[2]。據(jù)Gartner預(yù)計(jì),到2010年,SOA將成為占有絕對(duì)優(yōu)勢(shì)的軟件工程實(shí)踐方法。SOA延續(xù)上述分離的思路,致力于實(shí)現(xiàn)服務(wù)與技術(shù)的完全分離,從而達(dá)到服務(wù)的可重用性,這也是SOA的核心實(shí)質(zhì)。圖1對(duì)傳統(tǒng)的面向?qū)ο竽P?圖1(a))與SOA模型(圖1(b))進(jìn)行了比較[3]。面向?qū)ο竽P椭斜憩F(xiàn)層與業(yè)務(wù)對(duì)象之間需要進(jìn)行大量的調(diào)用,當(dāng)這種調(diào)用為遠(yuǎn)程調(diào)用時(shí),系統(tǒng)響應(yīng)性能會(huì)大大降低。在SOA的模型中,引入了一個(gè)叫做服務(wù)的抽象層,服務(wù)層進(jìn)一步封裝業(yè)務(wù)對(duì)象。服務(wù)層中存儲(chǔ)的是服務(wù),在網(wǎng)絡(luò)中傳輸?shù)氖欠?wù)合約,而不是具體的業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯,網(wǎng)絡(luò)負(fù)載要少得多。圖1(a)為表現(xiàn)層與業(yè)務(wù)邏輯層之間的三次調(diào)用,在(b)中通過(guò)表現(xiàn)層與服務(wù)層之間的兩次調(diào)用就可以完成。
SOA是以服務(wù)為基礎(chǔ)的整合設(shè)計(jì)架構(gòu),服務(wù)是SOA的關(guān)鍵。W3C將服務(wù)定義為:“服務(wù)提供者完成一組工作,為服務(wù)請(qǐng)求者交付所需的最終結(jié)果。最終結(jié)果通常是使用者的狀態(tài)發(fā)生變化,但也可能是提供者的狀態(tài)改變,或者雙方都產(chǎn)生變化。”從IT技術(shù)角度上說(shuō),SOA中的服務(wù)(service)是封裝業(yè)務(wù)流程的、可供遠(yuǎn)程訪(fǎng)問(wèn)的、獨(dú)立的、位置透明的、可重用的應(yīng)用程序模塊。簡(jiǎn)單來(lái)說(shuō),服務(wù)就是一個(gè)供外部使用者使用的離散的功能。這個(gè)功能可以是獨(dú)立的業(yè)務(wù)功能,也可以是構(gòu)成某一流程的功能集。一個(gè)服務(wù)包含一個(gè)合約、一個(gè)或多個(gè)接口,以及一個(gè)實(shí)現(xiàn)[2],如圖2所示。其中,服務(wù)合約提供了一個(gè)信息規(guī)范,說(shuō)明服務(wù)的作用、功能、約束和使用。一個(gè)服務(wù)可以擁有一個(gè)或多個(gè)接口,每個(gè)接口都能在服務(wù)合約中找到它的接口描述,服務(wù)的功能是通過(guò)服務(wù)接口向服務(wù)請(qǐng)求者公開(kāi)的。服務(wù)實(shí)現(xiàn)包含業(yè)務(wù)邏輯和數(shù)據(jù),表示了服務(wù)合約技術(shù)上的實(shí)現(xiàn)。
SOA是一種企業(yè)架構(gòu),它和其他企業(yè)架構(gòu)方法的不同之處在于SOA提供的業(yè)務(wù)敏捷性。采用基于SOA的企業(yè)架構(gòu)意味著要?jiǎng)?chuàng)建一個(gè)能夠連接異構(gòu)信息系統(tǒng)并可以滿(mǎn)足當(dāng)前還未知的業(yè)務(wù)需求的IT架構(gòu)。
2)企業(yè)服務(wù)總線(xiàn) SOA的實(shí)施有多種方式,而最常用的是基于企業(yè)服務(wù)總線(xiàn)的實(shí)現(xiàn)方式,如圖3所示。
企業(yè)服務(wù)總線(xiàn)ESB是一個(gè)集成的平臺(tái),主要功能包括:a)能夠在所管理的服務(wù)之間實(shí)現(xiàn)消息路由,也就是說(shuō)能夠?qū)⑾姆?wù)A轉(zhuǎn)向另一個(gè)服務(wù)B。b)能夠在服務(wù)請(qǐng)求者和服務(wù)提供者之間實(shí)現(xiàn)傳輸協(xié)議的轉(zhuǎn)換。例如,服務(wù)提供者的傳輸協(xié)議是Java RMI,而服務(wù)請(qǐng)求者的傳輸協(xié)議是HTTP/SOAP,ESB將會(huì)把請(qǐng)求者的傳輸協(xié)議轉(zhuǎn)換為Java RMI發(fā)送到服務(wù)提供者,在得到響應(yīng)后,再將響應(yīng)消息的傳輸協(xié)議轉(zhuǎn)換為HTTP/SOAP返回給服務(wù)請(qǐng)求者。c)能夠在服務(wù)請(qǐng)求者和服務(wù)提供者之間實(shí)現(xiàn)消息格式的轉(zhuǎn)換,如從COBOL字段到XML格式,從一種XML格式到另一種XML格式等。
通過(guò)企業(yè)服務(wù)總線(xiàn)技術(shù),實(shí)現(xiàn)了與業(yè)務(wù)邏輯分離的服務(wù)層,服務(wù)提供者的地址、傳輸協(xié)議以及具體實(shí)現(xiàn)對(duì)服務(wù)請(qǐng)求者來(lái)說(shuō)是完全透明的。ESB使企業(yè)更加關(guān)注于核心業(yè)務(wù),而不是關(guān)注如何將各種程序連接在一起的IT底層基礎(chǔ)技術(shù)。此外,企業(yè)可以在現(xiàn)有的服務(wù)中加入新的服務(wù),或者改變現(xiàn)有服務(wù),而不會(huì)對(duì)現(xiàn)有服務(wù)的使用產(chǎn)生影響。
1 基于SOA的信息共享平臺(tái)建設(shè)的生命周期
基于SOA的分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)建設(shè)的生命周期由四個(gè)階段共七個(gè)步驟組成,如圖4所示。
1)評(píng)估SOA的價(jià)值 企業(yè)在選擇SOA時(shí),首先必須考慮企業(yè)自身業(yè)務(wù)的情況以及業(yè)務(wù)的需要,考慮其經(jīng)營(yíng)目標(biāo)與IT預(yù)算之間的平衡以及未來(lái)的發(fā)展與當(dāng)期目標(biāo)之間的平衡,考慮充分利用現(xiàn)有的遺留系統(tǒng),重新設(shè)計(jì)和封裝,納入SOA體系架構(gòu)中,從而保護(hù)企業(yè)已有的IT投資。
2)SOA的管理與監(jiān)控 包括SOA轉(zhuǎn)型中的組織和流程準(zhǔn)備,確定SOA實(shí)施的目標(biāo)、規(guī)劃SOA實(shí)施策略、確定SOA架構(gòu)設(shè)計(jì)準(zhǔn)則、轉(zhuǎn)型過(guò)程中人員的培訓(xùn)和技術(shù)的積累以及SOA管理與監(jiān)控等內(nèi)容。
3)服務(wù)建模 包括對(duì)業(yè)務(wù)流程框架和服務(wù)模型以及企業(yè)現(xiàn)有IT模型的分析與設(shè)計(jì)[4]。SOA的核心內(nèi)容為“服務(wù)”,而“服務(wù)”的原型是企業(yè)的業(yè)務(wù)流程,因此服務(wù)建模首先是確立企業(yè)的業(yè)務(wù)流程框架;然后把業(yè)務(wù)流程轉(zhuǎn)換成SOA中的服務(wù),得出服務(wù)模型;最后,再根據(jù)服務(wù)模型分析企業(yè)現(xiàn)有信息系統(tǒng),釋放其中功能或數(shù)據(jù),對(duì)系統(tǒng)中的現(xiàn)有模塊和組件重新設(shè)計(jì)和封裝成服務(wù)。
4)服務(wù)架構(gòu)的設(shè)計(jì)與實(shí)現(xiàn) 首先是根據(jù)OASIS(Organization for the Advancement of Structured Information Standards,結(jié)構(gòu)信息標(biāo)準(zhǔn)化促進(jìn)組織)提出的參考模型SOA-RM 1.0 (SOA-reference model)分析和設(shè)計(jì)服務(wù)架構(gòu)[5],然后是選擇SOA支持環(huán)境產(chǎn)品,最后選擇服務(wù)架構(gòu)的實(shí)現(xiàn)技術(shù)。
5)以服務(wù)為中心開(kāi)發(fā) 在開(kāi)發(fā)服務(wù)時(shí),使服務(wù)封裝一些復(fù)雜程度較高的業(yè)務(wù)活動(dòng),以便服務(wù)請(qǐng)求者使用。SOA應(yīng)該按接近于實(shí)際業(yè)務(wù)本身的粗粒度標(biāo)準(zhǔn)來(lái)對(duì)服務(wù)進(jìn)行劃分,發(fā)布服務(wù)接口,這就要求設(shè)計(jì)和開(kāi)發(fā)人員直接從業(yè)務(wù)的角度來(lái)構(gòu)建SOA所提供的服務(wù),而不僅僅從模塊和IT技術(shù)的角度來(lái)構(gòu)建SOA服務(wù)。
6)以服務(wù)為中心集成 也稱(chēng)為面向服務(wù)集成SOI(service-oriented integrate),包括兩個(gè)層次的集成:首先是將企業(yè)內(nèi)部現(xiàn)有的系統(tǒng)集成起來(lái),定義并公布所提供的服務(wù)及服務(wù)接口;其次,基于設(shè)計(jì)的服務(wù)架構(gòu)來(lái)集成整個(gè)分布式服務(wù)供應(yīng)鏈中的多個(gè)信息系統(tǒng),實(shí)現(xiàn)各種服務(wù)的遠(yuǎn)程通信和互操作。
以上的步驟主要側(cè)重在功能層次上如何一步步地實(shí)現(xiàn)SOA,而第七步服務(wù)管理則側(cè)重于在SOA實(shí)施中如何實(shí)現(xiàn)非功能性需求,包括服務(wù)性能、服務(wù)安全等。
至此,SOA的實(shí)施基本完成,其中第一階段SOA計(jì)劃、管理與監(jiān)控包括了1)和2),SOA建模與架構(gòu)設(shè)計(jì)階段包括了步驟(3)和步驟(4),服務(wù)開(kāi)發(fā)與集成階段包括了5)和6),7)屬于第四階段服務(wù)部署和管理,這四個(gè)階段構(gòu)成了基于SOA的信息共享平臺(tái)建設(shè)的一個(gè)生命周期。然而,基于SOA的信息共享平臺(tái)建設(shè)是一條迭代的往復(fù)前進(jìn)的曲線(xiàn),而并不像瀑布模型那樣一蹴而就。因此,在第四階段,需要業(yè)務(wù)分析人員參與,對(duì)已有系統(tǒng)進(jìn)行業(yè)務(wù)分析,發(fā)掘新的需求或者可以改進(jìn)之處,然后重新進(jìn)入信息共享平臺(tái)建設(shè)生命周期的第一階段。
2 分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)的體系結(jié)構(gòu)
本項(xiàng)目中四個(gè)學(xué)校在分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)上擔(dān)任不同的角色。四個(gè)學(xué)校分處在我國(guó)北京、上海、南京這三個(gè)不同的大城市,上海交通大學(xué)(SJTU)是零售企業(yè),清華大學(xué)(Tsinghua)是制造商,北京理工大學(xué)(BIT)是分銷(xiāo)倉(cāng)儲(chǔ)中心,南京航天航空大學(xué)(NUAA)是第三方物流服務(wù)提供商。四個(gè)角色各自有自己獨(dú)立的一個(gè)或多個(gè)企業(yè)信息系統(tǒng),合在一起構(gòu)成了地理上分布的服務(wù)供應(yīng)鏈信息共享平臺(tái),如圖5所示。圖中實(shí)線(xiàn)代表實(shí)物產(chǎn)品流,虛線(xiàn)代表信息流。
建立這樣一個(gè)信息共享平臺(tái),需要一個(gè)好的解決方案以滿(mǎn)足下列需求:
a)確保信息共享平臺(tái)的可擴(kuò)展性。因?yàn)槟壳拔覀冎皇浅醪浇⒁粋€(gè)信息共享平臺(tái),所以在滿(mǎn)足目前需求的前提下,還需要著眼于未來(lái)研究工作對(duì)信息共享平臺(tái)進(jìn)行擴(kuò)展的需要,需要預(yù)留未來(lái)增加功能的機(jī)制,當(dāng)將來(lái)需要增加或調(diào)整業(yè)務(wù)流程時(shí),應(yīng)保證系統(tǒng)所需的改動(dòng)盡量最小。
b)開(kāi)放性和標(biāo)準(zhǔn)化。它是系統(tǒng)建設(shè)的趨勢(shì),本信息共享平臺(tái)應(yīng)具有良好的開(kāi)放性,以便和不同合作伙伴的系統(tǒng)能夠互操作和相連,保證信息共享平臺(tái)具有持久的生命力,滿(mǎn)足將來(lái)系統(tǒng)發(fā)展的要求。
c)可管理性和易維護(hù)性。集成的系統(tǒng)必須降低系統(tǒng)維護(hù)的難度和要求,方便系統(tǒng)的實(shí)施、管理和維護(hù)。如果采用傳統(tǒng)點(diǎn)對(duì)點(diǎn)的系統(tǒng)集成配置,如圖5所示,勢(shì)必造成網(wǎng)絡(luò)負(fù)載過(guò)大,系統(tǒng)的可擴(kuò)展性也不好。因此選擇了基于SOA的基本系統(tǒng)架構(gòu),研究了服務(wù)供應(yīng)鏈上異構(gòu)系統(tǒng)的集成問(wèn)題,如圖6所示。
3 分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)
3.1 基本業(yè)務(wù)描述
上海交通大學(xué)在分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)上擔(dān)任的是零售企業(yè)的任務(wù)。該零售企業(yè)的業(yè)務(wù)描述基于交大課題組承擔(dān)的某外資企業(yè)信息系統(tǒng)建設(shè)項(xiàng)目。該零售企業(yè)總部設(shè)在上海,主要經(jīng)銷(xiāo)各品牌計(jì)算機(jī)以及計(jì)算機(jī)零配件,在沈陽(yáng)、北京、上海、南京、武漢、廣州這六個(gè)城市擁有10家分店,此外還經(jīng)營(yíng)一個(gè)BtoC電子商務(wù)網(wǎng)站。各分店有自己的獨(dú)立庫(kù)存,信息系統(tǒng)包括了銷(xiāo)售管理、庫(kù)存管理、采購(gòu)、產(chǎn)品配送、業(yè)務(wù)統(tǒng)計(jì)分析、客戶(hù)關(guān)系管理、產(chǎn)品信息維護(hù)、人力資源管理等子系統(tǒng)。各個(gè)分店根據(jù)實(shí)際銷(xiāo)售及安全庫(kù)存的需求,向總公司發(fā)送補(bǔ)貨申請(qǐng),這種補(bǔ)貨申請(qǐng)分為兩種類(lèi)型,一類(lèi)是標(biāo)準(zhǔn)產(chǎn)品的補(bǔ)貨申請(qǐng),一類(lèi)是定制產(chǎn)品申請(qǐng)。分店的信息系統(tǒng)與總公司的信息系統(tǒng)相連,由總公司統(tǒng)一向供應(yīng)商(制造商Tsinghua或分銷(xiāo)倉(cāng)儲(chǔ)中心BIT)采購(gòu)并委托物流服務(wù)提供商N(yùn)UAA配送。企業(yè)的BtoC電子商務(wù)網(wǎng)站給客戶(hù)提供瀏覽產(chǎn)品信息、注冊(cè)登錄、購(gòu)買(mǎi)產(chǎn)品、定制產(chǎn)品、查看購(gòu)物車(chē)、下訂單和查詢(xún)訂單狀態(tài)等功能,電子商務(wù)網(wǎng)站后臺(tái)與各分店及總公司的信息系統(tǒng)相連。對(duì)于客戶(hù)下的訂單,如果客戶(hù)收貨地址所屬的分店中有足夠的庫(kù)存,則立即給客戶(hù)發(fā)貨,如果庫(kù)存不足,則將客戶(hù)訂單狀態(tài)設(shè)為待處理。各分店在規(guī)定時(shí)間對(duì)待處理的客戶(hù)訂單進(jìn)行匯總,然后向總公司發(fā)送補(bǔ)貨申請(qǐng)。待總公司根據(jù)補(bǔ)貨申請(qǐng)配送的產(chǎn)品到達(dá)后,分店先進(jìn)行入庫(kù),然后委托物流服務(wù)提供商N(yùn)UAA給客戶(hù)發(fā)貨。
3.2 服務(wù)建模
根據(jù)前面的業(yè)務(wù)描述知道,分布式服務(wù)供應(yīng)鏈上的業(yè)務(wù)流程眾多,限于篇幅,本文僅以自動(dòng)補(bǔ)充庫(kù)存這一業(yè)務(wù)流程的服務(wù)建模過(guò)程加以具體描述。
圖7表示了自動(dòng)補(bǔ)充庫(kù)存業(yè)務(wù)流程的示意圖,當(dāng)庫(kù)存中存貨低于設(shè)定的安全庫(kù)存時(shí),分店ERP的庫(kù)存系統(tǒng)自動(dòng)觸發(fā)一個(gè)補(bǔ)給信號(hào),緊接著一系列業(yè)務(wù)流程和邏輯步驟將觸發(fā)并自動(dòng)執(zhí)行。
a)分店ERP根據(jù)庫(kù)存系統(tǒng)的補(bǔ)給信息調(diào)用產(chǎn)品信息,然后自動(dòng)生成包含分店信息、申請(qǐng)日期、多個(gè)產(chǎn)品名稱(chēng)和補(bǔ)充數(shù)量等項(xiàng)目的補(bǔ)貨申請(qǐng)單,然后補(bǔ)貨申請(qǐng)單被發(fā)送到總部的ERP系統(tǒng)。總部的ERP系統(tǒng)首先分類(lèi)并匯總來(lái)自各分店的補(bǔ)貨申請(qǐng)。
b)查詢(xún)產(chǎn)品信息數(shù)據(jù)庫(kù),獲得各個(gè)產(chǎn)品的以往采購(gòu)價(jià)格和供應(yīng)商。
c)查詢(xún)企業(yè)供應(yīng)商參考數(shù)據(jù)庫(kù),得到供應(yīng)商名單,并根據(jù)指定的標(biāo)準(zhǔn)到供應(yīng)商數(shù)據(jù)庫(kù)進(jìn)行供應(yīng)商選擇。
d)ERP系統(tǒng)根據(jù)分類(lèi)匯總的補(bǔ)貨申請(qǐng)、產(chǎn)品價(jià)格和所選擇的供應(yīng)商信息,自動(dòng)產(chǎn)生一個(gè)或多個(gè)采購(gòu)訂單,并進(jìn)一步將訂單信息發(fā)送給所選擇的供應(yīng)商,同時(shí)訂單中的財(cái)務(wù)信息也被供應(yīng)商的財(cái)務(wù)系統(tǒng)接受。
根據(jù)這一業(yè)務(wù)流程,可以分解出如圖8所示的各類(lèi)服務(wù):產(chǎn)品信息、供應(yīng)商信息、庫(kù)存補(bǔ)給、單據(jù)匯總、訂購(gòu)合約關(guān)系、訂購(gòu)?fù)ㄖ⑿庞脤徍恕l(fā)票服務(wù)等,這些服務(wù)通過(guò)適配器與企業(yè)服務(wù)總線(xiàn)相連接。圖8中只給出了一個(gè)供應(yīng)商,實(shí)際上供應(yīng)商可以有多個(gè)。在基于SOA/ESB的企業(yè)信息系統(tǒng)中,當(dāng)選擇不同的供應(yīng)商時(shí),企業(yè)無(wú)須重寫(xiě)或修改自己的采購(gòu)服務(wù),只需要進(jìn)行該服務(wù)的管理和重新配置。所以,這種方式使得企業(yè)能夠?qū)I(yè)務(wù)流程中的變化作出敏捷的反應(yīng)。
3.3 服務(wù)開(kāi)發(fā)
基于ESB的分布式服務(wù)供應(yīng)鏈中的服務(wù)提供者通過(guò)接口向服務(wù)請(qǐng)求者公布所有服務(wù),這些接口用WSDL描述。一旦服務(wù)請(qǐng)求者擁有WSDL文件,他就知曉接口的細(xì)節(jié)。服務(wù)請(qǐng)求者基于簡(jiǎn)單對(duì)象訪(fǎng)問(wèn)協(xié)議(SOAP)實(shí)現(xiàn)與遠(yuǎn)程服務(wù)之間的通信。標(biāo)準(zhǔn)產(chǎn)品訂單服務(wù)WSDL文件的部分內(nèi)容如下:
〈?xml version=\"1.0\" encoding=\"UTF-8\" ?〉
〈definitionsname=\"StandardOrderService\"
targetNamespace=\"http://www.ericlabs.com/ \"
xmlns=\"http://schemas.xmlsoap.org/wsdl/\"
xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"
xmlns:tns=\"http://www.ericlabs.com\"
xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\"〉
〈types〉
〈xsd:schema targetNamespace=\" http://www.ericlabs.com \"
xmlns=\"http://www.w3.org/1999/XMLSchema/\"〉
〈xsd:complexType name=\"Vector\"〉
〈xsd:element name=\"ProductNo\" type=\"xsd:String\" /〉
〈xsd:element name=\"Amount\" type=\"xsd:int\" /〉
〈/xsd:complexType〉
〈/xsd:schema〉
〈/types〉
〈message name=\"StarndardOrder\"〉
〈part name=\"orderNo\" type=\"xsd:String \"〉
〈part name=\"customerName\" type=\"xsd:String \"〉 …
〈part name=\"orderdetails\" type=\"xsd:Vector\"〉
〈/message〉
〈message name=\"ConfirmOrderStatus\"〉
〈part name=\"status\" type=\"xsd:String\"〉
〈/message〉
〈portType name=\"StandardOrderService_port\"〉
〈operation name=\"getConfirmation\"〉
〈Input message=\" StarndardOrder \"/〉
〈Output message=\"ConfirmOrderStatus\"/〉
〈/operation〉
〈/portType〉…
〈/definitions〉
WSDL文件的根元素是〈definitions〉,在其中聲明了名稱(chēng)空間WSDL、SOAP、XSD和TNS;然后利用〈portType〉元素定義了服務(wù)的名稱(chēng)StandardOrderService。在這個(gè)服務(wù)內(nèi)通過(guò)〈operation〉元素來(lái)定義了一個(gè)接口,名稱(chēng)為getConfirmation。接口中調(diào)用了用〈message〉元素定義的輸入?yún)?shù)StarndardOrder和輸出參數(shù)ConfirmOrderStatus。其中消息StarndardOrder定義了訂單編號(hào)、客戶(hù)名稱(chēng)、訂單日期、交付方式、訂單明細(xì)等,〈Binding〉元素將服務(wù)的具體傳輸協(xié)議綁定為SOAP。
這里基于標(biāo)準(zhǔn)產(chǎn)品訂單服務(wù)描述SOAP的一個(gè)基本通信過(guò)程。首先,SOAP 客戶(hù)機(jī)產(chǎn)生 SOAP 請(qǐng)求并通過(guò) HTTP 發(fā)送到SOAP服務(wù)器。消息內(nèi)容如下:
〈SOAP-ENV:Envelope
xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" 〉
〈SOAP-ENV:Body〉
〈m: getConfirmation xmlns:m=\"urn:StandardOrderService\"〉
〈orderNo〉200350〈/orderNo〉
〈customerName〉Cay Horstmann〈/ customerName〉
…
〈orderdetails〉
〈ProductNo〉 Lenovo ThinkPad T61 6464〈/ProductNo〉
〈Amount〉2〈/Amount〉
〈ProductNo〉 Lenovo ThinkPad T61 8897〈/ProductNo〉
〈Amount〉1〈/Amount〉
〈/orderdetails〉
〈/m: getConfirmation〉
〈/SOAP-ENV:Body〉
〈/SOAP-ENV:Envelope〉
SOAP服務(wù)器中的服務(wù)管理器負(fù)責(zé)根據(jù)SOAP請(qǐng)求讀取SOAP客戶(hù)機(jī)想調(diào)用的 SOAP服務(wù)名稱(chēng)StandardOrderService。服務(wù)管理器首先檢查所需的服務(wù)實(shí)際上是否駐留于這臺(tái) SOAP 服務(wù)器上,然后查詢(xún)被部署服務(wù)的列表(SOAP 服務(wù)器所托管的所有服務(wù)的列表)。若存在,服務(wù)管理器將把 SOAP 請(qǐng)求傳送給 XML 轉(zhuǎn)換程序;XML 轉(zhuǎn)換程序就負(fù)責(zé)將 SOAP 請(qǐng)求的 XML 結(jié)構(gòu)轉(zhuǎn)換成程序員用來(lái)實(shí)現(xiàn)實(shí)際服務(wù)的編程語(yǔ)言(如Java 編程語(yǔ)言)的結(jié)構(gòu);最后,SOAP服務(wù)器負(fù)責(zé)將來(lái)自實(shí)際服務(wù)的響應(yīng)轉(zhuǎn)換回 SOAP 響應(yīng)的 XML 結(jié)構(gòu)SOAP 響應(yīng)如下:
〈SOAP-ENV:Envelope
xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"〉
〈SOAP-ENV:Body〉
〈m: getConfirmationResponse xmlns:m=\"urn: StandardOrderService\"〉
〈status〉Your order has been confirmed!〈/status〉
〈/m: getConfirmationResponse〉
〈/SOAP-ENV:Body〉
〈/SOAP-ENV:Envelope〉
3.4 服務(wù)集成
當(dāng)服務(wù)開(kāi)發(fā)完成后,下一步是設(shè)計(jì)和配置服務(wù)總線(xiàn),集成分布式服務(wù)供應(yīng)鏈上的各種服務(wù)。本項(xiàng)目使用的是IBM基于服務(wù)總線(xiàn)的產(chǎn)品——Websphere 6.0中的SIBus(service integration bus)進(jìn)行服務(wù)集成。SJTU和NUAA采用J2EE框架進(jìn)行各自系統(tǒng)的開(kāi)發(fā),BIT的系統(tǒng)基于.NET平臺(tái),而Tsinghua的制造商信息系統(tǒng)是在Unix平臺(tái)下采用C語(yǔ)言編程實(shí)現(xiàn)的。所以需要集成多個(gè)異構(gòu)系統(tǒng)。首先創(chuàng)建了服務(wù)數(shù)據(jù)對(duì)象庫(kù)(service data objects,SDO),該庫(kù)中登記注冊(cè)了分布式服務(wù)供應(yīng)鏈上的各種服務(wù),包括服務(wù)合約和服務(wù)接口的定義。然后創(chuàng)建SIBus資源適配器(resource adapter),其目的在于通過(guò)其標(biāo)準(zhǔn)接口,對(duì)分布式服務(wù)供應(yīng)鏈上的各種異構(gòu)資源進(jìn)行調(diào)用。再次,創(chuàng)建目標(biāo)隊(duì)列的隊(duì)列管理器名、連接名稱(chēng)、端口號(hào),各參與方的本地隊(duì)列、遠(yuǎn)程隊(duì)列、傳輸隊(duì)列、發(fā)送通道、接收通道。例如SJTU服務(wù)器的隊(duì)列管理器名為QM_SJTU,連接名稱(chēng)是ericlabs.sjtu.edu.cn。
當(dāng)服務(wù)請(qǐng)求者發(fā)出服務(wù)請(qǐng)求后,服務(wù)總線(xiàn)的端點(diǎn)監(jiān)聽(tīng)器接收服務(wù)請(qǐng)求,資源適配器將服務(wù)請(qǐng)求信息映射成服務(wù)提供者能夠理解的消息結(jié)構(gòu);然后放到服務(wù)提供者的目標(biāo)隊(duì)列,調(diào)用具體的服務(wù)實(shí)現(xiàn),等接收到服務(wù)響應(yīng)之后,資源適配器將響應(yīng)消息再次轉(zhuǎn)換成服務(wù)請(qǐng)求者可以接收的消息格式,并通過(guò)服務(wù)總線(xiàn)傳輸給服務(wù)請(qǐng)求者。分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)可從http://ericlabs.sjtu.edu.cn:8088/EriclabsWeb/app訪(fǎng)問(wèn)。圖9顯示了平臺(tái)的一個(gè)運(yùn)行界面。
4 結(jié)束語(yǔ)
本文首先分析了SOA理論體系,介紹了服務(wù)及服務(wù)的組成,提出了基于企業(yè)服務(wù)總線(xiàn)的分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)的體系結(jié)構(gòu),并探討了該信息共享平臺(tái)建設(shè)的生命周期。在此基礎(chǔ)上,本文以筆者所參與的企業(yè)信息系統(tǒng)設(shè)計(jì)項(xiàng)目與IBM高校合作項(xiàng)目為例子,研究了分布式服務(wù)供應(yīng)鏈信息共享平臺(tái)的服務(wù)建模和實(shí)施的過(guò)程。可以展望,這種面向服務(wù)的設(shè)計(jì)思想在企業(yè)軟件架構(gòu)領(lǐng)域的地位將會(huì)越來(lái)越重要。本項(xiàng)目下一步的研究主要有信息共享平臺(tái)上復(fù)雜服務(wù)活動(dòng)的建模、涉及服務(wù)評(píng)價(jià)、SLA服務(wù)水平協(xié)議及QoS服務(wù)質(zhì)量的服務(wù)管理,信息共享平臺(tái)的安全性管理等。本文的研究結(jié)果為今后的工作建立了良好的基礎(chǔ),對(duì)企業(yè)及其服務(wù)伙伴建立信息共享平臺(tái)具有一定的指導(dǎo)作用。
參考文獻(xiàn):
[1]
CZARNECKI K. Overview of generative software development [C]//Proc of Unconventional Programming Paradigms Conference. Berlin:Springer, 2005: 326-341.
[2]SCHULTE R W, NATIS Y V. Advanced SOA for advanced enterprise projects, Report ID: 493863, Gartner[EB/OL].(2006-07-13). http://www.gartner.com/DisplayDocument?ref=g_searchid=493863subref=advsearch.
[3]HUHNS M N, SINGH M P. Service-oriented computing: key concepts and principles [J]. IEEE Internet Computing, 2005, 9(1): 75-81.
[4]KEEN M, ADINOLFI O, HEMMINGS S, et al. Patterns: SOA with an enterprise service bus in Websphere application server v6 [EB/OL].(2005-06-06) [2009-03-01]. http://www.redbooks.ibm.com/abstracts/sg246494.html.
[5]OASIS. Reference model for service oriented architecture 1.0, [EB/OL].(2008-04-23) [2009-03-01]. http://www.oasisopen.org/committees/tc_home.php?wg_abbrev=soa-rm.
(上接第572頁(yè))
[5]郭建文,于德介,曾威,等. ASP模式的遠(yuǎn)程結(jié)構(gòu)健康監(jiān)測(cè)研究[J].計(jì)算機(jī)工程,2009,35(3):251-253.
[6]MASRI S F, SHENG L H, CAFFREY J P, et al. Application of a Web-enabled real-time structural health monitoring system for civil infrastructure systems [J]. Smart Materials and Structures, 2004, 13(6): 1269-1283.
[7]FOSTER I, KESSELMAN C. The grid 2: blueprint for a new computing infrastructure [M]. San Francisco: Morgan Kaufmann, 2003.
[8]張慶奎, 趙良才,方喜峰, 等. 基于數(shù)據(jù)挖掘和數(shù)據(jù)網(wǎng)格技術(shù)的艦船全壽命信息共享和發(fā)現(xiàn)研究[J]. 中國(guó)機(jī)械工程, 2006, 17(24): 2586-2590.
[9]曹守啟,陳云,韓彥嶺,等.基于網(wǎng)格技術(shù)的遠(yuǎn)程故障診斷系統(tǒng)研究[J].計(jì)算機(jī)集成制造系統(tǒng),2004,10(12):1578-1582.
[10]REN X, ONG M, ALLAN G, et al. Service-oriented architecture on the grid for integrated fault diagnostics [J]. Concurrency and Computation: Practice and Experience, 2007, 19(2): 223-234.
[11]BORJA S. The Globus Toolkit 4 programmer’s tutorial [EB/OL]. (2006-03-29) [2009-06-17]. http://gdp.globus.org/gt4-tutorial/.
[12]DAVID M, ANUPRIYA A, MARK B, et al. OWL-S 1.2 Releases [EB/OL]. (2006-03-01) [2009-06-17]. http://www.daml.org/services/owl-s/1.2.
[13]郭建文,于德介,劉堅(jiān),等.網(wǎng)格環(huán)境下基于本體的設(shè)備故障診斷服務(wù)發(fā)現(xiàn)方法[J].中國(guó)機(jī)械工程,2009,20(20):2440-2447.
[14]張瑩. 基于網(wǎng)格的橋梁遠(yuǎn)程診斷與評(píng)估研究[D].長(zhǎng)沙:湖南大學(xué),2008.