屈曉淵,張 峰
(榆林學院 信息工程學院,陜西 榆林 719000)
隨著航空業的發展,航空運輸業正向全面數字化方向發展。無論是航空運營還是維修,數字技術已在各方面大顯身手。為了使數字信息發揮更大作用,航空公司、飛機制造商、設備供應商、維修企業和軟件公司之間正在通力合作。隨著維修外包業務的增長、航空公司開始廣泛采用電子飛行包(EFB)、電子飛行日志(ELB)等工具,數字信息的交流越來越廣,相應的航材數據交換和交易需求應運而生。所以開發一套基于航材電子交易系統以滿足航空公司和供應商之間的需求。
為了實現協調工作,提高工作效率,需要實現航空公司與航材供應商之間航材數據共享和航材交易的需求。以統一的格式收集、分析和交換這些航材信息,可提高效率,降低成本和減少差錯。航空公司、飛機制造商和航材供應商將擁有更多、更精確的數據,能更快和更容易地從事各項工作。各航空公司之間航材數據應能在異構數據庫之間進行數據交易,采用基于XML的異構數據庫數據交換技術能夠滿足這種數據交換需求[1]。
開發的軟件是簡易的航材交易系統,以廣大航空公司采購航材人員為主要服務對象。提供良好的用戶界面,實現與用戶的交流,減輕采購部門在航材管理等工作方面的工作量。航材數據交易網是面向航空器制造商、航空器運營人、航空器材供應商、航空器及部件維修廠商之間進行航材信息交換的商務平臺。該系統的目標是通過減少工作人員在信息交換時重復輸入信息的工作量,改善和提高航材供應鏈各環節的工作效率。系統功能總體結構如圖1所示。
如今基于互聯網的電子商務系統越來越流行。該系統是一個在互聯網上進行航材部件需求信息發布和部件詢價以及建立客戶關系的電子商務系統。電子部件維修商可以通過這個電子商務系統發布自己的需求信息。部件供應商可以發布自己的出售信息[2]。

圖1 系統功能結構Fig.1 Structure of system function
維修商通過該系統的用戶界面,可以查看其他用戶發布的求購信息,也可以查找部件供應商,加入到自己的聯系人通訊錄中。維修商可以注冊公司的信息。給自己的客戶發布部件詢價單,以查詢所需求的部件價格。部件供應商收到詢價格單后,進行報價處理。本系統結構示意圖如圖2所示。

圖2 系統功能結構Fig.2 System structure
據以上分析,得出程序的主要用例圖,如圖3所示。主要的 角 色 (Actor)包 括 企 業 管 理 員 (Administrator)、 企 業 用 戶(Customer)、程序系統(System)和數據庫(Database)。

圖3 交易用例圖Fig.3 Use case diagram of transaction
用例圖分析了該應用系統的主要功能需求,這些需求是設計開發的依據。下面開始分析航材交易系統的架構設計。整個系統架構(除了客戶端數據采集系統)基于J2EE技術體系設計,客戶端數據采集系統采用的是桌面單機應用程序。
J2EE 體系包括 JSP、Servlet、EJB、Web Service 等多項技術。這些技術的出現給Web應用開發提供了一個非常有競爭力的選擇。怎樣把這些技術組合起來,形成一個適應項目需要的穩定架構是項目開發過程中一個非常重要的步驟[3-4]。
一個成功的軟件需要有一個成功的架構,但軟件架構的建立是一個復雜而又持續改進的過程,軟件開發者們不可能對不同的項目做不同的架構,而總是盡量重用以前的架構,或開發出盡量通用的架構方案[5],Struts就是其中之一,Struts是流行的基于J2EE的架構方案,其他常用的基于J2EE的架構方案還有Hibernate、Spring等。
本系統嚴格按MVC模式設計,按J2EE分層設計的理念,將中間層嚴格分成業務邏輯層、DAO層和數據持久層等。MVC層的控制器絕對禁止持久層訪問,甚至不參與業務邏輯的實現。表現層采用傳統JSP技術。JSP技術結合Struts的標簽庫,讓應用的表現層層次清晰,可讀性比較好[6]。本系統層次架構如圖4所示,架構模型如圖5所示。

