鄭俊虹,汪香君,張俊鉉
(深圳技術(shù)大學(xué)大數(shù)據(jù)與互聯(lián)網(wǎng)學(xué)院,廣東 深圳 518118)
我校作為應(yīng)用型大學(xué),致力于培養(yǎng)具有國際視野、工匠精神和創(chuàng)新創(chuàng)業(yè)能力的高水平工程師、設(shè)計(jì)師等高素質(zhì)應(yīng)用型人才。學(xué)校配有教學(xué)實(shí)驗(yàn)室、科研實(shí)驗(yàn)室、實(shí)訓(xùn)室等,實(shí)驗(yàn)室設(shè)備種類繁多、數(shù)量龐大。師生在日常的教學(xué)實(shí)踐過程中,經(jīng)常需要從實(shí)驗(yàn)室借用設(shè)備。
實(shí)驗(yàn)室資產(chǎn)管理是一項(xiàng)復(fù)雜的系統(tǒng)工程,本校資產(chǎn)管理部門注重?cái)?shù)據(jù)的錄入、存儲和審核,忽視了設(shè)備的動態(tài)管理。師生使用系統(tǒng)的過程中,經(jīng)常會遇到以下問題:①學(xué)生做項(xiàng)目需要借用實(shí)訓(xùn)室設(shè)備,首先需要查看哪些設(shè)備處于空閑狀態(tài)及設(shè)備的存放位置,然后向設(shè)備負(fù)責(zé)人申請借用設(shè)備,設(shè)備負(fù)責(zé)人審核通過后,系統(tǒng)應(yīng)更新資產(chǎn)的使用人和位置信息,但是當(dāng)前系統(tǒng)沒有賦予學(xué)生使用系統(tǒng)的權(quán)限,只有實(shí)驗(yàn)室的資產(chǎn)負(fù)責(zé)人有權(quán)限;②學(xué)生和老師在使用設(shè)備時,設(shè)備發(fā)生故障,當(dāng)前系統(tǒng)沒有設(shè)備報(bào)修模塊,不能及時報(bào)修,也無法追蹤設(shè)備的維修狀態(tài)。
針對學(xué)校資產(chǎn)管理系統(tǒng)的工作流程和實(shí)際管理流程不相符合的情況,本文以學(xué)院動態(tài)管理使用場景為切入點(diǎn),對系統(tǒng)進(jìn)行二次開發(fā)。該系統(tǒng)的設(shè)計(jì)包括系統(tǒng)管理Web平臺和微信小程序移動端兩個部分。
實(shí)驗(yàn)室資產(chǎn)管理系統(tǒng)的設(shè)計(jì),既要考慮管理的邊界,又必須注重效率。小程序的接入提高了系統(tǒng)運(yùn)轉(zhuǎn)的實(shí)時性,使得學(xué)生、教師和資產(chǎn)管理者有更出色的體驗(yàn)[2]。系統(tǒng)管理Web 平臺主要提供給實(shí)驗(yàn)室管理人員使用,對不同權(quán)限的用戶顯示相對應(yīng)的設(shè)備資產(chǎn)、借用單、維修單等;小程序移動端應(yīng)用允許師生查詢設(shè)備狀態(tài)、借用設(shè)備、報(bào)修故障以及負(fù)責(zé)人審批使用。資產(chǎn)管理系統(tǒng)基本功能框架如圖1所示。
圖1 資產(chǎn)管理系統(tǒng)基本功能框架
系統(tǒng)管理后臺通過對以上基本功能整合分析,從邏輯上分為兩大塊,系統(tǒng)管理和設(shè)備管理。
1.1.1 系統(tǒng)管理
系統(tǒng)管理任務(wù)是對系統(tǒng)進(jìn)行日常管理和必要的維護(hù)[3],該模塊由系統(tǒng)管理員進(jìn)行操作,主要圍繞用戶管理、權(quán)限管理、教室管理、數(shù)據(jù)備份等功能。
實(shí)驗(yàn)室資產(chǎn)的申請、報(bào)修和審批等業(yè)務(wù)需要不同的角色才能完成。因此可以將用戶分為普通用戶、實(shí)驗(yàn)室負(fù)責(zé)人、系統(tǒng)管理員三個角色實(shí)體[3]。
⑴普通用戶
普通用戶是主要的用戶群體,可以對資產(chǎn)進(jìn)行查詢、借用和報(bào)修等操作。
⑵實(shí)驗(yàn)室負(fù)責(zé)人
基于領(lǐng)導(dǎo)對實(shí)驗(yàn)室管理職責(zé)的劃分,每個實(shí)驗(yàn)室都有負(fù)責(zé)老師負(fù)責(zé)管理審批。包括設(shè)備借用審批、維修保養(yǎng)和報(bào)廢檢查等。實(shí)驗(yàn)室負(fù)責(zé)人不僅擁有以上權(quán)限,同時擁有普通用戶的權(quán)限。
⑶系統(tǒng)管理員
系統(tǒng)管理員主要負(fù)責(zé)用戶管理、權(quán)限管理和教室管理等基本數(shù)據(jù)的維護(hù)和備份。
用戶管理包括添加、更新、刪除用戶,并根據(jù)用戶的角色,設(shè)置對應(yīng)權(quán)限。
教室管理主要包括實(shí)驗(yàn)室的添加、更新和刪除,該模塊由系統(tǒng)管理員進(jìn)行操作。
數(shù)據(jù)備份是系統(tǒng)中非常重要的一部分,只有定期對數(shù)據(jù)進(jìn)行備份,才能防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障而導(dǎo)致數(shù)據(jù)丟失。
1.1.2 設(shè)備管理
學(xué)院的設(shè)備包括教學(xué)設(shè)備、科研儀器、辦公設(shè)備和耗材等。設(shè)備的基本信息包括設(shè)備編號、名稱、型號、使用狀態(tài)、單價、類別、所屬實(shí)驗(yàn)室等。實(shí)驗(yàn)室負(fù)責(zé)人主要負(fù)責(zé)對設(shè)備進(jìn)行管理操作,包括添加設(shè)備信息,更新設(shè)備狀態(tài)等。普通用戶日常工作中相關(guān)的業(yè)務(wù)包括查詢設(shè)備、借用設(shè)備、報(bào)修設(shè)備等,相對應(yīng)的實(shí)驗(yàn)室負(fù)責(zé)人需要對設(shè)備借用單進(jìn)行審批,對維修登記進(jìn)行更新。
微信小程序主要應(yīng)用在手機(jī)等移動終端上,移動端界面的設(shè)計(jì)應(yīng)該遵循簡潔清晰性原則。用戶界面應(yīng)給人愉悅的用戶體驗(yàn),因此,界面展現(xiàn)的內(nèi)容需要具備清晰的信息流程,傳遞的信息不要太多。微信小程序移動端的設(shè)計(jì)主要提供給普通用戶和實(shí)驗(yàn)室負(fù)責(zé)人使用。
微信小程序移動端的設(shè)計(jì)僅支持設(shè)備實(shí)時查詢、借用、報(bào)修和審批功能,主要是為了提高動態(tài)管理的效率。整個系統(tǒng)從邏輯上分為四個模塊:資產(chǎn)查詢、借用設(shè)備、故障報(bào)修、審批查詢。審批查詢模塊根據(jù)用戶角色,顯示不同的內(nèi)容。對于普通用戶,該模塊展示用戶個人提交的借用和報(bào)修審批表;對于實(shí)驗(yàn)室負(fù)責(zé)人,除了展示個人申請審批表信息,還額外展示須由負(fù)責(zé)人審批的表單。
整個系統(tǒng)是基于前后端分離架構(gòu)模式設(shè)計(jì)實(shí)現(xiàn)的,后端服務(wù)基于Spring Boot 框架設(shè)計(jì)實(shí)現(xiàn),持久層框架使用MyBatis Plus,數(shù)據(jù)庫使用mysql8.0 版本;Web 前端基于Vue 框架設(shè)計(jì)實(shí)現(xiàn),使用的組件庫是element-ui;微信小程序主要參考微信官方文檔進(jìn)行開發(fā)。
2.1.1 用戶登錄登出實(shí)現(xiàn)
用戶的登錄登出使用Shiro 安全框架來做整體系統(tǒng)訪問控制,采用JwtToken 做安全認(rèn)證。Shiro 是Apache 旗下一個開源框架,它將軟件系統(tǒng)的安全認(rèn)證相關(guān)功能抽取出來,實(shí)現(xiàn)用戶身份認(rèn)證,權(quán)限授權(quán)、加密、會話管理等功能,組成了一個通用的安全認(rèn)證框架[1]。Shiro 框架主要由以下幾個部分組成:①Subject主體,該主體可以是系統(tǒng)用戶,也可以是外部的應(yīng)用程序,更確切的說是一個session,在Shrio認(rèn)證體系中,Subject 為Shiro 框架中完成外部程序認(rèn)證、授權(quán)的抽象;②SecurityManager 即安全管理器,用來對所有的Subject 的認(rèn)證和鑒權(quán)進(jìn)行管理;③Realm 用來實(shí)現(xiàn)自定義的認(rèn)證鑒權(quán)規(guī)則。具體認(rèn)證流程為:程序構(gòu)建一個終端用戶認(rèn)證信息實(shí)例,調(diào)用Subject 登錄方法;然后Shiro 的DefaultFilter 為身份驗(yàn)證、授權(quán)提供統(tǒng)一入口;SecurityManager 接收到信息后,委托內(nèi)置的Authenticator 實(shí) 例ModularRealmAuthenticator 在認(rèn)證過程中會對設(shè)置的一個或多個Realm 實(shí)例進(jìn)行適配;最后判斷Realm 是否支持提交的Subject 進(jìn)行認(rèn)證。Shiro框架的認(rèn)證流程圖可參考圖2。
圖2 Shiro框架認(rèn)證流程圖
上述的認(rèn)證方式是基于session 的,由于客戶端無法保存session,所以無法做到無狀態(tài)登錄。本系統(tǒng)引入JWT(Json Web Token)進(jìn)行認(rèn)證。JWT 是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON 的開放標(biāo)準(zhǔn)[4]。JWT 本質(zhì)上是一個令牌,可以存儲在客戶端的localstore 或者cookie 中。對于已經(jīng)登錄過的用戶,可以采用如圖3所示的認(rèn)證方式。
圖3 JWT認(rèn)證流程圖
2.1.2 頁面設(shè)計(jì)
該系統(tǒng)中資產(chǎn)信息、用戶信息、實(shí)驗(yàn)室信息、借用單、維修單等使用了相似的功能和頁面邏輯。
頁面的設(shè)計(jì)是用來展示后端的數(shù)據(jù)的,后端定義的接口將數(shù)據(jù)以list結(jié)構(gòu)返回。因此前端選用el-table組件作為基礎(chǔ)組件,使用el-table-column 標(biāo)簽來聲明表格中列的屬性,el-table 組件根據(jù)綁定的list 組件來動態(tài)渲染表格。當(dāng)項(xiàng)目中查詢接口增多時,就需要編寫重復(fù)性的代碼展示不同的表格?;谠撉闆r,使用Vue組件化的思想,設(shè)計(jì)了公共表組件,提高了代碼的可重用性[5]。Common-table 組件包含column-props、fetch-data 等屬性對數(shù)據(jù)拉取和數(shù)據(jù)列進(jìn)行展示。在組件初始化時會通過fetch-data 方法查詢數(shù)據(jù),利用v-for 指令根據(jù)column-props 來構(gòu)造el-column。使用了該組件的頁面如圖4所示。
圖4 資產(chǎn)信息界面
程序運(yùn)行依賴的環(huán)境就是宿主環(huán)境,微信客戶端則是小程序的宿主環(huán)境。小程序借助宿主環(huán)境提供的能力,實(shí)現(xiàn)對應(yīng)的功能。微信小程序前端使用微信小程序原生組件來布局,使用組件庫進(jìn)行優(yōu)化,使用微信小程序原生API來調(diào)用宿主環(huán)境提供的功能。
小程序中的通信主體是渲染層和邏輯層,其中WXML模板和WXSS樣式工作在渲染層,Javascript腳本工作在邏輯層。小程序的通信邏輯分為兩個部分。①邏輯層和騰訊云服務(wù)器之間的通信:邏輯層發(fā)送數(shù)據(jù)請求,經(jīng)微信客戶端轉(zhuǎn)發(fā)給騰訊云端服務(wù)器,服務(wù)器對請求進(jìn)行響應(yīng),再將響應(yīng)數(shù)據(jù)經(jīng)微信客戶端轉(zhuǎn)發(fā)給邏輯層。②渲染層和邏輯層之間的通信:邏輯層的數(shù)據(jù)通過微信客戶端轉(zhuǎn)發(fā)給渲染層呈現(xiàn)。
鑒于移動端界面的設(shè)計(jì)應(yīng)該遵循簡潔清晰性原則,小程序的首頁展示了小程序的主要功能模塊資產(chǎn)查詢、借用設(shè)備、故障報(bào)修、審批查詢。
資產(chǎn)查詢:可以根據(jù)設(shè)備編號、設(shè)備名稱、設(shè)備狀態(tài)、設(shè)備價格、所屬實(shí)驗(yàn)室等進(jìn)行查詢。
借用設(shè)備:填寫設(shè)備編號后,會自動填充名稱、類型、資產(chǎn)狀態(tài)、所屬實(shí)驗(yàn)室、資產(chǎn)負(fù)責(zé)人、借用人等信息,當(dāng)前用戶僅需填寫存放位置和借用說明,提交審核。
故障報(bào)修:填寫設(shè)備編號,故障描述,報(bào)修人等信息,提交審核。
審批查詢:對于普通用戶,審批界面會顯示借用、報(bào)修查詢標(biāo)簽頁用于展示當(dāng)前用戶提起的借用、報(bào)修記錄;對于實(shí)驗(yàn)室負(fù)責(zé)人,會額外展示兩個借用、報(bào)修審核頁。
小程序主頁和資產(chǎn)借用頁效果圖如圖5所示。
圖5 小程序主頁和資產(chǎn)借用頁效果圖
本文在原有系統(tǒng)上增加了資產(chǎn)借用、故障報(bào)修和表單審批等功能模塊,將基于Web 的系統(tǒng)管理后臺和微信小程序移動端相結(jié)合,設(shè)計(jì)和實(shí)現(xiàn)了實(shí)驗(yàn)室資產(chǎn)動態(tài)管理的功能。該系統(tǒng)通過技術(shù)手段不僅提高了資產(chǎn)管理人員的工作效率,也讓師生有了更好的使用體驗(yàn)。隨著學(xué)校的不斷發(fā)展,系統(tǒng)還需要增加相應(yīng)的功能模塊以滿足新增需求。從技術(shù)上,可以在SpringBoot基礎(chǔ)上引入SpringCloud微服務(wù)架構(gòu),更好的解決系統(tǒng)性能高并發(fā)和功能復(fù)雜度的問題[6]。