屈曉淵,張 峰
(榆林學院 信息工程學院,陜西 榆林 719000)
隨著航空業(yè)的發(fā)展,航空運輸業(yè)正向全面數(shù)字化方向發(fā)展。無論是航空運營還是維修,數(shù)字技術(shù)已在各方面大顯身手。為了使數(shù)字信息發(fā)揮更大作用,航空公司、飛機制造商、設(shè)備供應(yīng)商、維修企業(yè)和軟件公司之間正在通力合作。隨著維修外包業(yè)務(wù)的增長、航空公司開始廣泛采用電子飛行包(EFB)、電子飛行日志(ELB)等工具,數(shù)字信息的交流越來越廣,相應(yīng)的航材數(shù)據(jù)交換和交易需求應(yīng)運而生。所以開發(fā)一套基于航材電子交易系統(tǒng)以滿足航空公司和供應(yīng)商之間的需求。
為了實現(xiàn)協(xié)調(diào)工作,提高工作效率,需要實現(xiàn)航空公司與航材供應(yīng)商之間航材數(shù)據(jù)共享和航材交易的需求。以統(tǒng)一的格式收集、分析和交換這些航材信息,可提高效率,降低成本和減少差錯。航空公司、飛機制造商和航材供應(yīng)商將擁有更多、更精確的數(shù)據(jù),能更快和更容易地從事各項工作。各航空公司之間航材數(shù)據(jù)應(yīng)能在異構(gòu)數(shù)據(jù)庫之間進行數(shù)據(jù)交易,采用基于XML的異構(gòu)數(shù)據(jù)庫數(shù)據(jù)交換技術(shù)能夠滿足這種數(shù)據(jù)交換需求[1]。
開發(fā)的軟件是簡易的航材交易系統(tǒng),以廣大航空公司采購航材人員為主要服務(wù)對象。提供良好的用戶界面,實現(xiàn)與用戶的交流,減輕采購部門在航材管理等工作方面的工作量。航材數(shù)據(jù)交易網(wǎng)是面向航空器制造商、航空器運營人、航空器材供應(yīng)商、航空器及部件維修廠商之間進行航材信息交換的商務(wù)平臺。該系統(tǒng)的目標是通過減少工作人員在信息交換時重復輸入信息的工作量,改善和提高航材供應(yīng)鏈各環(huán)節(jié)的工作效率。系統(tǒng)功能總體結(jié)構(gòu)如圖1所示。
如今基于互聯(lián)網(wǎng)的電子商務(wù)系統(tǒng)越來越流行。該系統(tǒng)是一個在互聯(lián)網(wǎng)上進行航材部件需求信息發(fā)布和部件詢價以及建立客戶關(guān)系的電子商務(wù)系統(tǒng)。電子部件維修商可以通過這個電子商務(wù)系統(tǒng)發(fā)布自己的需求信息。部件供應(yīng)商可以發(fā)布自己的出售信息[2]。
圖1 系統(tǒng)功能結(jié)構(gòu)Fig.1 Structure of system function
維修商通過該系統(tǒng)的用戶界面,可以查看其他用戶發(fā)布的求購信息,也可以查找部件供應(yīng)商,加入到自己的聯(lián)系人通訊錄中。維修商可以注冊公司的信息。給自己的客戶發(fā)布部件詢價單,以查詢所需求的部件價格。部件供應(yīng)商收到詢價格單后,進行報價處理。本系統(tǒng)結(jié)構(gòu)示意圖如圖2所示。
圖2 系統(tǒng)功能結(jié)構(gòu)Fig.2 System structure
據(jù)以上分析,得出程序的主要用例圖,如圖3所示。主要的 角 色 (Actor)包 括 企 業(yè) 管 理 員 (Administrator)、 企 業(yè) 用 戶(Customer)、程序系統(tǒng)(System)和數(shù)據(jù)庫(Database)。
圖3 交易用例圖Fig.3 Use case diagram of transaction
用例圖分析了該應(yīng)用系統(tǒng)的主要功能需求,這些需求是設(shè)計開發(fā)的依據(jù)。下面開始分析航材交易系統(tǒng)的架構(gòu)設(shè)計。整個系統(tǒng)架構(gòu)(除了客戶端數(shù)據(jù)采集系統(tǒng))基于J2EE技術(shù)體系設(shè)計,客戶端數(shù)據(jù)采集系統(tǒng)采用的是桌面單機應(yīng)用程序。
J2EE 體系包括 JSP、Servlet、EJB、Web Service 等多項技術(shù)。這些技術(shù)的出現(xiàn)給Web應(yīng)用開發(fā)提供了一個非常有競爭力的選擇。怎樣把這些技術(shù)組合起來,形成一個適應(yīng)項目需要的穩(wěn)定架構(gòu)是項目開發(fā)過程中一個非常重要的步驟[3-4]。
一個成功的軟件需要有一個成功的架構(gòu),但軟件架構(gòu)的建立是一個復雜而又持續(xù)改進的過程,軟件開發(fā)者們不可能對不同的項目做不同的架構(gòu),而總是盡量重用以前的架構(gòu),或開發(fā)出盡量通用的架構(gòu)方案[5],Struts就是其中之一,Struts是流行的基于J2EE的架構(gòu)方案,其他常用的基于J2EE的架構(gòu)方案還有Hibernate、Spring等。
本系統(tǒng)嚴格按MVC模式設(shè)計,按J2EE分層設(shè)計的理念,將中間層嚴格分成業(yè)務(wù)邏輯層、DAO層和數(shù)據(jù)持久層等。MVC層的控制器絕對禁止持久層訪問,甚至不參與業(yè)務(wù)邏輯的實現(xiàn)。表現(xiàn)層采用傳統(tǒng)JSP技術(shù)。JSP技術(shù)結(jié)合Struts的標簽庫,讓應(yīng)用的表現(xiàn)層層次清晰,可讀性比較好[6]。本系統(tǒng)層次架構(gòu)如圖4所示,架構(gòu)模型如圖5所示。
圖4 系統(tǒng)層次架構(gòu)圖Fig.4 Framework of system level structure
圖5 架構(gòu)模型Fig.5 Frame model
系統(tǒng)設(shè)計是在系統(tǒng)分析的基礎(chǔ)上由抽象到具體的過程。主要目標是將系統(tǒng)分析階段所提出的反映了信息需求的系統(tǒng)邏輯方案轉(zhuǎn)換成可以實施的基于計算機與通信系統(tǒng)的物理(技術(shù))方案,進行系統(tǒng)的總體設(shè)計和各子模塊的設(shè)計,實現(xiàn)基于B/S多層結(jié)構(gòu)的科技管理信息系統(tǒng),為下一階段系統(tǒng)實施提供必要的技術(shù)資料。
業(yè)務(wù)實體在內(nèi)存中表現(xiàn)為實體域?qū)ο?,在?shù)據(jù)庫中表現(xiàn)為關(guān)系數(shù)據(jù)。實現(xiàn)業(yè)務(wù)實體包括以下內(nèi)容:
1)設(shè)計域模型,創(chuàng)建域模型實體對象。
2)設(shè)計關(guān)系數(shù)據(jù)模型。
3)創(chuàng)建對象-關(guān)系映射文件。
其中,前兩項適用于大多數(shù)由持久化數(shù)據(jù)驅(qū)動的應(yīng)用程序,最后一項是特定于Hibernate應(yīng)用的。不同的實現(xiàn)方式可能需要不同的步驟。
該系統(tǒng)應(yīng)用中的業(yè)務(wù)實體包括企業(yè)(BspCorp),用戶(BspUser),通訊錄(BspMySplContact),公司認證(BspCorpSpl),詢價單 (BspInq), 詢價單涉及航材 (BspInqParts), 公告信息(BspMessage)。下面將詳細介紹這些實體模型含義。
1)BspCorp 代表一個公司實體,主要屬性包括企業(yè)代碼(corpid)、中文企業(yè)(corpname)、英文企業(yè)名稱(corpnameEn)、國家(nation)、企業(yè)地址(mad_cn)、電話號碼(telnum)、聯(lián)系人(contact)等。
2)BspUser 代表一個用戶實體,主要包括用戶標識(usernbr)、用戶名(fname)、用戶密碼(password)、電子郵件、用戶狀態(tài)、聯(lián)系地址、聯(lián)系電話等。
3)BspMySplContact 代表了一個聯(lián)系人通訊錄實體,主要屬性包括我的代碼(myid)、我的聯(lián)系人的代碼(contid)、聯(lián)系人姓名、聯(lián)系人企業(yè)代碼、聯(lián)系人傳真、聯(lián)系人電話等。
4)BspCorpSpl 代表一個已認證公司實體,主要屬性包括企業(yè)代碼(corpid)、供應(yīng)商代碼(spl)、有效日期(LDATE)、備注等。
5)BspInq 代表一個詢價單,主要屬性包括詢價記錄代碼(iid)、用戶代碼(buyerid)、詢價日期(cdate)、 報價單狀態(tài)(status)、備注等。
6)BspInqParts 代表一個詢價單涉及航材實體,主要屬性包括詢價記錄代碼(iid)、件號(pnr)、制造商代碼(mfr)、關(guān)鍵字(keyw)、采購數(shù)量(qut)、計量單位代碼、狀態(tài)等。
7)BspMessage 代表一個公告信息實體,主要屬性包括標識(id)、主題(sbj)、信息類型(mty)、內(nèi)容(cont)、發(fā)布日期(cdate)、有效期(exday)、截止日期(exdate)、聯(lián)系人(contact)、聯(lián)系方式等。
BspCorp與BspUser之間是一對多的關(guān)系,一個企業(yè)可以注冊多個員工賬號,BspUser和BspMySplContact之間是一對多的關(guān)系,一個用戶可以有多個聯(lián)系人。BspUser與Bsp-CorpSpl之間是一對多的關(guān)系,一個用戶可以認證多個公司。BspInq與BspInqParts之間是一對多的關(guān)系,一個詢價單中可以包括多個航材。BspInq與BspUser之間是多對一的關(guān)系,多個詢價單可對應(yīng)一個用戶。
系統(tǒng)的關(guān)系數(shù)據(jù)模型如圖6所示。
圖6 系統(tǒng)的關(guān)系數(shù)據(jù)模型圖Fig.6 Relational data model of system
系統(tǒng)訪問控制層采用Spring的Action作為用戶訪問控制器,Spring的Action實現(xiàn)非常簡單,通過繼承Spring的Action基類重載execute方法,并在該方法里調(diào)用業(yè)務(wù)邏輯組件的業(yè)務(wù)方法。通過上述分析,在本系統(tǒng)中可以發(fā)現(xiàn)所有的Action有個共同之處是都需要調(diào)用業(yè)務(wù)邏輯組件。而在分析服務(wù)層時,業(yè)務(wù)邏輯組件統(tǒng)一封裝成了工廠類ManagerFactory,所以定義一個基類BaseAction,讓所有的Action都從基類派生。BaseAction基類代碼如下所示。
在本系統(tǒng)中,大多模塊需要驗證用戶是否登錄系統(tǒng),所以為所有登錄驗證的Action設(shè)計一個安全控制基類SecureValid-BaseAction,在SecureValidBaseAction類中的execute方法中,首先檢查用戶是否己登錄,如果沒有登錄,則將用戶導向登錄頁面,否則執(zhí)行todoExecute邏輯。todoExecute方法是在SecureValidBaseAction定義的抽象方法,該方法與一般的Action類的execute方法類似,有相同的參數(shù)。SecureValidBaseAction的實現(xiàn)類不再執(zhí)行execute方法,而是實現(xiàn)todoExecute方法。
在注冊公司實體時,必須同時為公司實體注冊一名管理員賬戶。管理員能夠管理其公司實體下的用戶,用戶注冊主頁面顯示當前已注冊的公司信息,如用戶所在的公司已注冊,用戶可選擇注冊個人用戶信息,如果用戶所在的公司還沒有注冊,則需要選注冊公司信息。用戶注冊流程如圖7所示。
圖7 用戶注冊流程圖Fig.7 Flow chart of user registration
用戶可以發(fā)送詢價信息給自己的聯(lián)系人、已認證的公司及所有公司,并可以查看已發(fā)送的詢價單,用戶也可以保存詢價單為草稿,暫不發(fā)給用戶,等編輯好詢價后再發(fā)給用戶。用戶也可以刪除草稿和取消詢價。在該系統(tǒng)中,供應(yīng)商根據(jù)收到的詢價信息進行報價格給詢價的詢價人,詢價人在收到報價單后,把所需的部件加入到自己的采購清單中,形成定單,發(fā)給供應(yīng)商。供應(yīng)商在收到定單后,雙方進行確認,最后形成采購合同,實現(xiàn)流程如圖8所示。
圖8 詢價流程圖Fig.8 Flow chart of inguiry
依據(jù)上述的基本原理,基于J2EE平臺下設(shè)計并實現(xiàn)了航材交易系統(tǒng),該原型系統(tǒng)實現(xiàn)了用戶登錄和注冊、公告信息發(fā)布、詢價單管理、報價單管理等。公告信息發(fā)布頁面主要為訪問BSP的用戶提供一個發(fā)布求購/出售等信息的平臺。用戶可以按照標題查找相關(guān)信息。發(fā)布公司信息界面如圖9所示。用戶可以發(fā)送詢價信息給自己的聯(lián)系人、已認證的公司及所有公司。并可以查看已發(fā)送的詢價單,用戶也可以保存詢價單為草稿,暫不發(fā)給用戶,等編輯好詢價后再發(fā)給用戶。用戶也可以刪除草稿和取消詢價。新建詢價單界面如圖10所示。
圖9 公告信息Fig.9 Notice information
圖10 新建詢價單頁面Fig.10 Adding inquiry UI
針對航材數(shù)據(jù)交易、交換的環(huán)境復雜度高、信息化程度不一致、數(shù)據(jù)模式多樣化等特點,本文根據(jù)航空公司信息化建設(shè)的現(xiàn)狀,采用了Struts、Spring、Hibernate技術(shù)開發(fā)航材數(shù)據(jù)交易系統(tǒng),在功能上力求滿足各航空公司利用Internet實現(xiàn)公司航材數(shù)據(jù)交易信息處理的要求。通過建立基于Java EE的航材數(shù)據(jù)交易系統(tǒng),實現(xiàn)航空公司航材管理的高效和低成本,提高各航空公司航材管理工作效率,達到人、財、物三個方面的人盡其才、物盡其用、開源節(jié)流的目的,為各航空公司的飛機維修提供良好的航材保障。目前基于該方案開發(fā)的系統(tǒng)已經(jīng)在國內(nèi)某航空公司安裝使用,今后將根據(jù)用戶的反饋繼續(xù)完善。
[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開發(fā)[J].計算機與數(shù)字工程,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結(jié)合構(gòu)建Web應(yīng)用研究[J].現(xiàn)代電子技術(shù),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科研管理系統(tǒng)的研究與實現(xiàn)[J].微計算機應(yīng)用,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的企業(yè)模型數(shù)據(jù)發(fā)布與交換方法研究與實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學,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.