圖4 系統層次架構圖Fig.4 Framework of system level structure

圖5 架構模型Fig.5 Frame model
系統設計是在系統分析的基礎上由抽象到具體的過程。主要目標是將系統分析階段所提出的反映了信息需求的系統邏輯方案轉換成可以實施的基于計算機與通信系統的物理(技術)方案,進行系統的總體設計和各子模塊的設計,實現基于B/S多層結構的科技管理信息系統,為下一階段系統實施提供必要的技術資料。
業務實體在內存中表現為實體域對象,在數據庫中表現為關系數據。實現業務實體包括以下內容:
1)設計域模型,創建域模型實體對象。
2)設計關系數據模型。
3)創建對象-關系映射文件。
其中,前兩項適用于大多數由持久化數據驅動的應用程序,最后一項是特定于Hibernate應用的。不同的實現方式可能需要不同的步驟。
該系統應用中的業務實體包括企業(BspCorp),用戶(BspUser),通訊錄(BspMySplContact),公司認證(BspCorpSpl),詢價單 (BspInq), 詢價單涉及航材 (BspInqParts), 公告信息(BspMessage)。下面將詳細介紹這些實體模型含義。
1)BspCorp 代表一個公司實體,主要屬性包括企業代碼(corpid)、中文企業(corpname)、英文企業名稱(corpnameEn)、國家(nation)、企業地址(mad_cn)、電話號碼(telnum)、聯系人(contact)等。
2)BspUser 代表一個用戶實體,主要包括用戶標識(usernbr)、用戶名(fname)、用戶密碼(password)、電子郵件、用戶狀態、聯系地址、聯系電話等。
3)BspMySplContact 代表了一個聯系人通訊錄實體,主要屬性包括我的代碼(myid)、我的聯系人的代碼(contid)、聯系人姓名、聯系人企業代碼、聯系人傳真、聯系人電話等。
4)BspCorpSpl 代表一個已認證公司實體,主要屬性包括企業代碼(corpid)、供應商代碼(spl)、有效日期(LDATE)、備注等。
5)BspInq 代表一個詢價單,主要屬性包括詢價記錄代碼(iid)、用戶代碼(buyerid)、詢價日期(cdate)、 報價單狀態(status)、備注等。
6)BspInqParts 代表一個詢價單涉及航材實體,主要屬性包括詢價記錄代碼(iid)、件號(pnr)、制造商代碼(mfr)、關鍵字(keyw)、采購數量(qut)、計量單位代碼、狀態等。
7)BspMessage 代表一個公告信息實體,主要屬性包括標識(id)、主題(sbj)、信息類型(mty)、內容(cont)、發布日期(cdate)、有效期(exday)、截止日期(exdate)、聯系人(contact)、聯系方式等。
BspCorp與BspUser之間是一對多的關系,一個企業可以注冊多個員工賬號,BspUser和BspMySplContact之間是一對多的關系,一個用戶可以有多個聯系人。BspUser與Bsp-CorpSpl之間是一對多的關系,一個用戶可以認證多個公司。BspInq與BspInqParts之間是一對多的關系,一個詢價單中可以包括多個航材。BspInq與BspUser之間是多對一的關系,多個詢價單可對應一個用戶。
系統的關系數據模型如圖6所示。

圖6 系統的關系數據模型圖Fig.6 Relational data model of system
系統訪問控制層采用Spring的Action作為用戶訪問控制器,Spring的Action實現非常簡單,通過繼承Spring的Action基類重載execute方法,并在該方法里調用業務邏輯組件的業務方法。通過上述分析,在本系統中可以發現所有的Action有個共同之處是都需要調用業務邏輯組件。而在分析服務層時,業務邏輯組件統一封裝成了工廠類ManagerFactory,所以定義一個基類BaseAction,讓所有的Action都從基類派生。BaseAction基類代碼如下所示。

