, ,
(北京航空航天大學(xué) 機(jī)械工程及自動(dòng)化學(xué)院,北京 100191)
隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的高速發(fā)展,航空裝備保障企業(yè)為提高企業(yè)事務(wù)處理效率,大力推進(jìn)企業(yè)信息化。航空裝備保障企業(yè)的各個(gè)部門根據(jù)自身的情況與需要分別建立了信息和業(yè)務(wù)系統(tǒng),如飛機(jī)保障資源管理系統(tǒng)、敏捷平臺(tái)和飛機(jī)外場(chǎng)服務(wù)綜合信息系統(tǒng)等。這些業(yè)務(wù)系統(tǒng)往往采用不同的技術(shù)標(biāo)準(zhǔn)與框架、數(shù)據(jù)結(jié)構(gòu)、軟硬件平臺(tái)、交互模式和軟件開(kāi)發(fā)商,其中部分系統(tǒng)已經(jīng)部署多時(shí),這些跨平臺(tái)、跨部門的異構(gòu)系統(tǒng)造成了信息壁壘[1-2]。為在充分利用現(xiàn)有部門信息系統(tǒng)的基礎(chǔ)上,進(jìn)一步推進(jìn)飛機(jī)綜合保障部門信息化水平,迫切地需要研究如何對(duì)這些分散、孤立的部門信息系統(tǒng)的業(yè)務(wù)和數(shù)據(jù)進(jìn)行集成。
行業(yè)中解決異構(gòu)系統(tǒng)集成問(wèn)題的主流方法是企業(yè)應(yīng)用集成(Enterprise Application Integration,EAI),其經(jīng)過(guò)多年的探索和發(fā)展,具體方法有很多種,現(xiàn)今在IT界內(nèi)應(yīng)用較為廣泛的是面向服務(wù)的架構(gòu)(Service-Oriented Architecture,SOA)[3-4],在本文中便是以“服務(wù)”為中心,把飛機(jī)保障資源管理系統(tǒng)、敏捷平臺(tái)和飛機(jī)外場(chǎng)服務(wù)綜合信息系統(tǒng)提供的功能發(fā)布為“服務(wù)”,并將飛機(jī)保障信息系統(tǒng)構(gòu)建成為這些服務(wù)的集合,提供一個(gè)靈活、低成本、松耦合與可擴(kuò)展的基礎(chǔ)服務(wù)集成平臺(tái),實(shí)現(xiàn)飛機(jī)保障信息的數(shù)據(jù)集成和應(yīng)用集成。盡管基于SOA的開(kāi)發(fā)方法不是最新概念,但一方面它經(jīng)過(guò)多年的發(fā)展已經(jīng)很成熟,較為穩(wěn)定,能夠很好地適應(yīng)航空領(lǐng)域的信息化特點(diǎn)[5];另一方面它采用SOA來(lái)開(kāi)發(fā)和部署“服務(wù)”,能夠充分利用現(xiàn)有的信息系統(tǒng),降低新系統(tǒng)的開(kāi)發(fā)成本,從而打破信息壁壘,進(jìn)一步推進(jìn)航空企業(yè)信息化的發(fā)展[6]。
Web Service技術(shù)不僅是SOA模式的主要實(shí)現(xiàn)技術(shù),而且是建立在獨(dú)立平臺(tái)的協(xié)議和開(kāi)放標(biāo)準(zhǔn)基礎(chǔ)上的企業(yè)應(yīng)用集成技術(shù),它對(duì)操作系統(tǒng)、開(kāi)發(fā)框架、服務(wù)器與數(shù)據(jù)庫(kù)等沒(méi)有任何限制,可動(dòng)態(tài)查詢、發(fā)現(xiàn)并調(diào)用所需的服務(wù)[7-8]。航空領(lǐng)域因其特殊性,具有封閉性,與互聯(lián)網(wǎng)領(lǐng)域相比技術(shù)更新速度較慢,因此,需要相對(duì)成熟的技術(shù)。
為此,本文從異構(gòu)系統(tǒng)集成的角度出發(fā),通過(guò)分析飛機(jī)保障信息系統(tǒng)集成需求和特征,基于SOA和Web Service開(kāi)發(fā)技術(shù)建立異構(gòu)系統(tǒng)集成模型,設(shè)計(jì)集成體系架構(gòu)的3個(gè)模塊(服務(wù)網(wǎng)提供者、服務(wù)注冊(cè)代理與服務(wù)請(qǐng)求者),并按服務(wù)描述、服務(wù)實(shí)現(xiàn)、服務(wù)數(shù)據(jù)封裝、服務(wù)發(fā)布、服務(wù)綁定與服務(wù)調(diào)用的順序介紹系統(tǒng)集成的具體實(shí)現(xiàn)過(guò)程。
飛機(jī)保障信息系統(tǒng)是面向某飛機(jī)設(shè)計(jì)研究所綜合保障部門的企業(yè)信息化系統(tǒng),它通過(guò)軟件平臺(tái)實(shí)現(xiàn)飛機(jī)保障各項(xiàng)工作技術(shù)狀態(tài)管理,支持各項(xiàng)飛機(jī)保障工作技術(shù)狀態(tài)信息的共享與分發(fā),可以與所內(nèi)外其他主要數(shù)字化平臺(tái)實(shí)現(xiàn)互通互聯(lián)。從事務(wù)角度看,飛機(jī)保障信息系統(tǒng)集成是將各科室的業(yè)務(wù)系統(tǒng)集成到一個(gè)統(tǒng)一的信息系統(tǒng)中,實(shí)現(xiàn)各科室業(yè)務(wù)和數(shù)據(jù)共享,對(duì)飛機(jī)綜合保障部門進(jìn)行全面的閉環(huán)管理;從技術(shù)角度看,它是在不做出過(guò)多修改的情況下將不同已有的應(yīng)用程序和業(yè)務(wù)數(shù)據(jù)集成到一起的過(guò)程,從而最終實(shí)現(xiàn)業(yè)務(wù)流程的集成和數(shù)據(jù)共享。系統(tǒng)集成需求如圖1所示。

