徐國(guó)友,高文霞,劉 晶
(1. 民航職業(yè)技術(shù)學(xué)院 民航經(jīng)營(yíng)管理學(xué)院,廣東 廣州 510403;2. 民航職業(yè)技術(shù)學(xué)院 飛機(jī)維修工程學(xué)院,廣東 廣州 510403)
民航地區(qū)管理局原機(jī)場(chǎng)生產(chǎn)統(tǒng)計(jì)系統(tǒng)是在DOS平臺(tái)下開發(fā)的,數(shù)據(jù)庫(kù)采用Foxpro 2.0開發(fā)。隨著民航業(yè)的快速發(fā)展,航空運(yùn)輸總周轉(zhuǎn)量、貨郵運(yùn)輸量和旅客運(yùn)輸量的急劇增加,該系統(tǒng)逐漸暴露出諸多問題,已不能滿足現(xiàn)在的管理要求。原統(tǒng)計(jì)系統(tǒng)存在的問題主要表現(xiàn)在:技術(shù)落后,操作困難,數(shù)據(jù)需重復(fù)錄入;統(tǒng)計(jì)分析方式固定,統(tǒng)計(jì)報(bào)表樣式單一;民航地區(qū)管理局無法同步得到其管轄機(jī)場(chǎng)的生產(chǎn)統(tǒng)計(jì)數(shù)據(jù)。
為了解決上述問題,本課題組利用輕量級(jí)J2EE開發(fā)了一套新的民航機(jī)場(chǎng)生產(chǎn)統(tǒng)計(jì)系統(tǒng),客戶端采用智能客戶端[1-6](smart client)技術(shù),設(shè)計(jì)了2個(gè)數(shù)據(jù)庫(kù):中心數(shù)據(jù)庫(kù)和本地?cái)?shù)據(jù)庫(kù),中心數(shù)據(jù)庫(kù)采用Oracle軟件開發(fā),本地?cái)?shù)據(jù)庫(kù)采用Access軟件開發(fā),且實(shí)現(xiàn)了2個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步。民航地區(qū)管理局利用該統(tǒng)計(jì)系統(tǒng)可更好地對(duì)民航機(jī)場(chǎng)進(jìn)行科學(xué)管理和宏觀決策,且該統(tǒng)計(jì)系統(tǒng)得到了用戶一致好評(píng)。
民航機(jī)場(chǎng)生產(chǎn)統(tǒng)計(jì)系統(tǒng)采用三層體系架構(gòu),即數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和表示層,并在客戶端增加了數(shù)據(jù)本地存儲(chǔ)功能。服務(wù)器端程序采用Jbuilder軟件開發(fā),智能客戶端程序采用Delphi軟件開發(fā)。
智能客戶端技術(shù)是一種新型的客戶端技術(shù),將胖客戶端與瘦客戶端應(yīng)用程序的部署和可管理性的優(yōu)點(diǎn)結(jié)合起來。智能客戶端[3]具有以下特征:
1)利用本地資源。智能客戶端可利用客戶端硬件資源以及其它軟件資源,且可集成或協(xié)調(diào)其它客戶端應(yīng)用程序。
2)利用網(wǎng)絡(luò)資源。智能客戶端可通過網(wǎng)絡(luò)共享異地的服務(wù)和數(shù)據(jù),并通過網(wǎng)絡(luò)獲得資源和服務(wù)。
3)支持偶爾連接。智能客戶端可為偶爾連接到網(wǎng)絡(luò)的用戶提供服務(wù),從而使用戶在脫機(jī)、低帶寬或高延遲網(wǎng)絡(luò)的狀態(tài)下,繼續(xù)高效地工作。
4)支持智能安裝。智能客戶端能提供靈活的管理部署方式,當(dāng)系統(tǒng)運(yùn)行或位于后臺(tái)工作時(shí),對(duì)自身進(jìn)行智能更新。
5)支持多種客戶端設(shè)備。智能客戶端可提供自定義的客戶端環(huán)境,通過選擇合適平臺(tái),為運(yùn)行時(shí)所在設(shè)備提供適當(dāng)?shù)墓δ苤С帧?/p>
這些特征符合系統(tǒng)對(duì)客戶端的需求。
目前流行的大型數(shù)據(jù)庫(kù)開發(fā)軟件有SQL Server,DB2, Oracle, Sybase等,就其平臺(tái)的開放性、安全性、易操作性等方面做了比較后,本文采用Oracle軟件開發(fā)中心數(shù)據(jù)庫(kù)。由Oracle軟件開發(fā)的數(shù)據(jù)庫(kù)管理系統(tǒng)能在大部分系統(tǒng)平臺(tái)運(yùn)行,能支持不同的硬件結(jié)構(gòu),具有良好的伸縮性和移植性,有豐富的開發(fā)工具,且支持客戶機(jī)/服務(wù)器體系結(jié)構(gòu)及混合的體系結(jié)構(gòu),能夠滿足民航機(jī)場(chǎng)生產(chǎn)統(tǒng)計(jì)系統(tǒng)的要求。由于Access軟件具有界面友好、開發(fā)簡(jiǎn)單、單文件易于發(fā)布等優(yōu)點(diǎn),智能客戶端的本地?cái)?shù)據(jù)庫(kù)采用Access軟件開發(fā)。
采用輕量級(jí)J2EE作為本系統(tǒng)的開發(fā)平臺(tái)。輕量級(jí)J2EE是對(duì)傳統(tǒng)J2EE的簡(jiǎn)化,在保留傳統(tǒng)J2EE的應(yīng)用架構(gòu)、良好的可維護(hù)性和可擴(kuò)展性的基礎(chǔ)上,簡(jiǎn)化J2EE 應(yīng)用的開發(fā),降低J2EE 應(yīng)用的部署成本,并有多款第三方軟件能為多服務(wù)器集群和負(fù)載均衡提供有力支持,例如Websphere,Weblogic等。當(dāng)機(jī)場(chǎng)生產(chǎn)統(tǒng)計(jì)量不斷增加時(shí),可將本系統(tǒng)平滑地遷移到更好的硬件平臺(tái)。
系統(tǒng)用戶分為兩類:機(jī)場(chǎng)用戶和管理局用戶。機(jī)場(chǎng)用戶登錄智能客戶端完成本機(jī)場(chǎng)的生產(chǎn)數(shù)據(jù)錄入和查詢統(tǒng)計(jì),通過數(shù)據(jù)同步完成生產(chǎn)數(shù)據(jù)上報(bào)地區(qū)管理工作。管理局用戶登錄網(wǎng)頁(yè)客戶端,查看中心服務(wù)器數(shù)據(jù),并統(tǒng)計(jì)其管轄機(jī)場(chǎng)的生產(chǎn)統(tǒng)計(jì)報(bào)表。網(wǎng)頁(yè)客戶端也對(duì)機(jī)場(chǎng)用戶開放部分功能,如機(jī)場(chǎng)用戶可查看地區(qū)管理局發(fā)布的信息等。
民航機(jī)場(chǎng)生產(chǎn)統(tǒng)計(jì)系統(tǒng)體系架構(gòu)如圖1所示。
圖 1 系統(tǒng)體系架構(gòu)Fig.1 System architecture
智能客戶端的主要特點(diǎn)是智能升級(jí)。只需將新版本的程序文件發(fā)布在服務(wù)器對(duì)應(yīng)目錄中,客戶端將自動(dòng)發(fā)現(xiàn)最新版本的程序文件和應(yīng)用組件,并自動(dòng)下載更新。這樣能方便系統(tǒng)發(fā)布和更新,且可將最初的安裝程序最小化,便于客戶端部署。智能升級(jí)實(shí)現(xiàn)流程是:先獲取服務(wù)器端程序的版本號(hào),將其與本地版本號(hào)進(jìn)行比較,再生成需要更新的的文件清單,根據(jù)該清單從服務(wù)器端下載文件,最后更新本地程序。
智能客戶端充分利用本地操作系統(tǒng)豐富的界面元素,為用戶提供友好的操作界面,方便用戶操作。錄入進(jìn)出港數(shù)據(jù)界面采用關(guān)聯(lián)技術(shù),從而減輕錄入工作人員的工作量,降低出錯(cuò)率。例如:當(dāng)工作人員輸入機(jī)號(hào),程序?qū)⒆詣?dòng)查詢機(jī)號(hào)表,找到該機(jī)號(hào)的機(jī)型、最大座位、最大業(yè)載、可供座位和可供業(yè)載等數(shù)據(jù),并自動(dòng)填入相應(yīng)的輸入框。
為了解決部分機(jī)場(chǎng)用戶網(wǎng)絡(luò)狀況差,同時(shí)又需要快速錄入和統(tǒng)計(jì)本機(jī)場(chǎng)生產(chǎn)數(shù)據(jù)的問題,本文在客戶端增加了數(shù)據(jù)本地存儲(chǔ)功能。智能客戶端可直接對(duì)本地?cái)?shù)據(jù)庫(kù)進(jìn)行操作,加快了程序響應(yīng)速度,但同時(shí)也出現(xiàn)中心數(shù)據(jù)庫(kù)和本地?cái)?shù)據(jù)庫(kù)如何保持一致的問題。為解決數(shù)據(jù)同步的問題,本系統(tǒng)還開發(fā)了數(shù)據(jù)同步功能。
為實(shí)現(xiàn)數(shù)據(jù)同步功能,服務(wù)器端和客戶端采用的技術(shù)手段如下:服務(wù)器端實(shí)現(xiàn)了Sdatasync類,提供Download()和Upload()2個(gè)方法供客戶端調(diào)用;客戶端采用“多線程+Windows異步消息”的方式實(shí)現(xiàn),即運(yùn)行多個(gè)線程調(diào)用服務(wù)器端方法,通過異步消息協(xié)調(diào)各線程進(jìn)度,加快數(shù)據(jù)同步速度。將服務(wù)器Oracle數(shù)據(jù)庫(kù)表與本地Access數(shù)據(jù)庫(kù)表的格式設(shè)計(jì)成一致的結(jié)構(gòu),并在航班數(shù)據(jù)表中設(shè)置了一個(gè)長(zhǎng)整型字段,其字段名為“上傳時(shí)間”,用來記錄上傳服務(wù)器的流水號(hào),將其作為判斷數(shù)據(jù)同步的依據(jù)。若流水號(hào)字段被置空,則表示該記錄與服務(wù)器數(shù)據(jù)不同步;否則,表示該記錄已和服務(wù)器同步。因此,約定本地用戶在錄入新航班數(shù)據(jù)和修改航班數(shù)據(jù)時(shí),流水號(hào)字段被置空。
數(shù)據(jù)同步的設(shè)計(jì)思想是先下載,后上傳。具體實(shí)現(xiàn)步驟如下:先在本地?cái)?shù)據(jù)庫(kù)的航班表中獲取流水號(hào)的最大值,然后根據(jù)該值向服務(wù)器提出請(qǐng)求,要求服務(wù)器傳回中心數(shù)據(jù)庫(kù)的航班表中流水號(hào)大于該值的所有數(shù)據(jù)記錄;客戶端接收這些記錄后,再在本地航班表中查找“上傳時(shí)間”字段值為空的記錄,即新錄入或修改過的記錄,并將其上傳至服務(wù)器,服務(wù)器接收后,利用Oracle序列生成新的同步流水號(hào),并保存及上傳記錄,再將每條記錄對(duì)應(yīng)的流水號(hào)返回給客戶端,客戶端收到后,將其寫回本地?cái)?shù)據(jù)的相應(yīng)航班表中,以完成數(shù)據(jù)同步。
機(jī)場(chǎng)用戶在客戶端錄入的生產(chǎn)數(shù)據(jù),通過數(shù)據(jù)同步功能上報(bào)地區(qū)管理局,從而使得地區(qū)管理局可及時(shí)獲得其管轄機(jī)場(chǎng)的生產(chǎn)統(tǒng)計(jì)數(shù)據(jù)。
采用Delphi軟件的第三方控件FastReport進(jìn)行統(tǒng)計(jì)分析報(bào)表的設(shè)計(jì)。靈活報(bào)表模塊包含3個(gè)功能:
1)設(shè)計(jì)報(bào)表樣式,可根據(jù)用戶的需求,設(shè)計(jì)和保存報(bào)表樣式;
2)顯示報(bào)表,能根據(jù)報(bào)表設(shè)計(jì)樣式顯示報(bào)表;
3)導(dǎo)出報(bào)表,可將顯示的報(bào)表導(dǎo)出為PDF或EXCEL文件形式。
通過報(bào)表設(shè)計(jì)模塊,可生成不同類型的統(tǒng)計(jì)分析報(bào)表。例如:設(shè)定不同時(shí)間段,生成日?qǐng)?bào)、月報(bào)和年報(bào)等報(bào)表;根據(jù)不同航線分類,生成國(guó)內(nèi)航線、地區(qū)航線和國(guó)際航線等報(bào)表;設(shè)定不同統(tǒng)計(jì)方式,生成以公司、機(jī)型、機(jī)號(hào)和航班等為單位的報(bào)表。
由于地區(qū)管理局和管轄機(jī)場(chǎng)都存有部分歷史數(shù)據(jù),因此,需將這些歷史數(shù)據(jù)批量導(dǎo)入本系統(tǒng)中;另外,部分機(jī)場(chǎng)用戶繼續(xù)使用原系統(tǒng)或自主開發(fā)系統(tǒng)來錄入數(shù)據(jù),也需將這部分?jǐn)?shù)據(jù)導(dǎo)入本系統(tǒng)中。為解決以上問題,本系統(tǒng)設(shè)計(jì)了數(shù)據(jù)導(dǎo)入功能,從而避免機(jī)場(chǎng)用戶重復(fù)錄入數(shù)據(jù)。同樣,如果機(jī)場(chǎng)用戶使用新統(tǒng)計(jì)系統(tǒng)錄入數(shù)據(jù),也可利用數(shù)據(jù)導(dǎo)出功能將數(shù)據(jù)按民航局所要求的格式導(dǎo)出,以便上報(bào)。
數(shù)據(jù)導(dǎo)入與導(dǎo)出是基于Delphi的ADO控件實(shí)現(xiàn)的。數(shù)據(jù)導(dǎo)入實(shí)現(xiàn)了3個(gè)類:DataIMP, IMPAdapter和IMPAdapterImplement。DataIMP是導(dǎo)入控件的界面,用戶通過該界面指定數(shù)據(jù)源的類型、連接方式、需導(dǎo)入的表或視圖、對(duì)應(yīng)字段等。導(dǎo)入的不同類型數(shù)據(jù)庫(kù)既存在相同點(diǎn),又存在著差異。相同點(diǎn)是能通過ADO組件讀寫數(shù)據(jù),并將其相同的屬性構(gòu)成IMPAdapter類,而IMPAdapter能被DataIMP調(diào)用,用來適配不同類型的數(shù)據(jù)庫(kù)。差異是建立連接時(shí)指定的參數(shù)不同,例如:SQL Server需要指定服務(wù)器網(wǎng)絡(luò)地址、服務(wù)器名、用戶名和密碼;Access需要指定數(shù)據(jù)庫(kù)文件路徑、訪問密碼;另外,不同數(shù)據(jù)庫(kù)在實(shí)現(xiàn)數(shù)據(jù)類型時(shí)不完全相同,相應(yīng)的在建立數(shù)據(jù)庫(kù)表時(shí),創(chuàng)建SQL語(yǔ)句也不盡相同。IMPAdapterImplement類是對(duì)IMPAdapter類的繼承,解決不同類型數(shù)據(jù)源的數(shù)據(jù)在導(dǎo)入中存在的差異性。
數(shù)據(jù)導(dǎo)出同樣也實(shí)現(xiàn)了3個(gè)類:DataEXP,EXPAdapter和EXPAdapterImplement。DataEXP是導(dǎo)出控件的界面;EXPAdapter是數(shù)據(jù)導(dǎo)出適配器,用于適配不同的數(shù)據(jù)庫(kù);EXPAdapterImplement是對(duì)適配器的繼承。
針對(duì)原民航地區(qū)管理局原機(jī)場(chǎng)生產(chǎn)統(tǒng)計(jì)系統(tǒng)存在的問題,本課題組開發(fā)了一個(gè)新的機(jī)場(chǎng)生產(chǎn)統(tǒng)計(jì)系統(tǒng),以滿足地區(qū)管理局和機(jī)場(chǎng)用戶的機(jī)場(chǎng)生產(chǎn)統(tǒng)計(jì)需求。本統(tǒng)計(jì)系統(tǒng)投入使用后,得到了用戶的一致好評(píng)。隨著機(jī)場(chǎng)生產(chǎn)業(yè)務(wù)量的不斷增加,本系統(tǒng)的優(yōu)勢(shì)會(huì)得到更充分的體現(xiàn),因其能平滑地遷移到更好的硬件平臺(tái)。
[1] 劉建偉,林延君,王家寶. 基于智能客戶端技術(shù)的售票系統(tǒng)改良方案[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2006(8):2-5.Liu Jianwei,Lin Yanjun,Wang Jiabao. The Implement of the Improved Ticketing Systems Based on Smart-Client Technology[J]. Computer Systems Applications,2006(8):2-5.
[2] 湯 靜. 智能客戶端研究及應(yīng)用[D]. 長(zhǎng)沙:長(zhǎng)沙理工大學(xué),2011.Tang Jing. The Research and Application of Smart Client[D]. Changsha:Changsha University of Science and Technology,2011.
[3] 邢承杰,張治坤. 管理信息系統(tǒng)的新架構(gòu):智能客戶端[J]. 實(shí)驗(yàn)技術(shù)與管理,2011,28(5):219-221.Xing Chengjie,Zhang Zhikun. A New Architecture of Management Information System:Smart Client[J].Experimental Technology and Management,2011,28(5):219-221.
[4] 翼慶斌,靳 禎. 基于智能客戶端技術(shù)的系統(tǒng)升級(jí)及應(yīng)用[J]. 中北大學(xué)學(xué)報(bào):自然科學(xué)版,2010,31(1):23-28.Yi Qingbin,Jin Zhen. Upgrading and Application of System Based on Smart Client Technology[J]. North University of China:Natural Science Edition,2010,31(1):23-28.
[5] 侯少林. J2EE輕量級(jí)架構(gòu)的研究與應(yīng)用[D]. 成都:電子科技大學(xué),2010.Hou Shaolin. The Research and Application of Light-Weight J2EE Frameworks[D]. Chengdu:University of Electronic Science and Technology of China,2010.
[6] 代俊雅. 基于智能客戶端的采血管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 太原:中北大學(xué),2007.Dai Junya. Design and Realization of Blood Collection Management System Based on Smart Client[D]. Taiyuan:North University of China,2007.
[7] 陳 偉. 基于J2EE架構(gòu)的協(xié)同辦公系統(tǒng)設(shè)計(jì)與開發(fā)[D].廣州:華南理工大學(xué),2010.Chen Wei. Design and Development of Coordination Office System Base of J2EE Architecture[D]. Guangzhou:South China University of Technology,2010.
[8] 聶錦波. 基于J2EE框架的移動(dòng)網(wǎng)上商城運(yùn)營(yíng)管理系統(tǒng)的設(shè)計(jì)[D]. 廣州:華南理工大學(xué),2011.Nie Jinbo. The Designing of Mobile Online Store Operation and Management System Based on J2EE Framework[D].Guangzhou:South China University of Technology,2011.
[9] 李 洋,孫永維,許 冰,等. 基于Ajax, Structs,Hibernate和Spring的J2EE架構(gòu)[J]. 吉林大學(xué)學(xué)報(bào):信息科學(xué)版,2011,29(6):576-584.Li Yang,Sun Yongwei,Xu Bing,et al. J2EE Based on Ajax, Struts, Hibernate and Spring[J]. Journal of Jilin University:Information Science Edition,2011,29(6):576-584.