在本系統中,大多模塊需要驗證用戶是否登錄系統,所以為所有登錄驗證的Action設計一個安全控制基類SecureValid-BaseAction,在SecureValidBaseAction類中的execute方法中,首先檢查用戶是否己登錄,如果沒有登錄,則將用戶導向登錄頁面,否則執行todoExecute邏輯。todoExecute方法是在SecureValidBaseAction定義的抽象方法,該方法與一般的Action類的execute方法類似,有相同的參數。SecureValidBaseAction的實現類不再執行execute方法,而是實現todoExecute方法。
在注冊公司實體時,必須同時為公司實體注冊一名管理員賬戶。管理員能夠管理其公司實體下的用戶,用戶注冊主頁面顯示當前已注冊的公司信息,如用戶所在的公司已注冊,用戶可選擇注冊個人用戶信息,如果用戶所在的公司還沒有注冊,則需要選注冊公司信息。用戶注冊流程如圖7所示。

圖7 用戶注冊流程圖Fig.7 Flow chart of user registration
用戶可以發送詢價信息給自己的聯系人、已認證的公司及所有公司,并可以查看已發送的詢價單,用戶也可以保存詢價單為草稿,暫不發給用戶,等編輯好詢價后再發給用戶。用戶也可以刪除草稿和取消詢價。在該系統中,供應商根據收到的詢價信息進行報價格給詢價的詢價人,詢價人在收到報價單后,把所需的部件加入到自己的采購清單中,形成定單,發給供應商。供應商在收到定單后,雙方進行確認,最后形成采購合同,實現流程如圖8所示。

圖8 詢價流程圖Fig.8 Flow chart of inguiry
依據上述的基本原理,基于J2EE平臺下設計并實現了航材交易系統,該原型系統實現了用戶登錄和注冊、公告信息發布、詢價單管理、報價單管理等。公告信息發布頁面主要為訪問BSP的用戶提供一個發布求購/出售等信息的平臺。用戶可以按照標題查找相關信息。發布公司信息界面如圖9所示。用戶可以發送詢價信息給自己的聯系人、已認證的公司及所有公司。并可以查看已發送的詢價單,用戶也可以保存詢價單為草稿,暫不發給用戶,等編輯好詢價后再發給用戶。用戶也可以刪除草稿和取消詢價。新建詢價單界面如圖10所示。

圖9 公告信息Fig.9 Notice information

圖10 新建詢價單頁面Fig.10 Adding inquiry UI
針對航材數據交易、交換的環境復雜度高、信息化程度不一致、數據模式多樣化等特點,本文根據航空公司信息化建設的現狀,采用了Struts、Spring、Hibernate技術開發航材數據交易系統,在功能上力求滿足各航空公司利用Internet實現公司航材數據交易信息處理的要求。通過建立基于Java EE的航材數據交易系統,實現航空公司航材管理的高效和低成本,提高各航空公司航材管理工作效率,達到人、財、物三個方面的人盡其才、物盡其用、開源節流的目的,為各航空公司的飛機維修提供良好的航材保障。目前基于該方案開發的系統已經在國內某航空公司安裝使用,今后將根據用戶的反饋繼續完善。
[1]Mohieldin T O,Tiwari S N.Numerical study of 2D dual-mode scram jetcombustion part1:Cold flowanalysis[R].AIAA 2003-7036.
[2]龔瑜,江紅,黃永.基于Struts的Web開發[J].計算機與數字工程,2009,37(2):58-62.
GONG Yu, JIANG-hong, HUANG Yong.Development of Web application based on struts framework[J].Computer&Digital Engineering,2009,37(2):58-62.
[3]戚艷軍,刑繼軍.Ajax與Struts結合構建Web應用研究[J].現代電子技術,2008,32(22):57-58,66.
QI Yan-jun,XING Ji-jun.Web application using Ajax and Struts[J].Modern Electronics Technique,2008,32(22):57-58,66.
[4]王明,陸正球.基于MVC科研管理系統的研究與實現[J].微計算機應用,2009(1):77-80.
WANG Ming,LU Zheng-qiu.Research and implementation of scientific research management system based on MVC[J].Microcomputer Applications,2009(1):77-80.
[5]侯興明.基于XML的企業模型數據發布與交換方法研究與實現[D].哈爾濱:哈爾濱工業大學,2008.
[6]Karam M,Keirouz W,Hage R.An abstract model for testing MVC and workflow based Web applications[C]//Proceeding of the Advanced Int'l Conference on Telecommunications and Int'l Conference on Internet and Web Applications and Services,Guadeloupe,2006.