戴鵬程 徐滿龍 國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心江西分中心 南昌市 330038
近年來(lái),隨著通信和互聯(lián)網(wǎng)的快速發(fā)展,各個(gè)單位的機(jī)房數(shù)量和設(shè)備數(shù)量增長(zhǎng)迅速,很多企業(yè)和廠商成立信息系統(tǒng)維護(hù)部門(mén)進(jìn)行機(jī)房維護(hù)工作。機(jī)房管理工作主要包括動(dòng)力環(huán)境維護(hù)檢查、網(wǎng)絡(luò)設(shè)備廠商定期巡檢、信息系統(tǒng)工程建設(shè)和日常故障維護(hù),對(duì)非機(jī)房管理人員產(chǎn)生的機(jī)房進(jìn)出登記情況難以控制和統(tǒng)計(jì),如何對(duì)機(jī)房進(jìn)出人員高效的管理是機(jī)房管理人員所面臨的痛點(diǎn)[1]。
目前機(jī)房進(jìn)出通過(guò)文檔記錄,來(lái)訪人員往往字跡潦草難以辨認(rèn),同時(shí)機(jī)房管理人員在繁忙情況下,難以對(duì)來(lái)訪人員登記進(jìn)行嚴(yán)格督促,不便于對(duì)機(jī)房的規(guī)范化管理。此外,碎片化的文檔記錄難以形成可分析和統(tǒng)計(jì)分析,管理者無(wú)法從雜亂的文檔中高效快速掌握機(jī)房出入情況,基于此,分析出機(jī)房進(jìn)出記錄管理平臺(tái)實(shí)際需求如下:
(1)來(lái)訪用戶
外來(lái)機(jī)房巡檢和維護(hù)人員為來(lái)訪用戶記錄,對(duì)于日常經(jīng)常性合作的施工人員進(jìn)行信息提前錄入機(jī)制,錄入的信息包括用戶姓名、所屬單位、用戶身份證號(hào)碼、聯(lián)系電話等信息。
(2)機(jī)房訪問(wèn)記錄
用戶在機(jī)房進(jìn)行巡檢、維護(hù)或者施工前,需要在計(jì)算機(jī)終端進(jìn)行信息的錄入,通過(guò)信息化管理,機(jī)房管理人員可以清晰明了的對(duì)維護(hù)信息進(jìn)行統(tǒng)計(jì)和管理。
(3)機(jī)房訪問(wèn)記錄Word打印和信息統(tǒng)計(jì)
對(duì)于用戶訪問(wèn)機(jī)房的記錄信息可以對(duì)具體信息打印成文檔,便于信息的存儲(chǔ)和備份,對(duì)于打印出來(lái)的Word文檔只需要進(jìn)行簽字操作,其他信息都由服務(wù)端自動(dòng)生成,針對(duì)日常維護(hù)產(chǎn)生的記錄,機(jī)房管理人員需要對(duì)信息進(jìn)行可視化圖表統(tǒng)計(jì)。
基于Egg.js構(gòu)建的機(jī)房進(jìn)出記錄管理平臺(tái)三層結(jié)構(gòu)由軟件開(kāi)發(fā)的經(jīng)典三層接口,由上到下分別為應(yīng)用層、服務(wù)端、和數(shù)據(jù)庫(kù)層。用戶層是對(duì)系統(tǒng)界面的展示,服務(wù)層是服務(wù)接口的實(shí)現(xiàn),為應(yīng)用層提供服務(wù),數(shù)據(jù)庫(kù)是對(duì)信息進(jìn)行存儲(chǔ),為服務(wù)層提供數(shù)據(jù)支撐。
圖1 機(jī)房進(jìn)出記錄管理平臺(tái)總計(jì)框架
通過(guò)對(duì)機(jī)房進(jìn)出記錄管理平臺(tái)的需求,可以分析出此平臺(tái)的實(shí)體包括來(lái)訪用戶、所屬單位、訪問(wèn)日志。和機(jī)房管理人員等,具體數(shù)據(jù)庫(kù)E-R圖如圖2所示。
圖2 數(shù)據(jù)庫(kù)設(shè)計(jì)
目前應(yīng)用系統(tǒng)的主流開(kāi)發(fā)語(yǔ)言有Java、PHP、Python和JavaSrcipt等,基于快速開(kāi)發(fā)和部署的需求,JavaSrcipt和MongoDB的全棧開(kāi)發(fā)模式是很多開(kāi)發(fā)者的理想選擇,前端使用JavaSrcipt進(jìn)行動(dòng)態(tài)控制,后端使用Node.js進(jìn)行服務(wù)端開(kāi)發(fā),前端后端通過(guò)JSON進(jìn)行數(shù)據(jù)完美對(duì)接。JavaScript事件驅(qū)動(dòng)的特性使其具有開(kāi)發(fā)高性能后端系統(tǒng)的能力,隨著Node.js近些年來(lái)的爆發(fā)式發(fā)展,主流的基于Node.js的框架也不斷發(fā)展,有基于事件回調(diào)的Express到基于Generator和ES5 的Koa,再到基于ES6的K oa2,框架處理問(wèn)題的方式不斷優(yōu)化,Egg.js就是阿里巴巴基于Koa2封裝的一套企業(yè)開(kāi)發(fā)框架[2]。
基于Egg.js可以快速構(gòu)建企業(yè)級(jí)應(yīng)用,通過(guò)Egg.js腳手架可以快速生成Egg.js的項(xiàng)目結(jié)構(gòu),本次系統(tǒng)項(xiàng)目結(jié)構(gòu)如圖3所示,其中config.default.js為項(xiàng)目的配置文件,可以對(duì)項(xiàng)目的安全策略、中間件、靜態(tài)配置,app文件夾為項(xiàng)目的源代碼文件,快速建立好部分功能代碼文件,文件夾controller、midleware、schedule、service、util、view分別為控制器、中間件、定時(shí)任務(wù)、服務(wù)類、工具類和視圖層,router.js為路由控制文件。Egg.js以其中間件機(jī)制 和 HTTP服務(wù)機(jī)制作為框架基礎(chǔ),通過(guò) Loader 機(jī)制對(duì)Egg.js各分層機(jī)制的約定基礎(chǔ),它為企業(yè)快速開(kāi)發(fā)Node.js應(yīng)用提供便利。
圖3 Egg.js項(xiàng)目結(jié)構(gòu)圖
前端頁(yè)面JQuery-WEUI和圖表統(tǒng)計(jì)ECharts,JQuery-WEUI是微信前端進(jìn)行頁(yè)面開(kāi)發(fā)的中重要模塊,它提供頁(yè)面中常用的樣式和組件,例如常用圖標(biāo)、顏色、按鈕、對(duì)話框、輸入框、響應(yīng)式布局等,為前端開(kāi)發(fā)提供極大便利。ECharts是百度推出的圖表工具,它有豐富的圖表統(tǒng)計(jì)樣式和模型供開(kāi)發(fā)者選擇,通過(guò)ECharts開(kāi)發(fā)者可以快捷方便的將數(shù)據(jù)進(jìn)行可視化展示。
隨著云計(jì)算和大數(shù)據(jù)等技術(shù)的不斷發(fā)展,Nosql數(shù)據(jù)庫(kù)使用的原來(lái)越廣泛,和關(guān)系型數(shù)據(jù)庫(kù)相比,Nosql數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)靈活,響應(yīng)時(shí)間快,可大量存儲(chǔ)數(shù)據(jù),因此方便進(jìn)行數(shù)據(jù)存儲(chǔ)和分析,常見(jiàn)的Nosql數(shù)據(jù)庫(kù)有Redis、Memcache、MongoDb,考慮后期需要對(duì)日志信息進(jìn)行圖表統(tǒng)計(jì)和數(shù)據(jù)分析,本次選用和Node.js搭配較多的MongoDB數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ),同時(shí)MongoDB數(shù)據(jù)庫(kù)基于可視化工具ReboMongo進(jìn)行開(kāi)發(fā)[3]。
(1)訪問(wèn)記錄錄入界面如圖4所示,機(jī)房訪問(wèn)信息錄入的信息主要包括訪問(wèn)人姓名、電話、身份證號(hào)碼、進(jìn)入機(jī)房事由、攜帶設(shè)備、進(jìn)入和離開(kāi)機(jī)房的時(shí)間等,其中攜帶的設(shè)備使用百度ueditor進(jìn)行上傳附文本信息,可對(duì)用戶攜帶物品進(jìn)行拍照處理。用戶記錄錄入后,通過(guò)AJAX將信息發(fā)送給Egg.js后臺(tái)服務(wù)接口,后臺(tái)在對(duì)信息進(jìn)行校驗(yàn)后,存入到MongoDB數(shù)據(jù)庫(kù)中。
(2)訪問(wèn)記錄展示頁(yè)面,該頁(yè)面是對(duì)用戶訪問(wèn)信息進(jìn)行列表分頁(yè)展示,同時(shí)針對(duì)每條訪問(wèn)記錄,機(jī)房管理人員可對(duì)人員攜帶的物品信息進(jìn)行查看。此外,對(duì)于訪問(wèn)記錄也可導(dǎo)出成Word打印,通過(guò)Wordexport.js框架對(duì)HTML網(wǎng)頁(yè)信息進(jìn)行轉(zhuǎn)化成Word的形式將訪問(wèn)記錄打印處理,便于信息的保存和檢查。記錄列表和機(jī)房進(jìn)出登記表分別如圖5和圖6所示。
圖5 記錄列表頁(yè)面
圖6機(jī)房出入記錄表
(3)用戶訪問(wèn)信息統(tǒng)計(jì)界面如圖7所示,該模塊通過(guò)百度ECharts插件對(duì)機(jī)房周訪問(wèn)記錄、月訪問(wèn)記錄和年訪問(wèn)記錄以柱狀圖和餅狀圖的形式分別進(jìn)行了展示,機(jī)房管理人員通過(guò)此模塊可以系統(tǒng)了解機(jī)房的整體的進(jìn)出情況。
圖7 機(jī)房進(jìn)出記錄統(tǒng)計(jì)
針對(duì)系統(tǒng)快速開(kāi)發(fā)的趨勢(shì),本文結(jié)合了Egg.js快速開(kāi)發(fā)和Node.js模塊豐富的優(yōu)勢(shì),將前端開(kāi)發(fā)、服務(wù)端設(shè)計(jì)和數(shù)據(jù)庫(kù)開(kāi)發(fā)進(jìn)行有效結(jié)合,筆者在完成機(jī)房進(jìn)出記錄管理平臺(tái)開(kāi)發(fā)后,通過(guò)線上部署測(cè)試后,發(fā)現(xiàn)該平臺(tái)能夠滿足日常機(jī)房訪問(wèn)記錄的高效管理。下一步,筆者將進(jìn)一步對(duì)系統(tǒng)進(jìn)行探索和優(yōu)化,關(guān)注實(shí)際需求的變化,將系統(tǒng)升級(jí)為全國(guó)范圍的機(jī)房管理的平臺(tái)。