杜軒軒,劉 云
(北京交通大學(xué) 通信與信息系統(tǒng)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100044)
經(jīng)過多年的建設(shè),北京軌道交通信息化建設(shè)基本覆蓋了各專業(yè)業(yè)務(wù),形成了網(wǎng)絡(luò)化運(yùn)營的格局,但也存在不足,主要表現(xiàn)在以下3個(gè)方面:
(1)信息共享程度低
盡管各業(yè)務(wù)系統(tǒng)間存在著大量的信息交互,但由于缺乏統(tǒng)一、規(guī)范的信息交互機(jī)制,各信息系統(tǒng)之間無法實(shí)現(xiàn)數(shù)據(jù)資源的共享,導(dǎo)致業(yè)務(wù)信息難以實(shí)現(xiàn)高效的綜合處理,各信息系統(tǒng)之間難以聯(lián)系協(xié)調(diào)、共同發(fā)揮作用,使得數(shù)據(jù)處理、分析及報(bào)表管理分散,造成重復(fù)和缺失。
(2)各系統(tǒng)之間聯(lián)動(dòng)性差
軌道交通運(yùn)輸系統(tǒng)本身就是一個(gè)“車、機(jī)、工、電、輛”組成的聯(lián)動(dòng)機(jī),各業(yè)務(wù)系統(tǒng)間存在著業(yè)務(wù)聯(lián)動(dòng)關(guān)系。例如,在火災(zāi)情況下,防災(zāi)報(bào)警信號(hào)會(huì)傳到各系統(tǒng),觸發(fā)各系統(tǒng)的聯(lián)動(dòng)模式,F(xiàn)AS (防災(zāi)報(bào)警) 系統(tǒng)、ATC (信號(hào)與通信) 系統(tǒng)、BAS (環(huán)境與設(shè)備監(jiān)控) 系統(tǒng)、AFC (自動(dòng)售檢票) 系統(tǒng)、PIS(乘客信息顯示)系統(tǒng)等多個(gè)系統(tǒng)應(yīng)協(xié)調(diào)工作。但現(xiàn)有的信息系統(tǒng)彼此孤立、異域異構(gòu)、缺乏統(tǒng)一接口規(guī)范,它們之間的連通比較困難且成本較高,各系統(tǒng)操作員只能了解本專業(yè)所關(guān)心的系統(tǒng)狀態(tài),難以及時(shí)獲知其它專業(yè)的狀態(tài)。目前,為實(shí)現(xiàn)運(yùn)營的協(xié)調(diào)統(tǒng)一管理,不得不加入人工干預(yù),這極大降低了可靠性、實(shí)時(shí)響應(yīng)性和運(yùn)營效率。
(3)各子系統(tǒng)缺乏統(tǒng)一的標(biāo)準(zhǔn)
各業(yè)務(wù)信息系統(tǒng)都采用不同的軟硬件平臺(tái),人機(jī)交互界面多種多樣,信息交互接口也不統(tǒng)一。給系統(tǒng)間信息交互和共享帶來極大困難,嚴(yán)重影響了信息的充分利用以及綜合決策水平。
(4)缺少與外部相關(guān)系統(tǒng)的接口
城市軌道交通作為綜合交通系統(tǒng)的一個(gè)重要組成部分,與道路公共交通、鐵路、航空等存在著大量的數(shù)據(jù)交換需求,但現(xiàn)有的信息系統(tǒng)未考慮到對外接口需求,這對城市軌道交通系統(tǒng)的長遠(yuǎn)發(fā)展十分不利。
以上的問題與北京作為首都的地位和建設(shè)現(xiàn)代國際城市的要求是不匹配的,所以基于以上的考慮,很有必要建立一個(gè)北京城市軌道交通的數(shù)據(jù)交換平臺(tái),整合各個(gè)信息系統(tǒng)的數(shù)據(jù)資源,為北京城市軌道交通的發(fā)展提供有力的保障,從而推動(dòng)整個(gè)北京的城市建設(shè)。
XML表示可擴(kuò)展標(biāo)記語言,是一種高度結(jié)構(gòu)性的、具有自我數(shù)據(jù)描述功能以及可驗(yàn)證性的語言。XML有一套規(guī)則使用戶可以自己定義標(biāo)記和屬性,這些標(biāo)記和屬性可以構(gòu)成一些標(biāo)準(zhǔn),用戶可以按照這些標(biāo)準(zhǔn)來開發(fā)應(yīng)用程序,因而具有很好的擴(kuò)展性。
由于可以借助驗(yàn)證規(guī)則來規(guī)范一個(gè)XML文件的內(nèi)容與結(jié)構(gòu),保證XML文檔的有效性,同時(shí)XML是非專有的并易于閱讀和編寫,就使得它成為在不同的應(yīng)用間交換數(shù)據(jù)的理想格式。更重要的是,現(xiàn)在的系統(tǒng)多半使用關(guān)系型數(shù)據(jù)庫,如Oracle,SQLServer等,XML以上的特點(diǎn)以及其本身突出表現(xiàn)數(shù)據(jù)結(jié)構(gòu)和語義的特點(diǎn),使其自然地與數(shù)據(jù)庫結(jié)合在一起。一旦將XML數(shù)據(jù)文件與數(shù)據(jù)庫表關(guān)聯(lián)起來,不但可以保留關(guān)系數(shù)據(jù)庫表的結(jié)構(gòu)信息,還可以利用XML文檔的優(yōu)勢在網(wǎng)絡(luò)及數(shù)據(jù)庫間交換數(shù)據(jù),并解決不同數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)關(guān)系、語義定義等數(shù)據(jù)表達(dá)方面的差異,如對應(yīng)關(guān)系中字段內(nèi)容不同、字段命名不同、數(shù)據(jù)類型不同等。這將較好地解決企業(yè)應(yīng)用系統(tǒng)間信息源集成的分布和異構(gòu)等問題,使得數(shù)據(jù)交換的手段更為高效。
Xquery即XML Query,是W3C所制定的一套標(biāo)準(zhǔn),用來從類XML文檔中提取信息,類XML文檔可以理解成一切符合XML數(shù)據(jù)模型和接口的實(shí)體,他們可能是文件或RDBMS。Xquery是查詢XML的語言,類似于RDBMS的SQL,目前主流的RDBMS如Oracle, DB2, SQLServer都支持Xquery。本平臺(tái)即利用Xquery在已注冊的系統(tǒng)中查詢用戶所請求的數(shù)據(jù)。
JMS是消息隊(duì)列服務(wù)(Java Message Service)的簡稱,用來在2個(gè)應(yīng)用系統(tǒng)之間或是分布式系統(tǒng)之間發(fā)送消息。不同于傳統(tǒng)的面向消息的中間件(MOM)。JMS定義了統(tǒng)一的API,所以它的實(shí)現(xiàn)與具體的廠商無關(guān),更有利于產(chǎn)品移植。通常情況下,JMS包括3部分內(nèi)容:2個(gè)JMS客戶端和1個(gè)JMS服務(wù)器。
JMS客戶端是使用JMSAPI發(fā)送和接受消息的應(yīng)用程序,JMS服務(wù)器是任何實(shí)現(xiàn)JMS規(guī)范的應(yīng)用程序或者應(yīng)用程序的一部分。JMS客戶端通過JMS服務(wù)器發(fā)送消息以進(jìn)行通信。主要有2種通信方式:
(1)點(diǎn)對點(diǎn)模式(Point-to-Point)
消息生產(chǎn)客戶端向一個(gè)特定的隊(duì)列發(fā)送消息,然后消息消費(fèi)客戶端從該隊(duì)列獲取信息,如果消費(fèi)客戶端沒有從該隊(duì)列獲取信息,該信息將一直保留在隊(duì)列中,直至消費(fèi)客戶端取走信息或該信息過期,所以在該模式下,通信以消息被取走而結(jié)束,客戶端和消費(fèi)端不需要同時(shí)處于運(yùn)行狀態(tài),只有一個(gè)消費(fèi)者能獲取信息。本平臺(tái)使用的就是第一種模式。
(2)發(fā)布者/訂閱者模型(Pub/Sub模式)
發(fā)布者向一個(gè)特定的消息主體發(fā)布消息,所有對該主題感興趣的訂閱者都可接收該消息,所以這種模式類似于匿名公告板,多個(gè)消費(fèi)者可獲得消息。發(fā)布者與訂閱者存在時(shí)間差上的依賴性,發(fā)布者必須首先建立一個(gè)訂閱,以便訂閱者訂閱,除非訂閱者建立了持久的訂閱,否則訂閱者必須保持持續(xù)的活動(dòng)狀態(tài)以接受消息。
本系統(tǒng)可分為4個(gè)模塊,接入模塊,交換模塊,基礎(chǔ)服務(wù)管理模塊,消息路由模塊,如圖1。
處理應(yīng)用信息系統(tǒng)的接入,主要功能是實(shí)現(xiàn)系統(tǒng)和平臺(tái)之間的數(shù)據(jù)讀寫。對于新建的系統(tǒng)比較簡單,利用java語言跨平臺(tái)的優(yōu)勢,只需要按照規(guī)定實(shí)現(xiàn)一個(gè)可實(shí)現(xiàn)數(shù)據(jù)讀寫功能的接口即可接入平臺(tái);對于已有系統(tǒng),改寫系統(tǒng)代碼的代價(jià)比較大,解決的辦法是采用接入新系統(tǒng)的方法搭建一個(gè)適配器,由適配器來代替已有系統(tǒng)與平臺(tái)交互。
圖1 北京軌道交通數(shù)據(jù)交換平臺(tái)框架結(jié)構(gòu)
基礎(chǔ)服務(wù)管理模塊包括系統(tǒng)注冊模塊,事務(wù)管理模塊,日志管理模塊。系統(tǒng)注冊模塊負(fù)責(zé)整個(gè)系統(tǒng)的安全和授權(quán)部分,每個(gè)系統(tǒng)必須在平臺(tái)注冊并且得到平臺(tái)的同意響應(yīng)后才能通過平臺(tái)和其它系統(tǒng)進(jìn)行數(shù)據(jù)交換;事務(wù)管理模塊保證信息交互過程中的事務(wù)安全機(jī)制;日志管理模塊通過控制臺(tái)、文件和數(shù)據(jù)庫3種方式記錄平臺(tái)信息交互的日志,以備日后查詢分析。
交換模塊是整個(gè)平臺(tái)的核心部分,是異構(gòu)數(shù)據(jù)交換的處理部分,以層次化的結(jié)構(gòu)來組織。主要包括服務(wù)層、協(xié)議支持層和數(shù)據(jù)格式轉(zhuǎn)換引擎。
(1)服務(wù)層完成信息系統(tǒng)的接入服務(wù),提供平臺(tái)自身的數(shù)據(jù)庫服務(wù),該數(shù)據(jù)庫主要存放系統(tǒng)日志、消息隊(duì)列相關(guān)持久化信息,保證交換平臺(tái)運(yùn)行過程中需要持久化的信息能夠正常存儲(chǔ),與各個(gè)接入信息系統(tǒng)不發(fā)生關(guān)系。本層還可以部署其它服務(wù),這個(gè)視系統(tǒng)的復(fù)雜性可進(jìn)行后期擴(kuò)展。
(2)數(shù)據(jù)協(xié)議層提供軌道交通信息交換平臺(tái)上需要交換的各種數(shù)據(jù)協(xié)議支持服務(wù)。服務(wù)層完成系統(tǒng)的接入后,將各個(gè)信息系統(tǒng)發(fā)送的JMS消息傳送到本層,本層通過解析消息的相關(guān)記錄,可得到該消息交換的數(shù)據(jù)所采用協(xié)議。通過判定協(xié)議后,即調(diào)用對應(yīng)數(shù)據(jù)協(xié)議的交換處理模塊處理該信息交換任務(wù)。
(3)數(shù)據(jù)格式轉(zhuǎn)換引擎的功能主要是為了實(shí)現(xiàn)不同數(shù)據(jù)格式的轉(zhuǎn)換。轉(zhuǎn)換是基于數(shù)據(jù)內(nèi)容的,也就是保持了原有的數(shù)據(jù)內(nèi)容不變,只是將其外在的表現(xiàn)形勢做了轉(zhuǎn)換。各種數(shù)據(jù)格式之間轉(zhuǎn)換的中間格式為XML,即平臺(tái)先將待轉(zhuǎn)換格式轉(zhuǎn)化為XML格式,然后再將XML格式轉(zhuǎn)化為目的格式。
消息路由模塊位于平臺(tái)框架結(jié)構(gòu)的最底層,負(fù)責(zé)處理各個(gè)系統(tǒng)的互達(dá)路由,保證系統(tǒng)信息正常到達(dá)指定系統(tǒng)。整個(gè)交換中使用的信息格式需要進(jìn)一步研究符合要求的統(tǒng)一的數(shù)據(jù)交換規(guī)范。該層提供信息系統(tǒng)數(shù)據(jù)流的路由配置和實(shí)現(xiàn)。比如一個(gè)數(shù)據(jù)流由系統(tǒng)A發(fā)出(文本格式),經(jīng)過系統(tǒng)B(XML格式),最終到達(dá)系統(tǒng)C(Html)。就可以在系統(tǒng)配置文件里添加一條路由,表示整條數(shù)據(jù)路徑。平臺(tái)路由模塊啟動(dòng)時(shí),就能加載這些配置好的路由信息,在系統(tǒng)運(yùn)行時(shí),只要有符合條件的數(shù)據(jù)流,系統(tǒng)就會(huì)按照配置的路由來傳送數(shù)據(jù)到目的系統(tǒng)。
本平臺(tái)的數(shù)據(jù)交換需要系統(tǒng)平臺(tái)之間發(fā)送各種消息,這些消息的傳遞是通過中間件Jms規(guī)范的一種實(shí)現(xiàn)OpenJMS來完成的,目前主要發(fā)送的消息有:
(1)注冊消息(Registration Request);
(2)注冊相應(yīng)消息(Registration Response);
(3)請求消息(Data Request);
(4)請求響應(yīng)消息(Data Response)。
以上消息的消息體均為XML格式,并且滿足各自的標(biāo)準(zhǔn)規(guī)范。
(1)注冊流程
A系統(tǒng)要加入平臺(tái)進(jìn)行數(shù)據(jù)交換,必須先進(jìn)行注冊,獲得平臺(tái)的授權(quán)。A系統(tǒng)向平臺(tái)的Registration Buffer隊(duì)列發(fā)送注冊請求(Registration Request),平臺(tái)從RegistrationBuffer獲得注冊請求并進(jìn)行解析,若經(jīng)驗(yàn)證A系統(tǒng)合法,則向Registration Response Buffer隊(duì)列發(fā)送成功的注冊響應(yīng),包括A系統(tǒng)的注冊有效,目前平臺(tái)中已注冊的系統(tǒng)列表。否則發(fā)送失敗的注冊請求響應(yīng),包含注冊失敗的原因。A系統(tǒng)從Registration Response Buffer獲得注冊請求響應(yīng),若注冊成功,則可開始進(jìn)行數(shù)據(jù)交換。
(2)數(shù)據(jù)交換流程
現(xiàn)在A系統(tǒng)需要西直門地鐵站的涵洞數(shù)據(jù),A系統(tǒng)將其請求封裝在請求消息(Data Request)中,發(fā)送到平臺(tái)的Request Buffer隊(duì)列,平臺(tái)從該隊(duì)列獲得請求消息并進(jìn)行解析,然后在已注冊的系統(tǒng)中進(jìn)行查詢,發(fā)現(xiàn)B和C系統(tǒng)含A系統(tǒng)所請求的數(shù)據(jù)。平臺(tái)分別向B和C的接收隊(duì)列(Receiver- BuffrFor X)轉(zhuǎn)發(fā)A的數(shù)據(jù)請求,B和C從各自的接受隊(duì)列獲得數(shù)據(jù)請求后,查詢各自系統(tǒng),將查詢到的數(shù)據(jù)封裝在各自的請求響應(yīng)消息中,發(fā)送到各自的發(fā)送隊(duì)列(Sender BuffrForX)。平臺(tái)從B和C的發(fā)送隊(duì)列中獲取數(shù)據(jù),封裝成數(shù)據(jù)請求響應(yīng),并轉(zhuǎn)化為A系統(tǒng)的數(shù)據(jù)格式,發(fā)送到A系統(tǒng)的接受隊(duì)列(Receiver Buffer ForA),A系統(tǒng)從該隊(duì)列中獲取請求的數(shù)據(jù)。
本平臺(tái)數(shù)據(jù)交換的實(shí)現(xiàn)基于XML這一網(wǎng)絡(luò)“通用語言”,充分利用了XML可拓展,易組織,自描述性的特點(diǎn);利用Jms作為系統(tǒng)之間傳遞消息的中間件,由于Jms定義了統(tǒng)一的接口,所以它的具體實(shí)現(xiàn)與應(yīng)用程序是沒有關(guān)系的。所以使用該平臺(tái)對應(yīng)用系統(tǒng)的侵入性很小,系統(tǒng)只需按照規(guī)定實(shí)現(xiàn)一個(gè)可實(shí)現(xiàn)數(shù)據(jù)讀寫功能的接口就可以使用該交換平臺(tái)。該平臺(tái)目前正在開發(fā)中,不過前期的測試表明該平臺(tái)能夠很好的完成異構(gòu)數(shù)據(jù)的交換功能,而且具備上述與應(yīng)用系統(tǒng)之間的松耦合的特點(diǎn)。相信隨著本平臺(tái)的開發(fā)完成,一定能夠克服現(xiàn)在北京軌道交通決策分析信息單一,各系統(tǒng)無法共享信息的問題,很好的服務(wù)北京市軌道交通的發(fā)展。
[1]張麗華. 基于XML的異構(gòu)數(shù)據(jù)交換技術(shù)研究[J].蘇州科技學(xué)院學(xué)報(bào)(工程技術(shù)版),2010,23(2):77-80.
[2]金 廣. 校園異構(gòu)數(shù)據(jù)集成平臺(tái)研究[J]. 湖南科技學(xué)院學(xué)報(bào),2009,30(12).
[3]時(shí)貴英,呂洪濤. 可擴(kuò)展異構(gòu)數(shù)據(jù)交換系統(tǒng)的研究及實(shí)現(xiàn)[J]. 長江大學(xué)學(xué)報(bào)(理工卷),2009(2):217-218.
[4]張曉玲,劉洪基. 分布式異構(gòu)數(shù)據(jù)交換和共享系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J]. 楚雄師范學(xué)院學(xué)學(xué)報(bào),2009,24(6):1-5.
[5]魏曉東. 城市軌道交通自動(dòng)化系統(tǒng)與技術(shù)[M]. 北京:電子工業(yè)出版社,2004.
[6]張振江,劉 云. 北京城軌交通信息交換平臺(tái)的研究[J]. 交通運(yùn)輸系統(tǒng)工程與信息,2006,6(5):129-132.
[7]羅玉玲. J2EE應(yīng)用開發(fā)詳解[M]. 北京:電子工業(yè)出版社,2009.