王 洋,周 勃,董寶田
(北京交通大學(xué)交通運(yùn)輸學(xué)院,北京100044)
鐵路運(yùn)輸企業(yè)的高效運(yùn)轉(zhuǎn)必須有一個(gè)強(qiáng)有力的信息系統(tǒng)支持。如今,鐵路信息系統(tǒng)經(jīng)過多年的建設(shè)和發(fā)展,建立了大量的信息系統(tǒng),如調(diào)度指揮系統(tǒng)、客運(yùn)服務(wù)系統(tǒng)以及貨物運(yùn)輸管理系統(tǒng)等,覆蓋了鐵路運(yùn)營(yíng)和日常辦公的各個(gè)方面,取得了很好的收益,但仍無法滿足不斷產(chǎn)生的各種需求。其中最突出的問題就是不同業(yè)務(wù)系統(tǒng)之間的互通和互聯(lián)不暢。這些系統(tǒng)由于存在建設(shè)時(shí)間有先后,建設(shè)時(shí)所面臨的信息技術(shù)資源不同,對(duì)系統(tǒng)運(yùn)行的環(huán)境需求不同等因素,系統(tǒng)之間信息資源難以共享,整體效益難以發(fā)揮。而隨著我國(guó)鐵路的高速發(fā)展,鐵路信息化的重要地位日漸突出,迫切需要鐵路內(nèi)部各系統(tǒng)之間互聯(lián)互通,提高鐵路整體的運(yùn)營(yíng)效率。
要解決鐵路信息系統(tǒng)存在的種種問題,就要找到一種能夠跨越具體技術(shù)細(xì)節(jié),使系統(tǒng)具有良好的開放性和擴(kuò)展性的方法。面向服務(wù)的架構(gòu)(Service-Oriented Architecture,SOA)能夠滿足這些要求,研究如何將其應(yīng)用于鐵路信息共享中具有重要意義和作用。
面向服務(wù)架構(gòu)(SOA)是一種設(shè)計(jì)方法,它指導(dǎo)業(yè)務(wù)服務(wù)在其生命周期(從構(gòu)思開始,直至停止使用)中的方方面面,同時(shí)也提供了一種具有以下特征的IT基礎(chǔ)設(shè)施:允許不同的應(yīng)用相互交換數(shù)據(jù)和參與業(yè)務(wù)流程,無論使用何種操作系統(tǒng)或采用何種語(yǔ)言[1]。它能把各個(gè)應(yīng)用的功能抽象成服務(wù),通過請(qǐng)求/服務(wù)的方式獲取跨應(yīng)用的功能調(diào)用和數(shù)據(jù)獲取。其核心技術(shù)就是Web服務(wù)。
面向Web服務(wù)的業(yè)務(wù)流程執(zhí)行語(yǔ)言(BPEL 或BPEL4WS)可通過組合、編排和協(xié)調(diào) Web 服務(wù)自上而下地實(shí)現(xiàn)SOA[2] 263-267。BPEL 提供了一種相對(duì)簡(jiǎn)單的方法,可將多個(gè) Web 服務(wù)組合到一個(gè)新的復(fù)合服務(wù)(稱作業(yè)務(wù)流程)中。
用業(yè)務(wù)流程集成的思想構(gòu)建鐵路信息共享平臺(tái)的SOA,要了解鐵路系統(tǒng)內(nèi)部近40個(gè)應(yīng)用系統(tǒng)都各自發(fā)揮什么樣的功能,能發(fā)布什么樣的Web服務(wù),提供什么樣的信息來共享。
例如,鐵路客票發(fā)售與預(yù)訂系統(tǒng)可以提供剩余票額查詢、票價(jià)查詢以及列車時(shí)刻表查詢等服務(wù);貨運(yùn)營(yíng)銷與生產(chǎn)管理系統(tǒng)可提供運(yùn)輸計(jì)劃查詢等服務(wù);列車預(yù)確報(bào)系統(tǒng)可提供列車的車次查詢、發(fā)報(bào)站查詢、發(fā)報(bào)時(shí)間查詢服務(wù)。各系統(tǒng)將本系統(tǒng)的功能作為Web服務(wù)發(fā)布,同時(shí)參與業(yè)務(wù)流程集成,以生成新的功能。然而,現(xiàn)實(shí)的共享需求中還存在著以下情況:
(1)用戶需求的信息,并不來自于一個(gè)系統(tǒng),而是多個(gè)系統(tǒng)提供的信息的組合;
(2)用戶所需的信息,雖然某一系統(tǒng)可以完全提供,但卻需要調(diào)用該系統(tǒng)的幾項(xiàng)服務(wù),才能獲取完整的信息結(jié)果;
(3)用戶需求的信息,雖然某個(gè)系統(tǒng)的某項(xiàng)服務(wù)可以提供,但用戶無法提供調(diào)用該服務(wù)所需的輸入消息,需要根據(jù)自身掌握的信息通過其他系統(tǒng)提供的服務(wù)獲取該輸入信息,而且可能需要調(diào)用多個(gè)服務(wù)才能獲取。
即使是點(diǎn)對(duì)點(diǎn)的信息需求,也可能因信任程度不夠,服務(wù)無法直接調(diào)用。因此,對(duì)應(yīng)服務(wù)需在信息共享平臺(tái)重新封裝后由平臺(tái)發(fā)布,再供其他系統(tǒng)調(diào)用。
解決以上問題的方式,正是業(yè)務(wù)流程集成的思想,應(yīng)用BPEL,將來自不同系統(tǒng)的一個(gè)或多個(gè)服務(wù)進(jìn)行集成和封裝。但根據(jù)一定的規(guī)則將其集成后可以實(shí)現(xiàn)新的并且更粗粒度的服務(wù),用戶只要調(diào)用該服務(wù),即可自動(dòng)完成與流程所集成的對(duì)應(yīng)服務(wù)的調(diào)用,滿足其信息共享的需求。各系統(tǒng)提供的服務(wù)和集成后的新服務(wù)是可重用的,可根據(jù)需求再參與其他流程的集成。
鐵路信息系統(tǒng)中包含許多應(yīng)用系統(tǒng),每個(gè)應(yīng)用系統(tǒng)又可提供多個(gè)Web服務(wù),結(jié)合鐵路信息共享需求,對(duì)所有的服務(wù)進(jìn)行封裝和集成是一項(xiàng)非常浩大的工程。應(yīng)用BPEL實(shí)現(xiàn)鐵路全面信息共享的目標(biāo),可謂任重而道遠(yuǎn)。本文例舉2個(gè)流程相對(duì)簡(jiǎn)單,但卻具有實(shí)際意義,可以滿足鐵路信息共享需求的業(yè)務(wù)流程集成應(yīng)用,說明BPEL如何用業(yè)務(wù)流程集成思想解決鐵路信息共享問題的思路。
鐵路貨物追蹤查詢業(yè)務(wù)流程實(shí)現(xiàn)后,鐵路以外的貨主可以實(shí)時(shí)掌握貨物運(yùn)輸過程中的狀態(tài),增加客戶滿意度,從而提高鐵路服務(wù)質(zhì)量和整體競(jìng)爭(zhēng)力。
貨物追蹤查詢需調(diào)用的外部Web 服務(wù)如下:
(1)車號(hào)信息Web服務(wù):通過貨票號(hào)等信息查詢裝載了該貨物的貨車車號(hào)。輸入?yún)?shù)為貨物承運(yùn)貨票號(hào)和貨物發(fā)站名,輸出參數(shù)為裝載著該貨物的貨車號(hào)。
(2)車次信息Web服務(wù):通過貨車車輛的車號(hào)查詢貨車最后被編入的列車車次的服務(wù),輸入?yún)?shù)為貨車的車號(hào),輸出參數(shù)為該輛貨車最后被編入的列車車次。
(3)站名信息Web服務(wù):通過車號(hào)查詢?cè)撥囕v最后編入車次的一些其他相關(guān)信息,包括發(fā)報(bào)站、發(fā)車時(shí)間和解體站。輸入?yún)?shù)為貨車車號(hào),輸出參數(shù)為該車輛最后編入車次的發(fā)報(bào)站、發(fā)車時(shí)間和解體站。
通過上述服務(wù),貨主即可通過貨票號(hào)等信息,確定其托運(yùn)的貨物目前所在的區(qū)段,以及編入的車次等信息。接下來要利用BPEL對(duì)上述服務(wù)集成,形成新的業(yè)務(wù)流程,發(fā)布新的貨物追蹤查詢Web服務(wù),供貨主及其它有需求的人員或系統(tǒng)訪問。新業(yè)務(wù)流程如圖1。
其中,SearchLT為調(diào)用車號(hào)服務(wù)的端口名,TrainLT為調(diào)用車次服務(wù)的端口名, StationLT為調(diào)用站名服務(wù)的端口名。
目前鐵路各貨運(yùn)站的貨物運(yùn)輸方式,大都以整車和集裝箱業(yè)務(wù)為主,在擁有大型專用線的車站,幾乎全部貨運(yùn)業(yè)務(wù)都采用整車運(yùn)輸?shù)姆绞?。整車和集裝箱運(yùn)輸除了按正常的裝車計(jì)劃裝車外,每天還存在著一定數(shù)量的計(jì)劃外裝車。計(jì)劃裝車和計(jì)劃外裝車是否被批準(zhǔn)發(fā)車,需要貨運(yùn)調(diào)度員和計(jì)劃調(diào)度員根據(jù)實(shí)際情況綜合考慮,而這個(gè)過程需要一段時(shí)間。貨車批準(zhǔn)狀態(tài)查詢功能利用信息系統(tǒng),使貨物的批準(zhǔn)狀態(tài)在車站的用戶界面上實(shí)時(shí)顯示,車站工作人員可在第1時(shí)間掌握該信息,縮短核對(duì)車輛批準(zhǔn)的時(shí)間,提高車站的工作效率。
圖1 貨物追蹤查詢BPEL流程圖
貨車批準(zhǔn)狀態(tài)查詢需要調(diào)用的外部Web 服務(wù)如下 :
(1)貨車信息Web 服務(wù):輸入?yún)?shù)為貨車的發(fā)站名和裝車日期,輸出參數(shù)為該日所裝的貨車的車號(hào),品名,到站和貨物重量。其提供CarriageInfPT端口類型,可使用getCarriageInf操作,實(shí)現(xiàn)服務(wù)調(diào)用。
(2)站名信息Web 服務(wù):通過貨車車號(hào)查詢?cè)撥囕v最后編入車次的相關(guān)信息,包括發(fā)報(bào)站,發(fā)車時(shí)間,解體站。本功能只利用發(fā)車時(shí)間這一參數(shù),與裝車時(shí)間對(duì)比,若發(fā)車時(shí)間晚于裝車時(shí)間,則該貨車已發(fā)出,否則該貨車則未發(fā)出。
(3)狀態(tài)查詢Web 服務(wù):輸入?yún)?shù)為貨車的車號(hào)及裝車時(shí)間,輸出參數(shù)為該輛貨車的狀態(tài)(“已批準(zhǔn)”或“未批準(zhǔn)”),也輸出其他的與貨物相關(guān)的信息,包括品名,到站和貨物重量。通過StatusLT調(diào)用狀態(tài)查詢Web服務(wù)。
通過以上服務(wù),可實(shí)現(xiàn)規(guī)劃中的貨車批準(zhǔn)狀態(tài)查詢的功能。車站工作人員可及時(shí)掌握貨車批準(zhǔn)狀態(tài)信息,提高車站的工作效率。該功能的BPEL流程如圖2。
圖2 批準(zhǔn)狀態(tài)查詢BPEL流程圖
用基于SOA的業(yè)務(wù)流程集成技術(shù)解決鐵路信息共享問題,可將龐大的鐵路信息系統(tǒng)內(nèi)部各系統(tǒng)提供的信息共享資源有效整合,能夠起到推動(dòng)鐵路信息化進(jìn)程的作用。
本文以實(shí)際的鐵路信息共享需求為依據(jù),描述了2個(gè)簡(jiǎn)單的BPEL流程實(shí)現(xiàn),用業(yè)務(wù)流程集成的思想能解決的信息共享問題可涉及到鐵路信息共享的方方面面。例如,通過集成客票發(fā)售與預(yù)訂系統(tǒng)的相關(guān)服務(wù),可實(shí)現(xiàn)客票信息的綜合查詢;集成工務(wù)和電務(wù)相關(guān)系統(tǒng)發(fā)布的施工計(jì)劃相關(guān)的服務(wù),可使車務(wù)等其它基層工作人員查詢到相關(guān)的施工計(jì)劃,以調(diào)整自身生產(chǎn);通過集成機(jī)務(wù)系統(tǒng)的相關(guān)服務(wù),可讓高層調(diào)度人員掌握機(jī)車運(yùn)用情況,進(jìn)而進(jìn)行運(yùn)輸生產(chǎn)調(diào)整。
鐵路信息系統(tǒng)能夠提供的信息量非常大,通過流程集成的方式有效整合,封裝利用,可更好地滿足鐵路信息共享需求,在鐵路信息化的建設(shè)中發(fā)揮更大的作用。
[1] 鄭耀. SOA在鐵路信息共享平臺(tái)中的應(yīng)用研究[D] .北京:北京交通大學(xué),2007(7-8):1-8.
[2] 毛新生. SOA原理·方法·實(shí)踐[M] . 北京:電子工業(yè)出版社, 2007(3):263-267.