馮 磊
(中國鐵道科學(xué)研究院,北京 100081)
車站公共數(shù)據(jù)查詢系統(tǒng)的開發(fā)與應(yīng)用
馮 磊
(中國鐵道科學(xué)研究院,北京 100081)
針對車站當(dāng)前應(yīng)用系統(tǒng)種類繁多,相互獨(dú)立,缺乏共享性,數(shù)據(jù)獲取不便的現(xiàn)狀,開發(fā)公共數(shù)據(jù)查詢系統(tǒng),通過融合各個(gè)獨(dú)立系統(tǒng)的基礎(chǔ)數(shù)據(jù),充分挖掘數(shù)據(jù)的關(guān)聯(lián)性與可用性,解決數(shù)據(jù)安全性和查詢效率問題,為車站運(yùn)輸指揮人員提供更加及時(shí)、準(zhǔn)確、完整的數(shù)據(jù)信息和決策方案,可以更加有效地提升與優(yōu)化運(yùn)輸組織,對車站運(yùn)輸生產(chǎn)效率提高有著很好的推動(dòng)作用。
數(shù)據(jù)查詢;系統(tǒng)設(shè)計(jì);采集;應(yīng)用
隨著鐵路信息化建設(shè)的飛速發(fā)展,信息技術(shù)為運(yùn)輸生產(chǎn)服務(wù)更加廣泛,鐵路運(yùn)輸管理信息系統(tǒng)為運(yùn)輸生產(chǎn)信息管理發(fā)揮了重要作用,該系統(tǒng)主要包括確報(bào)、貨票、運(yùn)輸計(jì)劃、車輛、編組站、貨運(yùn)站、區(qū)段站、日常運(yùn)輸統(tǒng)計(jì)、現(xiàn)在車及車流推算、軍交運(yùn)輸?shù)茸酉到y(tǒng)。由于各個(gè)應(yīng)用子系統(tǒng)信息相對獨(dú)立,總體上沒有提供共享查詢數(shù)據(jù)庫平臺(tái),缺少信息共享性,對車站管理人員而言,查詢數(shù)據(jù)需要在不同的子系統(tǒng)中進(jìn)行,再進(jìn)行人工匯總和處理,而且很多符合車站自身需求的查詢分析功能在系統(tǒng)里都沒有提供,存在有數(shù)據(jù)卻無法利用的現(xiàn)狀,極大地限制了管理信息系統(tǒng)對指導(dǎo)、促進(jìn)車站一級(jí)運(yùn)輸生產(chǎn)應(yīng)有的作用與效率。因此,綜合利用現(xiàn)有系統(tǒng)的基礎(chǔ)數(shù)據(jù),開發(fā)車站公共數(shù)據(jù)查詢系統(tǒng)(以下簡稱:系統(tǒng)),對車站運(yùn)輸質(zhì)量進(jìn)行統(tǒng)計(jì)和分析,將降低統(tǒng)計(jì)查詢的工作量,對運(yùn)輸部門的生產(chǎn)管理和運(yùn)輸指揮水平的提高具有深遠(yuǎn)的意義。
車站公共數(shù)據(jù)查詢系統(tǒng)分為以下幾個(gè)功能模塊。
(1)運(yùn)輸生產(chǎn)指標(biāo)分析模塊
實(shí)現(xiàn)按日、月、年時(shí)間段進(jìn)行中停時(shí)、運(yùn)輸收入、辦理車數(shù)、發(fā)送噸、裝卸車等關(guān)鍵運(yùn)輸生產(chǎn)指標(biāo)的統(tǒng)計(jì)分析,并提供歷史同期數(shù)據(jù)比較功能。
(2)作業(yè)車股道停時(shí)統(tǒng)計(jì)查詢模塊
實(shí)現(xiàn)車站停時(shí)的細(xì)化查詢,能查詢各個(gè)股道以及單個(gè)車輛的停時(shí),便于車站查找以及分析停時(shí)過大的原因。
(3)集裝箱應(yīng)用報(bào)告模塊
從集裝箱追蹤系統(tǒng)中提取基礎(chǔ)數(shù)據(jù),實(shí)現(xiàn)集裝箱的到達(dá)、出發(fā)、結(jié)存、運(yùn)用數(shù)、非運(yùn)用數(shù)、發(fā)送噸、停時(shí)等數(shù)據(jù)的統(tǒng)計(jì)查詢。
(4)貨運(yùn)七甲統(tǒng)計(jì)模塊
從小站版的貨調(diào)系統(tǒng)、大貨系統(tǒng)中提取數(shù)據(jù),實(shí)現(xiàn)車站裝車、卸車完成情況的查詢功能。
(5)運(yùn)貨五錄裝查詢模塊
提供裝車信息與起票信息相對應(yīng)的查詢功能,為裝車作業(yè)必須滿足先起票后裝車的作業(yè)流程提供卡控。
(6)貨票組合查詢模塊
從貨票信息系統(tǒng)中提取數(shù)據(jù),實(shí)現(xiàn)能按條件查詢票據(jù)信息,并實(shí)現(xiàn)運(yùn)量排名統(tǒng)計(jì)功能。
(7)到發(fā)列數(shù)統(tǒng)計(jì)模塊
實(shí)現(xiàn)按日期、方向?qū)囌镜?、發(fā)列車進(jìn)行統(tǒng)計(jì)的功能。
系統(tǒng)分為前端與后端兩個(gè)設(shè)計(jì)層面。針對系統(tǒng)的多用戶,瘦客戶端的使用環(huán)境,系統(tǒng)前端采用B/ S模式設(shè)計(jì),用戶端不需安裝軟件,使用瀏覽器訪問基于Asp.net的IIS服務(wù)器來查詢所需數(shù)據(jù)。系統(tǒng)后端為各數(shù)據(jù)采集集成模塊,針對不同系統(tǒng),采集模塊能自動(dòng)從各孤立的管理信息系統(tǒng)提取本車站需要的數(shù)據(jù),計(jì)算處理后整合到統(tǒng)一的平臺(tái)數(shù)據(jù)庫中,根據(jù)需要采用VB、VC等進(jìn)行設(shè)計(jì)。通過前后端系統(tǒng)的配合,向管理人員提供統(tǒng)一的查詢界面,實(shí)現(xiàn)對各種相關(guān)數(shù)據(jù)的跨系統(tǒng)的、綜合的查詢,并能根據(jù)用戶需求進(jìn)行方便的查詢功能擴(kuò)展。其信息流轉(zhuǎn)如圖1所示。
圖1 系統(tǒng)信息流程圖
數(shù)據(jù)采集程序通過直接訪問、專用接口和嵌入的方式對營銷系統(tǒng)、十八點(diǎn)統(tǒng)計(jì)、集裝箱追蹤等系統(tǒng)進(jìn)行數(shù)據(jù)采集,將采集后的數(shù)據(jù)處理后送往公共數(shù)據(jù)平臺(tái)服務(wù)器,最后由前端各個(gè)查詢網(wǎng)頁模塊(運(yùn)輸生產(chǎn)指標(biāo)分析、到發(fā)列數(shù)統(tǒng)計(jì)等)呈現(xiàn)給終端用戶。
3.1 查詢系統(tǒng)
各個(gè)查詢模塊均提供常用的條件選項(xiàng),提交查詢后,對簡易查詢由服務(wù)器端Asp.net頁面直接處理;復(fù)雜耗時(shí)的查詢?nèi)蝿?wù)通過編寫SQL存儲(chǔ)過程,編譯后由SQLServer數(shù)據(jù)庫引擎執(zhí)行;針對各個(gè)查詢條件,對相關(guān)表尤其是數(shù)據(jù)量較大的表建立索引,提高查詢速度和效率。
3.2 數(shù)據(jù)采集系統(tǒng)
數(shù)據(jù)采集程序針對具體的系統(tǒng)量身定制。主要有直接訪問、專用接口和嵌入式3類工作方式。
3.2.1 直接訪問數(shù)據(jù)庫采集
適合能夠直接訪問原系統(tǒng)數(shù)據(jù)的情況,例如,集裝箱追蹤系統(tǒng)的數(shù)據(jù)庫為Access數(shù)據(jù)庫,可以利用外掛程序?qū)υ摂?shù)據(jù)庫進(jìn)行只讀訪問獲取相關(guān)數(shù)據(jù),其數(shù)據(jù)采集流程如下:
(1)在編寫的外掛程序中,定時(shí)從追蹤系統(tǒng)提取數(shù)據(jù)進(jìn)入本站大箱統(tǒng)計(jì)系統(tǒng)SQLServer數(shù)據(jù)庫。
(2)在本站大箱統(tǒng)計(jì)系統(tǒng)SQLServer數(shù)據(jù)庫中編寫“Sql包”,對本站大箱統(tǒng)計(jì)系統(tǒng)數(shù)據(jù)進(jìn)行處理,完成數(shù)據(jù)平臺(tái)所需最終數(shù)據(jù)的計(jì)算,并將結(jié)果表向平臺(tái)數(shù)據(jù)庫傳送。
(3)在本站大箱統(tǒng)計(jì)系統(tǒng)SQLServer數(shù)據(jù)庫中定義Sql計(jì)劃任務(wù),在集裝箱統(tǒng)計(jì)周期結(jié)束后一段時(shí)間內(nèi)執(zhí)行。
3.2.2 利用專用接口采集
適合原系統(tǒng)提供數(shù)據(jù)輸出接口的方式。例如,十八點(diǎn)統(tǒng)計(jì)系統(tǒng),可以依照其提供的統(tǒng)計(jì)數(shù)據(jù)輸出接口(接口定義為一系列SQL語句)格式要求,定義好需要輸出的統(tǒng)計(jì)數(shù)據(jù)表,在十八點(diǎn)統(tǒng)計(jì)系統(tǒng)完成當(dāng)日統(tǒng)計(jì)時(shí),自動(dòng)上傳到平臺(tái)數(shù)據(jù)庫。
3.2.3 嵌入式采集
適合于對原系統(tǒng)數(shù)據(jù)庫不了解,或者系統(tǒng)產(chǎn)生的數(shù)據(jù)不落在本地,但通過編寫代碼以其它方式抽取數(shù)據(jù)的情形。例如,票據(jù)系統(tǒng)的數(shù)據(jù)提取,由于數(shù)據(jù)文件加密乃至現(xiàn)在的網(wǎng)絡(luò)版,已經(jīng)不能從數(shù)據(jù)表層面進(jìn)行數(shù)據(jù)抽取??梢圆捎脙煞N方式:(1)編寫程序,在每日結(jié)賬后由人工再把票據(jù)錄入數(shù)據(jù)平臺(tái);(2)由外掛或嵌入式程序?qū)崿F(xiàn)系統(tǒng)數(shù)據(jù)實(shí)時(shí)采集。目前,采用第2種方式完成票據(jù)數(shù)據(jù)提取。其關(guān)鍵要求有如下3條:
(1)不能干擾原系統(tǒng)的運(yùn)行,盡量減小系統(tǒng)資源的占用。
(2)采集程序必須和原系統(tǒng)擁有一致的生命期,如果采集程序被終止而原系統(tǒng)繼續(xù)運(yùn)行或者原系統(tǒng)運(yùn)行后,采集程序未運(yùn)行,將導(dǎo)致采集數(shù)據(jù)不完整。
(3)采集程序在向數(shù)據(jù)平臺(tái)輸送數(shù)據(jù)時(shí),要有冗余措施,比如網(wǎng)絡(luò)中斷不能影響傳送采集數(shù)據(jù)的丟失。
采集程序工作流程如下:
(1)編寫票據(jù)系統(tǒng)監(jiān)視外掛程序,該程序隨系統(tǒng)啟動(dòng)。每20 s掃描系統(tǒng)進(jìn)程列表,發(fā)現(xiàn)目標(biāo)系統(tǒng)運(yùn)行后,檢查目標(biāo)進(jìn)程是否加載“嵌入程序動(dòng)態(tài)鏈接庫”,如未加載,監(jiān)視程序會(huì)提升自身權(quán)限為系統(tǒng)調(diào)試級(jí)別,打開目標(biāo)進(jìn)程句柄,向目標(biāo)進(jìn)程注入遠(yuǎn)程線程,如已加載,則等待下一次檢測。
(2)遠(yuǎn)程線程注入成功后,完成兩個(gè)任務(wù):a.執(zhí)行載入“動(dòng)態(tài)提取數(shù)據(jù)動(dòng)態(tài)鏈接庫”的操作,將包含實(shí)際提取代碼的動(dòng)態(tài)鏈接庫掛入目標(biāo)進(jìn)程;b.在目標(biāo)系統(tǒng)進(jìn)程空間中創(chuàng)建一個(gè)本地線程,開始掛載進(jìn)程內(nèi)消息鉤子(采用進(jìn)程內(nèi)消息鉤子的優(yōu)點(diǎn)是,比全局鉤子占用的資源更小,比如不會(huì)因執(zhí)行任務(wù)過重導(dǎo)致鼠標(biāo)鍵盤遲滯,CPU占用率過高),對目標(biāo)進(jìn)程的鼠標(biāo)鍵盤消息進(jìn)行監(jiān)視,當(dāng)截獲到打印鈕被按下,并且打印事件已處理完成的消息后,遍歷訪問指定窗口句柄,根據(jù)不同句柄所屬的窗口類,通過構(gòu)造相應(yīng)的消息(Windows中窗口間通信都是依靠消息進(jìn)行的,如WM_GETTEXT消息是Windows系統(tǒng)中要求獲取窗口標(biāo)題文本的消息)并發(fā)送給窗口句柄,從返回消息中提取出所需的內(nèi)容,并生成票據(jù)緩存文件存入磁盤。
(3)監(jiān)視外掛程序會(huì)創(chuàng)建獨(dú)立的線程定期監(jiān)視磁盤是否產(chǎn)生了新的采集文件,如果網(wǎng)絡(luò)正常,則確保向數(shù)據(jù)平臺(tái)正確傳送。
本系統(tǒng)于2014年3月初開始在柳州南車站進(jìn)行系統(tǒng)的調(diào)試以及試運(yùn)行,并對相關(guān)人員進(jìn)行培訓(xùn)和指導(dǎo)。系統(tǒng)試運(yùn)行之初就收到了很好的效果,由于采用了自動(dòng)采集與實(shí)時(shí)傳送,數(shù)據(jù)的及時(shí)性得到很大提高,用戶根據(jù)自己的需要獲取數(shù)據(jù),不再需要通過打電話請求遠(yuǎn)端的系統(tǒng)操作員查詢數(shù)據(jù),再將查詢結(jié)果用郵件發(fā)送回來,最后手工合成的繁瑣過程。因此獲得了一致的好評。
本系統(tǒng)利用現(xiàn)有的信息資源和網(wǎng)絡(luò)設(shè)施,結(jié)合運(yùn)用計(jì)算機(jī)數(shù)據(jù)共享優(yōu)勢以及計(jì)算機(jī)技術(shù)和數(shù)據(jù)庫技術(shù),把運(yùn)輸管理信息系統(tǒng)所有子系統(tǒng)的數(shù)據(jù)信息整合起來,進(jìn)行資源的再挖掘,形成一個(gè)綜合的數(shù)據(jù)信息庫,為用戶提供一個(gè)更為完整、準(zhǔn)確和綜合的車站公共數(shù)據(jù)平臺(tái),極大地提高了查詢數(shù)據(jù)的速度,也降低了查詢數(shù)據(jù)的難度,提高了系統(tǒng)的安全性。系統(tǒng)的研發(fā)可以給管理者提供綜合、完整和準(zhǔn)確的數(shù)據(jù)分析結(jié)果,輔助決策。
另外,本系統(tǒng)具有很好的擴(kuò)展性,公共數(shù)據(jù)平臺(tái)搭建好之后,通過數(shù)據(jù)導(dǎo)入、導(dǎo)出程序,從各個(gè)系統(tǒng)中導(dǎo)出數(shù)據(jù),數(shù)據(jù)充分共享,可以根據(jù)實(shí)際需要增加更多的統(tǒng)計(jì)和分析功能。本系統(tǒng)還具有很強(qiáng)的移植性,因?yàn)楦鬈囌鞠嚓P(guān)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)一致,只要稍作修改就可以移植到任何車站,推廣性強(qiáng),具有一定的開發(fā)價(jià)值。
[1]朱玉超,鞠 艷,王代勇. ASP.NET 項(xiàng)目開發(fā)教程[M].北京:電子工業(yè)出版社,2008.
[2]徐孝凱. C++語言基礎(chǔ)教程[M]. 北京:清華大學(xué)出版社,2006.
[3]尚俊杰、秦衛(wèi)中. ASP.NET 程序設(shè)計(jì)案例教程[M].北京:清華大學(xué)出版社,2005.
[4]陳 偉. SQL Server 2005數(shù)據(jù)庫應(yīng)用與開發(fā)教程[M].北京:清華大學(xué)出版社,2007.
責(zé)任編輯 方 圓
Development and application for Station Public Data Query System
FENG Lei
( China Academy of Railway Sciences, Beijing 100081, China )
Now the various application system were running in our station. Facing with the situation of independence among the various systems, lack of sharing, data acquisition inconvenience, it was necessary to develop Public Data Query System. Through fusing the essential data of each individual system, fully taking advantage of the correlation and availability of data, the problems of the data security and query eff i ciency were solved to provide more timely, accurate, complete data information and decision scheme for the station transport command staff. It would be more effectively to improve and optimize transportation organization and play a very good role in promoting production eff i ciency of station transport.
data query; system design; collection; application
U29∶TP39
A
1005-8451(2015)05-0021-03
2014-11-26
馮 磊,在讀碩士研究生。