圖1 飛機(jī)保障信息系統(tǒng)集成需求
本文根據(jù)對(duì)某飛機(jī)設(shè)計(jì)研究所綜合保障部門需求的調(diào)研結(jié)果,總結(jié)了以下飛機(jī)保障信息系統(tǒng)集成存在的難點(diǎn):
1)跨框架與跨平臺(tái):所需要集成的系統(tǒng)往往是采用不同的框架和技術(shù),由不同的軟件開(kāi)發(fā)商開(kāi)發(fā),因此,如何將這些異構(gòu)平臺(tái)集成到本系統(tǒng)中是一大難點(diǎn)。
2)高效性與低成本:如何使被集成的系統(tǒng)盡量少被修改,尤其是針對(duì)正在運(yùn)行的系統(tǒng),應(yīng)盡量保證其功能完整性,并降低系統(tǒng)集成成本。
3)可擴(kuò)展性與靈活性:如何保證未來(lái)開(kāi)發(fā)的系統(tǒng)能較為簡(jiǎn)單地集成到本系統(tǒng)中,并使被集成的系統(tǒng)與本系統(tǒng)易于修改。
飛機(jī)保障信息系統(tǒng)集成利用SOA組件模型,將飛機(jī)保障資源管理系統(tǒng)、敏捷平臺(tái)和飛機(jī)外場(chǎng)服務(wù)綜合信息系統(tǒng)中所需集成的功能模塊發(fā)布成“服務(wù)”,然后采用服務(wù)之間定義的接口和契約來(lái)實(shí)現(xiàn)系統(tǒng)集成。接口一般采用開(kāi)放標(biāo)準(zhǔn)和協(xié)議,利用中立的方式進(jìn)行定義,因此,它獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)與編程語(yǔ)言[9]。飛機(jī)保障信息系統(tǒng)集成采用SOA模型,便于充分利用現(xiàn)有資源,降低整合和管理的復(fù)雜性,提高靈活性和重用性。本文在采用SOA框架的同時(shí),以Web Service作為實(shí)現(xiàn)飛機(jī)保障信息系統(tǒng)中“服務(wù)”的最主要手段,其本質(zhì)是通過(guò)傳輸固定格式的XML來(lái)解決跨平臺(tái)調(diào)用問(wèn)題[10]。以飛機(jī)試飛管理系統(tǒng)的試飛大綱管理功能為例,本文利用Web Service技術(shù)調(diào)用飛機(jī)試飛管理系統(tǒng)發(fā)布的試飛大綱管理“服務(wù)”,其原理如圖2所示。

