張華偉,周桂林
(中國南方航空股份公司北京分公司,北京 101318)
中國南方航空公司北京分公司是一個年輕的公司,目前南航在首都機場每日起降220余架次。這對于南航北京分公司年輕的飛機維修隊伍是一個巨大的挑戰(zhàn)。飛機維修任務(wù)量大、時間集中、機型繁多和維修人員少、隊伍年輕、缺少信息化手段成為主要矛盾。此前,因信息不暢時有漏接飛機事件發(fā)生。傳統(tǒng)的維修調(diào)度和現(xiàn)場生產(chǎn)控制流程如下:
1)MCC(維修控制中心)主控人員監(jiān)控運行網(wǎng),獲知飛機運行動態(tài)信息;
2)MCC副控根據(jù)機型預(yù)分配任務(wù);
3)MCC副控準(zhǔn)備工卡,對講機聯(lián)系車間領(lǐng)工卡;
4)車間工卡員領(lǐng)工卡,安排生產(chǎn)人員;
5)車間生產(chǎn)人員完成工作,簽完放行單,對講機通知MCC主控。
該流程存在如下弊端:
1)信息傳遞主要依賴于電話和對講機,存在不可回溯性;
2)生產(chǎn)調(diào)度和工卡準(zhǔn)備完全依賴人工,存在不科學(xué)不合理,信息不全面,存在人工失誤的可能;
3)信息缺少必要的回饋,MCC很難監(jiān)控生產(chǎn)人員的工作進(jìn)度;
4)飛機時間的變更通知完全依賴于MCC的人工監(jiān)控,存在漏通知的可能。
借助信息化手段,針對傳統(tǒng)業(yè)務(wù)流程進(jìn)行改造,如圖1所示。
1)系統(tǒng)按飛機進(jìn)港和出港把來自SOC系統(tǒng)的動態(tài)數(shù)據(jù)匹配起來。并自動填入來自機場的停機位信息。
2)系統(tǒng)自動把前后4 h內(nèi)航班維修任務(wù)的進(jìn)行狀態(tài)呈現(xiàn)給MCC,并以不同顏色顯示需關(guān)注的內(nèi)容。
3)系統(tǒng)根據(jù)機型自動把任務(wù)預(yù)分配給相應(yīng)的車間。MCC可人工進(jìn)行調(diào)整。
4)工卡員只要雙擊1架飛機,就可以進(jìn)行派工。系統(tǒng)自動彈出人員列表供選擇,維護人員和具有放行能力的人員自動分開。系統(tǒng)對人員進(jìn)行如下過濾:簽入人員,具有該機型工作能力的人員,具有相應(yīng)維護級別能力的人員;并把當(dāng)前無任務(wù)的人員排在前面,有任務(wù)的人員排在后面,同時標(biāo)出所在停機位和派工時間。
5)工卡員雙擊飛機號對應(yīng)工卡欄,系統(tǒng)自動打印任務(wù)單和對應(yīng)工卡。任務(wù)單上具有如下信息:飛機信息、航班信息、停機位、預(yù)達(dá)時間、起飛時間、飛機主要配件件號、飛行中的故障信息等。
6)維護人員領(lǐng)取工卡,工卡員雙擊置入領(lǐng)卡時間。維護人員到達(dá)停機位要通過對講機向MCC報告,MCC置入到位時間。
7)放行人員簽字完畢,通過對講機呼叫MCC,MCC雙擊飛機號對應(yīng)放行時間欄,系統(tǒng)自動置入放行時間。
8)維護人員完成工作后將工卡交回,工卡員雙擊交卡時間欄置入時間,完成工作。
上述流程中各個時間點和完成狀態(tài)系統(tǒng)均有記錄,并通過相應(yīng)的監(jiān)控界面展示給相應(yīng)的崗位,如圖2所示。如果有個別關(guān)鍵點沒有及時完成或者機位沖突等需要系統(tǒng)提醒或警告用戶時,系統(tǒng)采用基于顏色的警告方案。該警告系統(tǒng)采用國際標(biāo)準(zhǔn)四級警告,自輕至重依次為藍(lán)色、黃色、橙色和紅色。用戶在使用系統(tǒng)時,只需關(guān)注顏色點即可不會漏掉關(guān)鍵工作,大量節(jié)約人力,避免人為差錯。
系統(tǒng)核心數(shù)據(jù)庫是運行數(shù)據(jù)庫,因本系統(tǒng)是維修控制系統(tǒng),需其他相關(guān)系統(tǒng)和數(shù)據(jù)的支持,所以會涉及到一系列的數(shù)據(jù)接口。如圖3所示,首先需要南航SOC數(shù)據(jù)的支撐,本系統(tǒng)用到的飛機執(zhí)行航班的動態(tài)數(shù)據(jù)主要來源于此;此外需與地面運行服務(wù)系統(tǒng)BOSS相互交換數(shù)據(jù);南航飛機資料庫提供飛機的基本信息和主要航材件號;維修單位數(shù)據(jù)庫提供航線各個航站所具備的機務(wù)維護資質(zhì)信息;維修人員數(shù)據(jù)庫提供機務(wù)維修人員的維修能力和護照信息;航線工卡數(shù)據(jù)庫提供飛機航線維護的各種工卡。系統(tǒng)按照業(yè)務(wù)邏輯組織各種數(shù)據(jù),呈獻(xiàn)給用戶的是一個完整的數(shù)據(jù)視圖,涵蓋用戶工作流程中所需要的主要信息。
圖2 系統(tǒng)警告Fig.2 Warning of system
系統(tǒng)由現(xiàn)場運行,業(yè)務(wù)邏輯層,數(shù)據(jù)訪問、數(shù)據(jù)接口層,數(shù)據(jù)庫服務(wù)器4部分構(gòu)成,如圖4所示。
現(xiàn)場運行的主要功能是現(xiàn)場信息傳遞及現(xiàn)場控制,主要包括MCC監(jiān)控頁面、車間監(jiān)控頁面、現(xiàn)場管理頁面、外站運行監(jiān)控頁面等,實現(xiàn)現(xiàn)場運行信息在各個頁面間快速、準(zhǔn)確傳遞,支持現(xiàn)場工作人員監(jiān)控飛機運行狀態(tài)、生產(chǎn)調(diào)度、車間人員工作分配、車間工作情況監(jiān)控等。
業(yè)務(wù)邏輯層,主要負(fù)責(zé)系統(tǒng)的數(shù)據(jù)集成,工作流程的系統(tǒng)實現(xiàn),提供后臺維護等,將從其他系統(tǒng)提取的數(shù)據(jù)進(jìn)行整合,實現(xiàn)相應(yīng)的匹配算法、排序算法等,支持后臺維護人員、機型數(shù)據(jù),為現(xiàn)場控制提供人員、機隊等詳細(xì)信息。
數(shù)據(jù)訪問層、數(shù)據(jù)接口層提供數(shù)據(jù)的高效訪問。數(shù)據(jù)庫服務(wù)器采用SQL Server2005為數(shù)據(jù)存儲提供支持。
本系統(tǒng)采用微軟.Net技術(shù),使用C#語言通過Visual Studio 2008 R1實現(xiàn)。系統(tǒng)是采用B/S(瀏覽器/服務(wù)器)架構(gòu)的Web系統(tǒng),為了加強操作和交互性及用戶體驗,系統(tǒng)使用了大量的AJAX和JavaScript技術(shù)。
運行數(shù)據(jù)庫采用微軟的SQL Server 2005,微軟.Net提供了一系列的數(shù)據(jù)訪問技術(shù),特別是針對SQL Server數(shù)據(jù)庫做了優(yōu)化。其中ADO.NET Entity Framework是最新推出的以ADO.NET為基礎(chǔ)所發(fā)展出來的對象關(guān)系映射(O/R Mapping)解決方案,如圖5所示。
Entity Framework利用了抽象化數(shù)據(jù)結(jié)構(gòu)的方式,將每個數(shù)據(jù)庫對象都轉(zhuǎn)換成應(yīng)用程序?qū)ο螅╡ntity),而數(shù)據(jù)字段都轉(zhuǎn)換為屬性(property),關(guān)系則轉(zhuǎn)換為結(jié)合屬性(association),讓數(shù)據(jù)庫的E/R模型完全地轉(zhuǎn)成對象模型,如此讓程序設(shè)計師能用最熟悉的編程語言來調(diào)用訪問。而在抽象化的結(jié)構(gòu)之下,則是高度集成與對應(yīng)結(jié)構(gòu)的概念層、對應(yīng)層和儲存層,以及支持Entity Framework的數(shù)據(jù)提供者(provider),讓數(shù)據(jù)訪問工作得以順利與完整的進(jìn)行[1-2]。
1)概念層:負(fù)責(zé)向上的對象與屬性顯露與訪問。概念層定義了對象模型(object model),讓上層的應(yīng)用程序可以如面向?qū)ο蟮姆绞皆L問數(shù)據(jù),概念層結(jié)構(gòu)使用CSDL(conceptualschemadefinitionlanguage)語言定義。
2)對應(yīng)層:將上方的概念層和底下的儲存層的數(shù)據(jù)結(jié)構(gòu)對應(yīng)在一起。對應(yīng)層結(jié)構(gòu)使用MSL(mapping specification language)語言定義。
3)儲存層:依不同數(shù)據(jù)庫與數(shù)據(jù)結(jié)構(gòu)而顯露出實體的數(shù)據(jù)結(jié)構(gòu)體,和Provider一起,負(fù)責(zé)實際對數(shù)據(jù)庫的訪問和SQL的產(chǎn)生。儲存層結(jié)構(gòu)是負(fù)責(zé)與數(shù)據(jù)庫管理系統(tǒng)(DBMS)中的數(shù)據(jù)表做實體對應(yīng)(physical mapping),它使用 SSDL(storage schema definition language)語言定義。
LINQ(language integrated query)是 Visual Studio 2008中的領(lǐng)軍人物。借助于LINQ技術(shù),可以使用一種類似SQL的語法來查詢?nèi)魏涡问降臄?shù)據(jù)。目前為止LINQ所支持的數(shù)據(jù)源有SQL Server、XML以及內(nèi)存中的數(shù)據(jù)集合。開發(fā)人員也可以使用其提供的擴展框架添加更多的數(shù)據(jù)源,例如MySQL、Amazon,甚至是Google Desktop。
使用LINQ以完全面向?qū)ο蟮姆绞讲僮鱽碜詫嶓w對象模型中的對象集,從而滿足業(yè)務(wù)邏輯的需要[1-2]。
基于飛機號的進(jìn)港航班和出港航班的智能匹配是本系統(tǒng)的關(guān)鍵邏輯之一。
從SOC獲取的航班信息是以航段為單位,即一個進(jìn)港航班、一個出港航班分別是一條信息,現(xiàn)場控制系統(tǒng)是基于對飛機的,需將進(jìn)、出港航班以飛機號進(jìn)行匹配,將一次進(jìn)港航班和一次出港航班聯(lián)結(jié)為一條完整的進(jìn)出港航班信息,該信息的前半部分是進(jìn)港航班數(shù)據(jù),后半部分是出港航班數(shù)據(jù)。為此,根據(jù)航班情況設(shè)計匹配算法如下。
1)1架飛機1天只執(zhí)飛1個航班。就以該航班為基礎(chǔ),在系統(tǒng)中新建一條信息。
2)1架飛機1天執(zhí)飛多次航班。分幾種情況:①如果沒有前飛,以出港航班為基礎(chǔ)新建一條信息。②如果沒有后續(xù)航班,以進(jìn)港航班為基礎(chǔ)新建一條信息。③其他情況,以一次進(jìn)港,一次出港2個航班為基礎(chǔ),創(chuàng)建一條包括進(jìn)出港航班數(shù)據(jù)的信息。
以1架飛機為例,系統(tǒng)從SOC提取出該飛機今天執(zhí)飛航班數(shù)量,并按預(yù)計起飛時間升序排序,判斷第1個航班是進(jìn)港還是出港,如果是出港,就以該航班為基礎(chǔ)在系統(tǒng)新建一條信息。如果是進(jìn)港航班,判斷是否有后續(xù)航班,如果沒有,就將該航班以一條信息存進(jìn)系統(tǒng);如果有,就以最近出港航班匹配進(jìn)港航班并存進(jìn)系統(tǒng);然后判斷是否還有進(jìn)港航班,如此循環(huán),直到所有航班匹配完成。
為了更好地關(guān)注當(dāng)前進(jìn)出港航班信息,將航班進(jìn)行排序是需要考慮的重要問題之一。系統(tǒng)按照未進(jìn)港航班按預(yù)計到達(dá)時間排序,進(jìn)港后按預(yù)計起飛時間排序的原則,設(shè)計了智能排序算法,以保證將當(dāng)前需要關(guān)注的進(jìn)出港航班信息有序地呈現(xiàn)在用戶面前。其核心就是設(shè)定時間變量,在航班進(jìn)港時,將時間變量置為進(jìn)港預(yù)計到達(dá)時間,航班進(jìn)港后,將時間變量置為出港預(yù)計起飛時間。
在系統(tǒng)中,有一部分特殊航班需要特別關(guān)注,那就是跨日期航班。對于這類航班,首先要解決的是排序問題,采用了如下解決方案:
在系統(tǒng)中設(shè)定一個時間點,如凌晨3:00,在日歷天的當(dāng)天,判斷當(dāng)前和時間點的關(guān)系,如果當(dāng)前時間大于時間點,則取當(dāng)天的航班和日歷天明天的航班信息,并將明天的航班時間加24 h;如果當(dāng)前時間小于時間點,則取日歷天昨天的航班和當(dāng)天的航班,并將今天的航班時間加24 h。這樣就解決了跨日期航班的排序問題。
為了改善用戶體驗,實現(xiàn)類似于桌面系統(tǒng)一樣的快捷操作,系統(tǒng)使用了大量的AJAX和JavaScript技術(shù)。
由于系統(tǒng)的實時性要求比較高,使用了AJAX技術(shù),用JavaScript發(fā)送一個XmlHttpRequest給服務(wù)器,然后再用傳回的數(shù)據(jù)通過JavaScript實現(xiàn)頁面的局部刷新,減輕和服務(wù)器交換數(shù)據(jù)的壓力,減少帶寬,提高系統(tǒng)運行效率[3-4]。
系統(tǒng)通過重寫Render方法、創(chuàng)建公共跳轉(zhuǎn)頁面等方法,用JavaScript技術(shù)實現(xiàn)了點擊、雙擊等類似于桌面系統(tǒng)的快捷操作。用戶能方便地通過點擊、雙擊等查看重要的提示信息、與系統(tǒng)交互,如各起降機場相關(guān)信息、執(zhí)飛航班飛機詳細(xì)參數(shù)等。
應(yīng)用JavaScript實現(xiàn)的懸浮導(dǎo)航欄,不僅方便用戶操作,更使整體界面簡潔明了,提高了用戶體驗。
飛機維修現(xiàn)場控制運行系統(tǒng)的成功開發(fā)和推廣,為進(jìn)一步實現(xiàn)地面運行控制全面信息化奠定了基礎(chǔ),必將為民航信息化注入新的生機與活力。
[1]哈密爾頓.ADO.NET 3.5經(jīng)典實例[M].北京:機械工業(yè)出版社,2009.
[2]張 駿.ADO.NET數(shù)據(jù)庫應(yīng)用開發(fā)[M].北京:機械工業(yè)出版社,2008.
[3]章產(chǎn)民.ASP.NET3.5AJAX客戶端編程精選166例[M].北京:科學(xué)出版社,2009.
[4]馬勞克林.深入淺出Ajax[M].南京:東南大學(xué)出版社,2008.