賈鳴華, 莊建軍, 胡 凱
(南京大學(xué)a.電子科學(xué)與工程學(xué)院;b.國有資產(chǎn)管理處,南京210023)
隨著高校信息化建設(shè)的推進(jìn),提高學(xué)校資產(chǎn)的使用率,實(shí)現(xiàn)科學(xué)、實(shí)時(shí)、穩(wěn)健的動(dòng)態(tài)管理,保護(hù)固定資產(chǎn)的完整性,成為當(dāng)前高校資產(chǎn)管理的核心。其中電子類學(xué)科所用器材數(shù)量龐大,種類繁多,涉及眾多的實(shí)驗(yàn)板卡和芯片耗材等,對管理系統(tǒng)的安全性、靈活性和穩(wěn)定性提出了更高的需求。為此很多學(xué)者進(jìn)行了卓有成效的研究[1-4],實(shí)現(xiàn)的系統(tǒng)提供了資產(chǎn)的存儲(chǔ)、查詢、統(tǒng)計(jì)和分析等基本功能,并有一定的商業(yè)化推廣。但是綜合來看,高校資產(chǎn)管理系統(tǒng)仍存在一些不足。①資源共享難以真正解決,現(xiàn)有的商業(yè)系統(tǒng)通用性太強(qiáng),無法解決個(gè)性化需求;②電子類器材繁雜,資產(chǎn)管理業(yè)務(wù)繁雜,系統(tǒng)對資產(chǎn)管理的重要結(jié)點(diǎn),比如盤點(diǎn)、報(bào)表等支持不足;③ 當(dāng)前移動(dòng)互聯(lián)網(wǎng)的環(huán)境,對移動(dòng)端資產(chǎn)管理系統(tǒng)提出了新需求。因此需要引入新的技術(shù)手段,進(jìn)一步加強(qiáng)學(xué)校資產(chǎn)尤其是電子類資產(chǎn)管理的“網(wǎng)絡(luò)化、規(guī)范化、信息化”。依托學(xué)?,F(xiàn)有的資源,采用流行的 JEE平臺、優(yōu)化的 MVC架構(gòu)、Spring和Struts2開源框架以及MySQL數(shù)據(jù)庫技術(shù),結(jié)合RFID技術(shù)構(gòu)建成熟的線下盤點(diǎn)體系,開發(fā)了一套輕量級的基于B/S模式的電子類專用資產(chǎn)管理系統(tǒng)。
(1)JEE平臺。JEE是應(yīng)用Java開發(fā)服務(wù)端應(yīng)用的一種工業(yè)標(biāo)準(zhǔn),其目標(biāo)是消除C/S架構(gòu)的弊端,迎合B/S架構(gòu)的趨勢,為應(yīng)用Java開發(fā)企業(yè)級應(yīng)用提供一個(gè)體系結(jié)構(gòu)中立的、安全的、多用戶的和基于規(guī)范的平臺,可用來實(shí)現(xiàn)企業(yè)級的面向服務(wù)體系結(jié)構(gòu)[5]。其基本思想是:容器+組件。JEE從底層操作系統(tǒng)至上層用戶接口完全開源,這也使得JEE平臺擁有越來越強(qiáng)大的開發(fā)者隊(duì)伍。隨著應(yīng)用與用戶的日漸增多,JEE必定會(huì)更加成熟與穩(wěn)定。
(2)優(yōu)化的MVC架構(gòu)。MVC是一種軟件體系結(jié)構(gòu),把系統(tǒng)分為3個(gè)基本組分,即模型(Model)、視圖(View)和控件(Controller)。MVC分層達(dá)到了業(yè)務(wù)和顯示剝離,使多個(gè)視圖能共享一個(gè)模型[6],無論何時(shí)通過控件或者任何其余方式改變了模型數(shù)據(jù),模型都會(huì)將數(shù)據(jù)的變化通知相應(yīng)的全部視圖,導(dǎo)致用戶界面更新。這實(shí)際上是一種模型變化-傳播機(jī)制[7]。
目前在很多B/S模式的Web應(yīng)用中,瀏覽器直接經(jīng)過JSP頁面與用戶交互,響應(yīng)用戶請求。盡管很直觀,然而管理系統(tǒng)操作的數(shù)據(jù)量往往是很龐大的,考慮到以后的擴(kuò)展,JSP頁面會(huì)變得冗雜不堪,Web服務(wù)器負(fù)荷過大。為此,在頂層和中間層采取M(JavaBean)V(JSP)C(Servlet)架構(gòu)。這樣就很好地達(dá)成了表示層、邏輯層與數(shù)據(jù)層分離,提高了內(nèi)聚性,降低了組件間耦合度,使得應(yīng)用可維護(hù),高可擴(kuò)展。
(3)Spring開源框架。Spring框架是一個(gè)輕量級的企業(yè)級開發(fā)一站式解決方案。Spring框架主要提供了控制反轉(zhuǎn)容器、面向切面編程、數(shù)據(jù)訪問、Web開發(fā)、消息、測試等支持,為企業(yè)級開發(fā)提供了豐富的功能。就中心來說,Spring是一個(gè)控制反轉(zhuǎn)容器,提供一種非侵入式的編程方式,其目標(biāo)是使JEE易用,比如,通過切面和模板減少樣板式代碼[8];內(nèi)建針對分布式事務(wù)處理和單個(gè)JDBC數(shù)據(jù)源的一般化策略;基于切面和慣例進(jìn)行聲明式編程。
(4)MySQL數(shù)據(jù)庫。MySQL已經(jīng)成為最流行的開源數(shù)據(jù)庫。其由于卓越的運(yùn)行速度、易用性、標(biāo)準(zhǔn)語言支持、高并發(fā)、安全性、可用性和低成本,被許多中小規(guī)模企業(yè)選作數(shù)據(jù)存儲(chǔ)管理的解決方案。它支持許多優(yōu)秀數(shù)據(jù)庫所擁有的特性,如存儲(chǔ)過程、觸發(fā)器和視圖等[9]。如今的MySQL絲毫不亞于其他大型數(shù)據(jù)庫。
(5)RFID。RFID是一種非接觸的自動(dòng)辨識技術(shù),可同時(shí)辨認(rèn)多個(gè)高速移動(dòng)目標(biāo),操作方便快捷。使用RFID,利用射頻信號對目標(biāo)對象進(jìn)行高效自動(dòng)辨識[10]并獲取相關(guān)數(shù)據(jù),辨識無須人工干預(yù)。隨著技術(shù)可靠性提高,RFID將給新零售、物流供應(yīng)鏈管理、公共安全信息管理等領(lǐng)域帶來革命性變化[11]。基本的RFID系統(tǒng)包括電子標(biāo)簽、讀寫器和應(yīng)用系統(tǒng)三部分[12]。
電子類資產(chǎn)管理系統(tǒng)主要分為Web端管理和手持終端清點(diǎn)程序2個(gè)部分。Web端集成了面向管理員的系統(tǒng)管理和資產(chǎn)管理模塊以及面向普通用戶查詢報(bào)表模塊;手持終端主要用于實(shí)時(shí)盤點(diǎn)、清查和統(tǒng)計(jì)。
系統(tǒng)功能結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)功能結(jié)構(gòu)圖
系統(tǒng)功能設(shè)計(jì):
(1)系統(tǒng)管理。主要完成系統(tǒng)的用戶信息管理和相應(yīng)的權(quán)限管理,包括管理員和普通師生用戶。具體操作有登錄、增刪管理員、增刪普通用戶、基于角色的權(quán)限控制。登錄時(shí),采用南京大學(xué)現(xiàn)有的身份認(rèn)證系統(tǒng),直接提取學(xué)校后臺數(shù)據(jù)庫中的個(gè)人身份信息,匹配提交的用戶名和密碼,并依據(jù)身份信息進(jìn)行相應(yīng)的權(quán)限設(shè)置。管理員對系統(tǒng)中所有數(shù)據(jù)擁有增、刪、改、查權(quán)限。普通用戶只擁有查詢資產(chǎn)信息和借還權(quán)限。
(2)資產(chǎn)管理。主要用于資產(chǎn)使用信息的管理,如入庫、借還、轉(zhuǎn)移、維修、報(bào)廢等,以及基礎(chǔ)資產(chǎn)數(shù)據(jù)的管理,包括但不限于資產(chǎn)標(biāo)識、資產(chǎn)類別、資產(chǎn)名稱、資產(chǎn)型號、資產(chǎn)數(shù)目、資產(chǎn)單位、資產(chǎn)利用情況、生產(chǎn)廠商、購置日期、采購人、登記人等。普通用戶可以在此模塊預(yù)約借出和歸還資產(chǎn);管理員能夠在此模塊修改資產(chǎn)信息。
(3)查詢報(bào)表。普通用戶和管理員均可使用該模塊進(jìn)行現(xiàn)有資產(chǎn)、增減、借還、資產(chǎn)維修等查詢。
(4)手持終端。有賬戶、資產(chǎn)管理和系統(tǒng)配置3個(gè)模塊,其中賬戶和資產(chǎn)管理與Web端相同,系統(tǒng)設(shè)置模塊主要設(shè)置數(shù)據(jù)庫地址、速率、頻段等終端參數(shù)。
系統(tǒng)架構(gòu)設(shè)計(jì)參照J(rèn)EE 3層設(shè)計(jì)模型,自頂向下分為表示層(Web)、業(yè)務(wù)邏輯層(Service)、數(shù)據(jù)訪問層(DAO)。使得代碼高可重用,高可移植,降低了系統(tǒng)的耦合度,提高了內(nèi)聚性,實(shí)現(xiàn)了資產(chǎn)的入庫、清點(diǎn)及跟蹤的簡潔操作。
系統(tǒng)邏輯架構(gòu)圖如圖所示。
圖2 系統(tǒng)邏輯架構(gòu)圖
系統(tǒng)架構(gòu)設(shè)計(jì):
(1)表示層。表示層為用戶提供交互式操作界面[13]。接受用戶的請求,通過JSP頁面顯示相關(guān)數(shù)據(jù)對用戶界面進(jìn)行同步更新,然而表示層不能進(jìn)行實(shí)際的業(yè)務(wù)處理,它只調(diào)用中間層的方法,再由中間層決定是否調(diào)用底層。表示層的主要作用有兩個(gè),①提供友好的UI,② 調(diào)度用戶與系統(tǒng)的交互。
(2)業(yè)務(wù)邏輯層。業(yè)務(wù)邏輯層主要任務(wù)是響應(yīng)來自表示層的請求,進(jìn)行復(fù)雜的邏輯運(yùn)算,訪問數(shù)據(jù)訪問層,生成結(jié)果并返回給上層。以 DAO(Data Access Object)為基礎(chǔ),由Service實(shí)現(xiàn)類構(gòu)成,利用Spring框架對組件進(jìn)行統(tǒng)一配置和管理,可高效地處理大量并發(fā)訪問,及時(shí)快速響應(yīng),同時(shí)簡化了業(yè)務(wù)實(shí)體組件的詳細(xì)配置,從而實(shí)現(xiàn)松散耦合。
(3)數(shù)據(jù)訪問層。數(shù)據(jù)訪問層提供的職責(zé)主要有:CRUD服務(wù)、查詢服務(wù)、事務(wù)管理、并發(fā)處理和數(shù)據(jù)上下文。其運(yùn)用SpringJDBC框架,每一個(gè)Service業(yè)務(wù)模塊都對應(yīng)幾個(gè)具體DAO類。DAO主要用來封裝數(shù)據(jù)庫操作邏輯,即實(shí)現(xiàn)具體的 CRUD操作。通過SpringJDBC框架,能完成與具體數(shù)據(jù)庫無關(guān)的操作和大數(shù)據(jù)粒度封裝,從而實(shí)現(xiàn)數(shù)據(jù)源中立的數(shù)據(jù)訪問。
采取Struts2實(shí)現(xiàn)MVC,操縱JSP構(gòu)建index.js頁面,引入ExtJS的樣式文件,基礎(chǔ)庫文件和核心庫文件。用戶的請求通過ExtJS發(fā)送到控件,然后利用服務(wù)器返回的數(shù)據(jù)更新界面。系統(tǒng)進(jìn)行授權(quán)操作時(shí),動(dòng)態(tài)加載PrivTree.js,并向服務(wù)器提交用戶ID,服務(wù)器用JSON格式返回信息,并用樹的形式顯示[14]。
業(yè)務(wù)邏輯層是中間件,負(fù)責(zé)處理DAO類,并為Action提供具體業(yè)務(wù),其數(shù)據(jù)來源于數(shù)據(jù)訪問層的POJO和表示層的FormBean。業(yè)務(wù)邏輯由Service實(shí)現(xiàn)類構(gòu)成,由Spring配置與注入。
數(shù)據(jù)訪問層的實(shí)現(xiàn)主要是SpringJDBC框架的應(yīng)用。首先編寫POJO,依據(jù)POJO編寫配置文件,生成class文件,最后編寫DAO類,與數(shù)據(jù)庫進(jìn)行CRUD操作,并對其進(jìn)行封裝。
(1)SpringJDBC數(shù)據(jù)源配置。配置文件主要對數(shù)據(jù)庫連接的各種參數(shù)進(jìn)行配置,以消除樣板式代碼,一個(gè)可能的XML配置文件如下(省略頂部模式聲明):
(2)創(chuàng)建DAO類。編寫與數(shù)據(jù)庫對應(yīng)的POJO類和相應(yīng)的接口,利用 IntelliJ IDEA持久化為AssetsTypeDaoImpl. java, AssetsStatusDaoImpl. java,AssetsEntryDaoImpl.java,AssetsDaoImpl.java 等對象,然后在配置文件中通過Spring容器進(jìn)行依賴注入。以AssetsTypeDaoImpl.java 為例:
然后,可以使用Spring的JdbcTemplate模板來實(shí)現(xiàn)AssetsTypeDaoImpl類的操縱數(shù)據(jù)的方法,例如:
手持終端主要用于線下實(shí)時(shí)盤點(diǎn),可以采用摩托羅拉公司的DS4208或MC3190作為本系統(tǒng)的移動(dòng)數(shù)據(jù)終端。該設(shè)備幾乎可掃描所有介質(zhì)上的條形碼,支持全方位掃描,易于遷移至新主機(jī),很容易與無線局域網(wǎng)同步,滿足高校資產(chǎn)管理的需求。
資產(chǎn)盤點(diǎn)時(shí),使用終端自帶數(shù)據(jù)庫進(jìn)行網(wǎng)絡(luò)比對。接入校園網(wǎng)后,將服務(wù)器數(shù)據(jù)庫同步至本地[15],然后將掃描數(shù)據(jù)直接與本地對比,發(fā)現(xiàn)不一致則進(jìn)行報(bào)警。資產(chǎn)入庫,由資產(chǎn)管理中心發(fā)卡,為電子標(biāo)簽寫入含有資產(chǎn)基礎(chǔ)信息的數(shù)據(jù),并設(shè)置鎖定密碼避免竄改,同時(shí)卡片連接后臺,完成入庫和審核操作[16]。資產(chǎn)報(bào)廢,用終端掃描標(biāo)簽標(biāo)記報(bào)廢,或者依據(jù)資產(chǎn)預(yù)設(shè)使用年限自動(dòng)標(biāo)記報(bào)廢,報(bào)廢信息實(shí)時(shí)同步至遠(yuǎn)程服務(wù)器。
高校電子類資產(chǎn)數(shù)量大,品種多,需要搭建網(wǎng)絡(luò)化管理系統(tǒng),以實(shí)現(xiàn)個(gè)性化、信息化、科學(xué)化管理[17]。文中設(shè)計(jì)了一種基于JEE和RFID的B/S模式資產(chǎn)管理系統(tǒng),主要圍繞著Spring和Struts2兩大框架開發(fā),采用優(yōu)化的MVC架構(gòu),增強(qiáng)了高內(nèi)聚松耦合特性,解決了代碼冗長和系統(tǒng)在高并發(fā)環(huán)境下可能出現(xiàn)的問題,并通過手持終端解決了傳統(tǒng)線下盤點(diǎn)效率低下等問題,經(jīng)部署和內(nèi)部測試,系統(tǒng)運(yùn)行穩(wěn)定可靠,極大地提高了資產(chǎn)管理的效率和準(zhǔn)確性。但系統(tǒng)仍有很大的改進(jìn)空間,如射頻信號的場地測試、功能和界面的用戶自定制、網(wǎng)絡(luò)安全等,需要在今后的使用中不斷完善。