圖2 Web Service調(diào)用原理
根據(jù)Web Service調(diào)用原理,本文建立基于SOA和Web Service設(shè)計(jì)的系統(tǒng)集成模型,如圖3所示。此模型基于J2EE架構(gòu)與Web服務(wù)器,可以解決飛機(jī)保障信息系統(tǒng)集成存在的高效性與低成本、可擴(kuò)展性與靈活性等難點(diǎn)。模型總體分為服務(wù)提供者、服務(wù)注冊(cè)代理與服務(wù)請(qǐng)求者3個(gè)部分。
1)服務(wù)提供者是根據(jù)集成業(yè)務(wù)需求,把飛機(jī)保障資源管理系統(tǒng)、飛機(jī)試飛管理系統(tǒng)、飛機(jī)外場(chǎng)服務(wù)綜合信息系統(tǒng)與敏捷平臺(tái)等所內(nèi)外系統(tǒng)所提供的“服務(wù)”用XSD文件進(jìn)行定義,并生成Web Service描述語(yǔ)言(Web Service Description Language,WSDL)文件,然后采用基于Spring-WS的contract-first模式編寫Web服務(wù),最后把服務(wù)生成的WSDL文件發(fā)布到統(tǒng)一描述、發(fā)現(xiàn)和集成(Universal Desotiption,Discovery and Intergation,UDDI)注冊(cè)中心。
2)服務(wù)注冊(cè)代理是一個(gè)可被搜索的服務(wù)描述注冊(cè)中心,服務(wù)提供者可以在此發(fā)布它們的服務(wù)描述文件,服務(wù)注冊(cè)代理對(duì)其進(jìn)行分類,并提供搜索服務(wù)。
3)服務(wù)請(qǐng)求者是狹義范圍的飛機(jī)保障信息系統(tǒng),首先它在“服務(wù)注冊(cè)代理”中查找所需“服務(wù)”,然后根據(jù)查找結(jié)果,與服務(wù)提供者實(shí)現(xiàn)綁定,最后通過(guò)簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol,SOAP)協(xié)議發(fā)送或接收可擴(kuò)展標(biāo)記語(yǔ)言(eXtensible Markup Language,XML)消息實(shí)現(xiàn)“服務(wù)”調(diào)用。

圖3 飛機(jī)保障信息系統(tǒng)集成模型
本文在構(gòu)建模型和使用Web Service的過(guò)程中主要采用了4種標(biāo)準(zhǔn)和技術(shù):XML,SOAP,WSDL,UDDI[11],它們都是開(kāi)放標(biāo)準(zhǔn)和協(xié)議,可解決飛機(jī)保障信息系統(tǒng)集成存在的“跨框架與跨平臺(tái)”難點(diǎn)。
1)XML是Web服務(wù)中的數(shù)據(jù)傳輸基本格式[12-13],它使用Unicode編碼,采用自描述的數(shù)據(jù)結(jié)構(gòu),能夠以簡(jiǎn)單的文本文檔格式儲(chǔ)存、傳輸、讀取數(shù)據(jù)。本文通過(guò)XML傳輸集成數(shù)據(jù)。
2)SOAP是用來(lái)交換信息的一種協(xié)議[14],它是分布式系統(tǒng)之間交換信息的輕量級(jí)方法,同時(shí)也是基于XML和HTTP的一種協(xié)議。本文利用SOAP進(jìn)行消息傳遞。
3)WSDL是由IBM和微軟于2000年提出的一種用以描述Web Service的功能特征的語(yǔ)言[15]。本文利用WSDL描述服務(wù)語(yǔ)義和接口等信息。
4)UDDI本質(zhì)上是一種目錄服務(wù),是一種基于Web的分布式Web服務(wù)信息注冊(cè)中心的實(shí)現(xiàn)規(guī)范。本文利用UDDI對(duì)服務(wù)進(jìn)行注冊(cè)和檢索。
本文從“服務(wù)提供者”“服務(wù)注冊(cè)代理”“服務(wù)請(qǐng)求者”3個(gè)方面介紹飛機(jī)保障信息系統(tǒng)集成功能實(shí)現(xiàn)。以集成飛機(jī)保障資源管理系統(tǒng)的過(guò)程為例,詳細(xì)敘述如何利用“發(fā)布服務(wù)”的思想實(shí)現(xiàn)異構(gòu)系統(tǒng)集成。其中飛機(jī)保障資源管理系統(tǒng)是由天健志行軟件公司利用bootstrap3等框架開(kāi)發(fā)的,采用oracle數(shù)據(jù)庫(kù),與本文系統(tǒng)采用的框架、數(shù)據(jù)庫(kù)等完全不同。
“服務(wù)提供者”功能實(shí)現(xiàn)是基于Web Service將飛機(jī)保障資源管理系統(tǒng)、敏捷平臺(tái)等系統(tǒng)向飛機(jī)保障信息系統(tǒng)提供服務(wù),包括服務(wù)描述、服務(wù)實(shí)現(xiàn)與服務(wù)數(shù)據(jù)封裝。
2.1.1 服務(wù)描述
服務(wù)描述是對(duì)飛機(jī)保障資源管理系統(tǒng)、敏捷平臺(tái)和飛機(jī)外場(chǎng)服務(wù)綜合信息系統(tǒng)等信息系統(tǒng)所提供服務(wù)的接口和實(shí)現(xiàn)細(xì)節(jié)的描述,主要包括數(shù)據(jù)結(jié)構(gòu)、綁定信息、操作、分類、網(wǎng)絡(luò)位置和其他的元數(shù)據(jù)信息,其中分類和其他的元數(shù)據(jù)用來(lái)實(shí)現(xiàn)飛機(jī)保障信息系統(tǒng)的服務(wù)檢索和服務(wù)調(diào)用。本文利用WSDL實(shí)現(xiàn)服務(wù)描述。WSDL是基于XML語(yǔ)法描述服務(wù),具有協(xié)議規(guī)范、普遍性、易讀性等特點(diǎn),圖 4是WSDL規(guī)范結(jié)構(gòu)圖。但由于WSDL語(yǔ)法較為復(fù)雜,手工編寫難度很大,因此本文采用先編寫XML Schema定義,后將其動(dòng)態(tài)轉(zhuǎn)換為WSDL的方法來(lái)實(shí)現(xiàn)服務(wù)描述。

圖4 WSDL規(guī)范結(jié)構(gòu)圖
XML Schema定義(XML Schema Definition,XSD)也稱XML Schema語(yǔ)言,用于定義可出現(xiàn)于XML文檔中的元素和屬性、其子元素的次序和數(shù)目、定義元素的數(shù)據(jù)類型和默認(rèn)值等。它類似于DTD,定義了XML文檔的合法構(gòu)建模塊。
本文以集成飛機(jī)保障資源管理系統(tǒng)為例介紹“服務(wù)描述”過(guò)程。首先利用XSD詳細(xì)定義了飛機(jī)保障資源管理系統(tǒng)等信息系統(tǒng)提供的服務(wù)所傳輸XML的名稱、命名空間、子元素、數(shù)據(jù)類型、數(shù)據(jù)默認(rèn)值以及固定值等信息;然后在配置文件中對(duì)XSD進(jìn)行配置,如在飛機(jī)保障資源管理系統(tǒng)中WEB-INF/dorado-home/datasources.xml文件進(jìn)行配置,在此文件當(dāng)中添加配置信息,包括XSD的地址、命名空間與WSDL的ID和地址等信息,在配置XSD后,啟動(dòng)服務(wù),請(qǐng)求如下地址:https://servername:
2.1.2 服務(wù)實(shí)現(xiàn)
服務(wù)實(shí)現(xiàn)是根據(jù)服務(wù)描述(即XSD與WSDL文件)和飛機(jī)保障信息系統(tǒng)集成需求編寫服務(wù)程序。因?yàn)镾pring Web Services是contract-first模式即契約優(yōu)先模式,它要求先確定服務(wù)描述再進(jìn)行代碼開(kāi)發(fā),從而可以實(shí)現(xiàn)服務(wù)描述和實(shí)現(xiàn)之間的松散耦合,并確保Web服務(wù)的語(yǔ)言無(wú)關(guān)性,所以本文采用Spring-WS框架實(shí)現(xiàn)服務(wù)。本文中“服務(wù)實(shí)現(xiàn)”需要定義2個(gè)Java程序,一個(gè)是對(duì)服務(wù)傳輸數(shù)據(jù)對(duì)象化的處理數(shù)據(jù)訪問(wèn)的類,另一個(gè)是處理業(yè)務(wù)邏輯的類。
處理數(shù)據(jù)訪問(wèn)的類本質(zhì)上是JavaBean與POJO,本系統(tǒng)在此采用了Object/XML映射技術(shù),實(shí)現(xiàn)了Java對(duì)象與XML的相互轉(zhuǎn)換。因?yàn)镴AXB(Java Architecture for XML Binding)是一個(gè)業(yè)界的標(biāo)準(zhǔn),所以本文采用JAXB2,實(shí)現(xiàn)將服務(wù)傳輸?shù)腦ML文檔反向生成Java對(duì)象樹(shù)。為了實(shí)現(xiàn)Object/XML轉(zhuǎn)換,需要在處理數(shù)據(jù)訪問(wèn)的類名前添加annotation注解,在annotation注解中標(biāo)明服務(wù)所采用的namespace、xmlRoot與相關(guān)屬性,而這些屬性都需要在“服務(wù)描述”中聲明,例如在飛機(jī)保障資源管理系統(tǒng)中“服務(wù)實(shí)現(xiàn)”處理數(shù)據(jù)訪問(wèn)的類結(jié)構(gòu)如下所示:
@XmlRootElement(name=“SupportRequest”,namespace=“http://www.bstek.com/ws”)//annotation,規(guī)定命名空間
@XmlAccessorType(XmlAccessType.FIELD)
//annotation注解
public class SupportRequest {}
注釋@XmlRootElement()、@XmlAccessorType()由JAXB2提供,XmlRootElement是用于定義SupportRequest類在序列化成XML之后的XmlRoot及namespace值,這兩個(gè)值來(lái)自于XSD文件;Xml AccessorType用于定義這個(gè)類中屬性在序列化成xml之后子節(jié)點(diǎn)名及通過(guò)什么樣方式訪問(wèn)這些屬性值,這里定義成XmlAccessType.FIELD,表示直接采用屬性名方式。
處理業(yè)務(wù)邏輯的類是用于接受飛機(jī)保障信息系統(tǒng)請(qǐng)求的類,類中處理具體業(yè)務(wù)邏輯的方法以飛機(jī)保障信息系統(tǒng)的輸入信息對(duì)象為入?yún)?并且返回一個(gè)服務(wù)輸出信息對(duì)象,例如在飛機(jī)保障資源管理系統(tǒng)中“服務(wù)實(shí)現(xiàn)”處理業(yè)務(wù)邏輯的類結(jié)構(gòu)如下所示:
@Endpoint
public class SupportResourceEndpoint{
@Resource
private TechnicaldocDao technicaldocDao;
@PayloadRoot(localPart="SupportResourceRequest",namespace="http://www.bstek.com/ws")//annotation,規(guī)定//命名空間
public @ResponsePayload SupportResponse getSup(@Request Payload SupporRequest request) throws Exception{
…//處理業(yè)務(wù)邏輯
return response;//返回調(diào)用結(jié)果
}
這個(gè)類采用了3類annotation,具體如下:
1)@Endpoint標(biāo)明本文將這個(gè)類發(fā)布成一個(gè)Endpoint服務(wù)類,它是Spring-WS的特殊注解,表明這個(gè)類是Web Service的服務(wù)端點(diǎn)。而@Resource注解被用來(lái)激活一個(gè)命名資源(TechnicaldocDao)的依賴注入,擁有與@Resource注解所提供“TechnicaldocDao”相匹配的Spring管理對(duì)象會(huì)被注入。
2)具體處理業(yè)務(wù)邏輯的getSup()方法上面的注解@PayloadRoot用于標(biāo)明此方法可以接收的XML信息,這里需要定義的是XML的namespace,同時(shí)XML的ROOT為SupportRequest的信息。
3)@ResponsePayload表示getSup()方法的返回值將作為響應(yīng)的負(fù)載返回到Web Service調(diào)用客戶端。該方法中參數(shù)前的注釋@RequestPayload表示SupportRequest值需要從“飛機(jī)保障信息系統(tǒng)”請(qǐng)求的SOAP消息的Body中解析出來(lái),解析后的Body部分的XML要反序列化成為需要的SupportRequest對(duì)象并作為參數(shù),這里也采用了JAXB將負(fù)載的XML消息直接轉(zhuǎn)換成服務(wù)輸出信息的Java對(duì)象。
編寫相關(guān)Javabean與Endpoint后,在飛機(jī)保障資源管理系統(tǒng)的配置文件中對(duì)2類服務(wù)實(shí)現(xiàn)類進(jìn)行配置,至此,一個(gè)完整的基于Spring-WS的Web Service的服務(wù)實(shí)現(xiàn)編寫與部署即全部完成。
2.1.3 服務(wù)數(shù)據(jù)封裝
服務(wù)數(shù)據(jù)封裝是把服務(wù)業(yè)務(wù)數(shù)據(jù)映射于某個(gè)封裝協(xié)議的凈荷中,并填充對(duì)應(yīng)協(xié)議的包頭,然后形成封裝協(xié)議的服務(wù)數(shù)據(jù)包,最終完成速率適配。而SOAP是基于XML和HTTP的簡(jiǎn)單、輕量級(jí)、擴(kuò)展性很好的消息傳輸協(xié)議,它獨(dú)立于語(yǔ)言、平臺(tái)與底層傳輸機(jī)制,非常適合應(yīng)用于分散的環(huán)境中,以點(diǎn)對(duì)點(diǎn)的方式進(jìn)行交換結(jié)構(gòu)化和類型化信息。因此,本文采用SOAP協(xié)議進(jìn)行服務(wù)數(shù)據(jù)封裝。
本文中的服務(wù)數(shù)據(jù)封裝以“SOAP消息”為通信的基本單位,一條SOAP消息便是一個(gè)普通的XML文檔,SOAP Envelope是SOAP消息結(jié)構(gòu)的主要容器,而SOAP Envelope里面包含一個(gè)可選的SOAP Header和一個(gè)必須的SOAP Body。本文利用Java提供的Java XML Pack實(shí)現(xiàn)SOAP協(xié)議,來(lái)創(chuàng)建、使用、發(fā)送和接收XML消息,具體信息可查看JAXP的API。
服務(wù)注冊(cè)代理是UDDI注冊(cè)中心,它是用來(lái)描述、發(fā)現(xiàn)并集成Web服務(wù)的一系列技術(shù)規(guī)范[16],本文借助UDDI實(shí)現(xiàn)Web服務(wù)的發(fā)布與搜索,從而大幅降低了飛機(jī)保障信息系統(tǒng)發(fā)布和尋找服務(wù)的成本,提高了企業(yè)運(yùn)營(yíng)效率。UDDI注冊(cè)中心分為公共UDDI注冊(cè)中心和私有UDDI注冊(cè)中心,由于本文的研究背景是面向飛機(jī)保障信息領(lǐng)域,因此采用私有UDDI注冊(cè)中心。其中UDDI注冊(cè)中心存儲(chǔ)的信息以XML形式表示。
發(fā)布服務(wù)是將“服務(wù)描述”即WSDL文件映射到UDDI,WSDL中的服務(wù)接口是服務(wù)可重用的抽象定義,而且要在UDDI注冊(cè)中心作為
“服務(wù)請(qǐng)求者”是飛機(jī)保障信息系統(tǒng)調(diào)用飛機(jī)保障資源管理系統(tǒng)、敏捷平臺(tái)和飛機(jī)外場(chǎng)服務(wù)綜合信息系統(tǒng)等所提供的服務(wù)的過(guò)程,包括服務(wù)綁定與服務(wù)調(diào)用。
2.3.1 服務(wù)綁定
當(dāng)飛機(jī)保障信息系統(tǒng)通過(guò)查詢服務(wù)注冊(cè)代理,得到所需服務(wù)的“服務(wù)描述”文件即WSDL文件后,通過(guò)WSDL定義的Web服務(wù)端點(diǎn),將消息和操作信息綁定到某個(gè)具體的網(wǎng)絡(luò)協(xié)議與消息格式上。本文采用SOAP的綁定方式實(shí)現(xiàn)抽象消息交換模式與具體的傳輸協(xié)議和消息交換格式的綁定。
2.3.2 服務(wù)調(diào)用
服務(wù)調(diào)用是當(dāng)實(shí)現(xiàn)服務(wù)綁定后,飛機(jī)保障信息系統(tǒng)調(diào)用飛機(jī)保障資源管理系統(tǒng)等系統(tǒng)提供的服務(wù)的過(guò)程。服務(wù)調(diào)用的實(shí)現(xiàn)需要根據(jù) “服務(wù)提供者”生成的WSDL文件,編寫處理數(shù)據(jù)訪問(wèn)與服務(wù)調(diào)用業(yè)務(wù)邏輯的類,其中處理數(shù)據(jù)訪問(wèn)類與上文服務(wù)實(shí)現(xiàn)中的處理數(shù)據(jù)訪問(wèn)類的結(jié)構(gòu)類似,在此不再贅述。
服務(wù)調(diào)用業(yè)務(wù)邏輯的類主要實(shí)現(xiàn)對(duì)“服務(wù)提供者”提供的Web服務(wù)的調(diào)用。本文的服務(wù)請(qǐng)求者可調(diào)用那些不需要任何安全性驗(yàn)證的Web服務(wù),也可調(diào)用那些使用WS-Security進(jìn)行認(rèn)證的Web服務(wù),同時(shí)也支持一些采用Http Basic進(jìn)行認(rèn)證的Web服務(wù)。飛機(jī)保障信息系統(tǒng)調(diào)用飛機(jī)保障資源管理系統(tǒng)的WebServiceInvoke類結(jié)構(gòu)如下:
public class WebserviceInvokeTest {
public static void main(String[] args) throws Exception{
//設(shè)置要調(diào)用的目標(biāo)Web Service的地址
Stringuri="http://localhost:8083/escmp/dorado/webservice/supportResourceWebService";
//初始化Webservice客戶端
WebServiceClientclient=new WebServiceClient(uri);
//設(shè)置要調(diào)用的Webservice的WS-Security認(rèn)證所需要的//username及password,以及是否對(duì)用戶名及密碼進(jìn)行加密傳輸
client.set Username Token("admin","81c1206f28f2738cdf 714b4e10428 c66f58eee10",true);
//設(shè)置要調(diào)用的Webservice的Http Basic認(rèn)證所需要的//username及password,Http Basic認(rèn)證當(dāng)中所使用的密碼//為加密之前的密碼,而非被加密之后的密碼
client.setHttpAuthenticationCredentials("admin","admin");
//調(diào)用服務(wù)
SupportRequest request= new SupportRequest();
request.setSendStatus(0);
//設(shè)置在調(diào)用目標(biāo)Webservice過(guò)程當(dāng)中,需要將//Javabean與XML進(jìn)行相互序列化的Javabean類的class
client.setMarshallerClasses(new Class[] {SurpportRequest.class,SurpportResponse.class});
//發(fā)送調(diào)用請(qǐng)求并返回調(diào)用結(jié)果
SupportResponse response=(SupportR esponse)client.sendAndReceive(request);
//判斷返回結(jié)果是否為空
if(response.getTechnicaldocuments()!=null){
//輸出返回結(jié)果
for(Technicaldocument technicaldocument:response.getTechnicaldocuments()){
System.out.println(" aircrafttype:" + technicaldocument.getAircrafttype());}
}
}
本文提出飛機(jī)保障信息集成方法,應(yīng)用Dorado平臺(tái)和Spring-WS框架開(kāi)發(fā)基于SOA和Web Service的飛機(jī)保障信息系統(tǒng)。該系統(tǒng)是為飛機(jī)綜合保障相關(guān)部門的用戶提供一個(gè)統(tǒng)一的保障信息管理平臺(tái),主要以飛機(jī)綜合保障工作的業(yè)務(wù)管理為基礎(chǔ),以試飛管理和外場(chǎng)管理為核心業(yè)務(wù),通過(guò)SOAP封裝XML信息實(shí)現(xiàn)與飛機(jī)保障資源管理系統(tǒng)、飛機(jī)試飛管理系統(tǒng)、飛機(jī)外場(chǎng)服務(wù)綜合信息系統(tǒng)等異構(gòu)系統(tǒng)的集成及數(shù)據(jù)共享。該系統(tǒng)在某飛機(jī)設(shè)計(jì)研究所的綜合保障工作過(guò)程中進(jìn)行了初步應(yīng)用,驗(yàn)證了上述異構(gòu)系統(tǒng)集成方法的有效性。同時(shí)對(duì)于一些需要集成到本系統(tǒng)中的異構(gòu)系統(tǒng),也可按本文的方法,以“發(fā)布服務(wù)”的思想實(shí)現(xiàn)集成,使本文系統(tǒng)不斷完善。飛機(jī)保障信息系統(tǒng)的主界面如圖5所示。

圖5 系統(tǒng)驗(yàn)證界面
本文系統(tǒng)于2016年5月份由航空系統(tǒng)某信息公司作為第三方企業(yè)進(jìn)行了測(cè)試,測(cè)試總體結(jié)果如表1所示。首輪測(cè)試中出現(xiàn)問(wèn)題如下:角色擁有不屬于自己權(quán)限,提示信息錯(cuò)誤或不一致,輸入錯(cuò)誤或無(wú)效的數(shù)據(jù),輸入或輸出字段類型有誤,權(quán)限判別的業(yè)務(wù)流程設(shè)計(jì)不友好,飛機(jī)試飛管理系統(tǒng)集成數(shù)據(jù)沒(méi)有或錯(cuò)誤驗(yàn)證。產(chǎn)生這些問(wèn)題的主要原因是需求定義不明確、功能性錯(cuò)誤、頁(yè)面設(shè)計(jì)和需求不一致以及開(kāi)發(fā)人員的疏忽。開(kāi)發(fā)人員通過(guò)與需求方進(jìn)行詳細(xì)溝通并提出完善措施,改進(jìn)之后,在回歸測(cè)試中,上述問(wèn)題均被解決,發(fā)現(xiàn)飛行統(tǒng)計(jì)過(guò)程中讀取的數(shù)據(jù)類型有誤等問(wèn)題,這是由于修改集成業(yè)務(wù)邏輯而引入了新的錯(cuò)誤。測(cè)試后開(kāi)發(fā)人員采取了與飛機(jī)綜合保障部門業(yè)務(wù)人員加強(qiáng)溝通,修改與敏捷平臺(tái)集成的業(yè)務(wù)邏輯代碼,增加輸入與輸出限制判別與對(duì)集成數(shù)據(jù)進(jìn)行控制等措施來(lái)改進(jìn)本文系統(tǒng)。

表1 系統(tǒng)測(cè)試用例執(zhí)行情況
最終本文系統(tǒng)于2016年9月通過(guò)了項(xiàng)目組的驗(yàn)收,并已正式上線運(yùn)行,筆者也每隔一段時(shí)間去現(xiàn)場(chǎng)收集用戶的反饋意見(jiàn),目前系統(tǒng)運(yùn)行穩(wěn)定、可靠。
本文以航空企業(yè)信息化為背景,針對(duì)飛機(jī)綜合保障部門信息化集成需求,首先提出基于SOA和Web Services的異構(gòu)系統(tǒng)集成方法,研究支撐SOA和Web Services技術(shù)的XML、SOAP、WSDL與UDDI等開(kāi)發(fā)技術(shù)與標(biāo)準(zhǔn);然后建立飛機(jī)保障信息系統(tǒng)集成模型,分析SOA和Web Service體系架構(gòu)的3個(gè)模塊以及基本操作;最后通過(guò)飛機(jī)保障信息系統(tǒng)集成實(shí)例說(shuō)明如何基于SOA與Web Services實(shí)現(xiàn)異構(gòu)系統(tǒng)集成。目前SOA和Web Services技術(shù)已經(jīng)成熟,但其在航空企業(yè)信息化領(lǐng)域的應(yīng)用尚處于發(fā)展階段,需要對(duì)此做進(jìn)一步研究,從而有效推進(jìn)航空企業(yè)信息化水平,提高航空制造業(yè)整體效率。
[1] 王 穎,吳榮泉,黃美鋒,等.一個(gè)面向服務(wù)的EAI框架[J].計(jì)算機(jī)工程,2006,32(1):279-281.
[2] PAPAZOGLOU M P,HEUVEL W J.Service Oriented Architectures:Approaches,Technologies and Research Issues[J].The VLDB Journal,2007,16(3):389-415.
[3] 黃雙喜,范玉順,趙大哲,等.基于Web 服務(wù)的企業(yè)應(yīng)用集成[J].計(jì)算機(jī)集成制造系統(tǒng),2003,9(10):864-867.
[4] JURIC M B,LOGANATHAN R,SARANG P,et al.SOA Approach to Integration[M].Birmingham,UK:Packt Publishing Ltd.,2007.
[5] KUZYK R.Web Services:Standardizing EAI[J].EAI Journal,2002(3):123-128.
[6] HE Wu,XU Lida.Integration of Distributed Enterprise Applications:A Survey[J].IEEE Transactions on Industrial Informatics,2014,10(1):35-42.
[7] KRAFZIG D,BANKE K,SLAMA D.Enterprice SOA Service-Oriented Architecture Best Practices[M].[S.l.]:Prentice Hall,2005.
[8] 王衛(wèi)玲.基于SOA的Web Services集成技術(shù)研究[D].南寧:廣西大學(xué),2007.
[9] 高 潔,張相文.基于SOA的服務(wù)型電子政務(wù)模式研究[J].情報(bào)學(xué)報(bào),2009(10):777-783.
[10] 張朝暉,徐立臻,董逸生,等.一種基于SOA的企業(yè)集成平臺(tái)[J].計(jì)算機(jī)工程,2011,37(5):258-260.
[11] 李安渝.Web Services技術(shù)與實(shí)現(xiàn)[M].北京:國(guó)防工業(yè)出版社,2003.
[12] 張文斌,葉紅云,陳恩紅.基于Web Service的B2B電子商務(wù)環(huán)境構(gòu)建技術(shù)[J].計(jì)算機(jī)工程,2002,28(11):69-71.
[13] W3C Recommendation.Extensible Markup Language(XML) 1.0[EB/OL].(2000-10-06).http://www.w3.org/TR/REC-xml.
[14] 胡迎松,彭利文,池楚兵.基于.NET的Web應(yīng)用三層結(jié)構(gòu)設(shè)計(jì)技術(shù)[J].計(jì)算機(jī)工程,2003,29(8):173-175.
[15] 程 澄.基于Web Service的綜合物流服務(wù)平臺(tái)的研究與實(shí)現(xiàn)[D].大連:大連海事大學(xué),2012.
[16] 劉家茂.Web Services動(dòng)態(tài)合成及UDDI注冊(cè)/查詢技術(shù)的研究[D].上海:復(fù)旦大學(xué),2005.