黃昇
(上海旅游高等專科學(xué)校 設(shè)備處, 上海 201418)
近幾年,很多高校在信息化領(lǐng)域的建設(shè)已經(jīng)初見成果,但離建成“智慧校園”還有一定的距離。設(shè)備報(bào)修和技術(shù)支持服務(wù)仍舊是電話的方式為主。隨著校區(qū)新辦公樓的建成,學(xué)校也投入了大量的資金希望能進(jìn)一步建成“智慧校園”,原先的報(bào)修工作方式就顯現(xiàn)出其弊端:
(1) 學(xué)校電子設(shè)備(計(jì)算機(jī)、復(fù)印機(jī)、網(wǎng)絡(luò)設(shè)備等)的維護(hù)工作和技術(shù)支持都是由信息中心來承擔(dān),其工作壓力和維護(hù)成本相當(dāng)大。
(2) 由于電話報(bào)修消息傳遞有滯后,經(jīng)常會(huì)出現(xiàn),維護(hù)員剛回到辦公室才得知同幢辦公樓還有地方技術(shù)服務(wù),來回奔波造成時(shí)間和人力上的浪費(fèi)。出現(xiàn)大批量報(bào)修電話式,如果維修人員記錄比較隨意,很容易出現(xiàn)遺忘,造成雙方不必要的誤會(huì)。
(3) 信息中心對(duì)年度的工作量無法做出準(zhǔn)確的統(tǒng)計(jì)數(shù)據(jù)。
鑒于以上問題,急需研發(fā)一套能摒棄過去原始紙質(zhì)和電話報(bào)修的工作模式的網(wǎng)上報(bào)修系統(tǒng)。該系統(tǒng)前臺(tái)教職工能通過校園門戶網(wǎng)站進(jìn)行設(shè)備報(bào)修,后臺(tái)信息中心管理員能進(jìn)行用戶管理,對(duì)報(bào)修單進(jìn)行分派和進(jìn)度跟蹤、統(tǒng)計(jì)和各類報(bào)表生成打印等功能。
通過前期的細(xì)致的調(diào)研工作后,選擇使用SSH框架模型開發(fā)[1],為軟件在較短時(shí)間內(nèi)按階段完成,同時(shí)這種框架開發(fā)更便于后期版本的更新和功能的擴(kuò)展。智慧校園數(shù)據(jù)交互式報(bào)修平臺(tái)采用B/S架構(gòu)體系研發(fā),用戶只需通過Web端(瀏覽器)登陸平臺(tái)就可以發(fā)出報(bào)修和技術(shù)支持服務(wù)的請(qǐng)求,如圖1所示。
表示層:瀏覽器實(shí)現(xiàn)表示層的功能。解決各類常用瀏覽器的兼容性問題(IE、FireFox、360瀏覽器、Google瀏覽器等等)、設(shè)計(jì)頁面布局的合理性,易用性。
功能層:是指服務(wù)器(報(bào)修平臺(tái)的應(yīng)用程序),用于處理功能業(yè)務(wù)和數(shù)據(jù)邏輯的部分,它由三部分組成;
(1) 業(yè)務(wù)處理邏輯,平臺(tái)所有的程序邏輯判斷和功能業(yè)務(wù)都在這里實(shí)現(xiàn);
(2) 控制請(qǐng)求轉(zhuǎn)發(fā),對(duì)系統(tǒng)用戶進(jìn)行身份的驗(yàn)證,根據(jù)用戶不同角色賦予相應(yīng)的權(quán)限,防止用戶URL地址訪問某些特定的資源;
圖1
(3) 數(shù)據(jù)庫操作層,出于對(duì)數(shù)據(jù)庫的安全考慮,將業(yè)務(wù)服務(wù)器和數(shù)據(jù)庫服務(wù)器物理分開,它們之間的交互由數(shù)據(jù)庫操作層完成。比如:與數(shù)據(jù)庫服務(wù)器建立連接,數(shù)據(jù)庫的防護(hù)策略(如:非法數(shù)據(jù)查詢、SQL注入等)。
數(shù)據(jù)庫:是數(shù)據(jù)庫管理系統(tǒng),它負(fù)責(zé)數(shù)據(jù)的安全性、完整性和唯一性管理。
信息化管理是為了提高服務(wù)水平和管理效率,但還是要保證被信息化重構(gòu)后的業(yè)務(wù)流程的規(guī)范性和準(zhǔn)確性[2-4]。所以,需要對(duì)線下工作流程進(jìn)行詳細(xì)分析,利用軟件工程的理念,將其整理成需求分析文檔。
通常情況下,教職工報(bào)修過程中所需的主要信息從保修平臺(tái)數(shù)據(jù)庫調(diào)取。教職工登錄在線報(bào)修平臺(tái)就能得到其名下的資產(chǎn)信息。那么,教職工只要填寫需要報(bào)修設(shè)備的資產(chǎn)編號(hào),系統(tǒng)就會(huì)自動(dòng)加載設(shè)備的名稱、設(shè)備類型、報(bào)修人聯(lián)系電話等常規(guī)信息,然后報(bào)修人要做的只有填寫對(duì)設(shè)備故障情況的簡單描述、設(shè)備故障的截圖上傳和選擇預(yù)約合適維修時(shí)間即可。我們可以將上述報(bào)修業(yè)務(wù)流程歸納如下:
(1) 教職工報(bào)修平臺(tái)提交申請(qǐng),完成必要信息的填寫;
(2) 信息中心管理員網(wǎng)上收到新報(bào)修申請(qǐng)的提示后進(jìn)行處理,將報(bào)修單推送給具體的維護(hù)人員。
(3) 維護(hù)員先和報(bào)修人聯(lián)系了解具體情況,決定是去現(xiàn)場(chǎng)排除故障還是通過網(wǎng)上遠(yuǎn)程解決。如果判斷設(shè)備需外送維修或是硬件故障,則通知報(bào)修人將設(shè)備送至設(shè)備處做下一步處理,最后維護(hù)員填寫報(bào)修工單處理意見和完成情況;
(4) 對(duì)外修或維修完成的工單返回至信息中心管理員進(jìn)行記錄統(tǒng)計(jì);
具體業(yè)務(wù)流程圖如圖2所示。
圖2
上述業(yè)務(wù)流程分析本人通過充分的需求分析,現(xiàn)將在線報(bào)修平臺(tái)功能分為三個(gè)體系、一個(gè)輔助功能模塊。分別為:設(shè)備申報(bào)處理體系、管理員后臺(tái)管理體系、平臺(tái)查詢統(tǒng)計(jì)體系,另外考慮到多媒體教室教學(xué)設(shè)備報(bào)修實(shí)際情況,增加一個(gè)獨(dú)立填報(bào)的功能模塊。
設(shè)備申報(bào)處理體系:報(bào)修申請(qǐng)功能,報(bào)修工單審批功能,分配和處理功能(工單查詢,維護(hù)進(jìn)度監(jiān)看,外送修理設(shè)備進(jìn)度查詢等);
管理員后臺(tái)管理體系:各職能部門設(shè)備管理員設(shè)置,用戶權(quán)限設(shè)置,推送消息內(nèi)容設(shè)置;
平臺(tái)查詢統(tǒng)計(jì)體系:報(bào)修工單查詢統(tǒng)計(jì)功能(各種條件查詢),年度報(bào)表生成。
下面給出部分功能模塊的用例圖,如下圖3所示。
根據(jù)用例圖定義,校園報(bào)修平臺(tái)報(bào)修人的時(shí)序圖如圖4所示,信息中心管理員模塊時(shí)序圖如圖4所示。
圖4
一個(gè)優(yōu)秀的數(shù)據(jù)庫設(shè)計(jì)方案將直接影響數(shù)據(jù)查詢的響應(yīng)速度和程序開發(fā)的效率[5]。首先,必須搞清楚所要開發(fā)的系統(tǒng)的性質(zhì)到底是“事務(wù)處理類型”(Transactional)還是“分析類型”(Analytical)。“事務(wù)處理類型”就是經(jīng)常要對(duì)數(shù)據(jù)進(jìn)行CRUD(Creating/Reading/Updating/Deleting),而相對(duì)的“分析類型”的數(shù)據(jù)庫更注重?cái)?shù)據(jù)的分析,報(bào)表等功能,對(duì)數(shù)據(jù)庫的數(shù)據(jù)“插入”和“更新”操作較少,從需求分析階段來看我們這個(gè)報(bào)修平臺(tái)更偏向于“事務(wù)處理類型”。
圖5
故數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計(jì)需要遵循以下幾個(gè)原則[6-7]:
1) 一致性原則:已經(jīng)確定系統(tǒng)的性質(zhì),“事務(wù)處理類型”的系統(tǒng)頻繁地增刪改查操作,如果出現(xiàn)并發(fā)現(xiàn)象,應(yīng)保證數(shù)據(jù)的前后一致性。
2) 安全性原則:數(shù)據(jù)庫的安全性有兩個(gè)方面:其一,是指保護(hù)數(shù)據(jù),防止數(shù)據(jù)庫數(shù)據(jù)泄露、丟失和非法更改。其二,是指數(shù)據(jù)庫結(jié)構(gòu)的設(shè)計(jì)是否具備健壯性、容錯(cuò)性和可恢復(fù)能力。
3) 可擴(kuò)展性原則:考慮到平臺(tái)系統(tǒng)的升級(jí)和功能需求增加的情況,數(shù)據(jù)庫的結(jié)構(gòu)需要具備有良好的可擴(kuò)展性和適度的冗余能力。
基于以上原因,校園在線報(bào)修平臺(tái)不再單獨(dú)開發(fā)數(shù)據(jù)庫,除了平臺(tái)系統(tǒng)一些必要的本地?cái)?shù)據(jù)表意外,其他教職工個(gè)人信息以及固定資產(chǎn)信息統(tǒng)一通過已經(jīng)成熟的校園信息門戶的數(shù)據(jù)交換中心獲取(該交互中心提供標(biāo)準(zhǔn)API接口),這樣不僅保證數(shù)據(jù)的一致性,也保證數(shù)據(jù)安全性。
這里只羅列出兩個(gè)主要的數(shù)據(jù)表結(jié)構(gòu),其一,是報(bào)修申請(qǐng)表(repair)表用來存儲(chǔ)設(shè)備的報(bào)修信息,主要用來存儲(chǔ)報(bào)修人上傳的相關(guān)圖片、問題描述和預(yù)約時(shí)間,其余字段都是通過數(shù)據(jù)中心自動(dòng)獲取的,具體數(shù)據(jù)庫字段功能如表1所示。其二,是用戶表(user)用來存儲(chǔ)登陸用戶的信息,具體數(shù)據(jù)表字段如表2所示。
表1
報(bào)修平臺(tái)采用SSH(Struts+hibernate+spring)進(jìn)行研發(fā),SSH是一種開源的Web應(yīng)用程序集成框架。
基于SSH框架開發(fā)報(bào)修平臺(tái)將分為表示層(瀏覽器)、邏輯業(yè)務(wù)層(功能層)、數(shù)據(jù)層(數(shù)據(jù)庫操作)和模塊層(擴(kuò)展功能)4個(gè)層次,這樣的層次結(jié)構(gòu)使得程序員進(jìn)行快速開發(fā),整個(gè)平臺(tái)結(jié)構(gòu)清晰、平臺(tái)功能可擴(kuò)展性好、后期維護(hù)方便等特點(diǎn)。SSH框架中Struts將作為報(bào)修平臺(tái)的架構(gòu)的底座支撐,負(fù)責(zé)將MVC(Model,View和Controller)業(yè)務(wù)流進(jìn)行分離,控制功能業(yè)務(wù)之間的跳轉(zhuǎn)。Hibernate對(duì)數(shù)據(jù)層提供支撐。Spring則只負(fù)責(zé)管理struts和hibernate。
表2
Struts還對(duì)Model,View和Controller提供了所對(duì)應(yīng)的控制器。ActionServlet控制器作為核心控制器首先接收來自前臺(tái)終端的請(qǐng)求,Action控制器根據(jù)ActionServlet收到的請(qǐng)求類型,再去調(diào)用Model的業(yè)務(wù)邏輯方法處理請(qǐng)求,并根據(jù)前臺(tái)參數(shù)將最終的處理結(jié)果返回給前臺(tái)JSP頁面顯示。
Model部分:由ActionForm和JavaBean組成,其中ActionForm用于將用戶的請(qǐng)求參數(shù)封裝成ActionForm對(duì)象,model文件夾與action文件夾內(nèi)的方法一一對(duì)應(yīng),主要用于ActionForm中的方法接收前臺(tái)參數(shù)
View部分:瀏覽器頁面展示的.jsp頁面,以及js文件和css文件。Struts自帶常用的標(biāo)簽庫,研發(fā)可以調(diào)用標(biāo)簽庫的內(nèi)容,,減輕頁面因?yàn)槭褂肑S腳本的加載過程。同時(shí),程序員也可以通過編寫自定義的標(biāo)簽,使頁面功能展現(xiàn)更加豐富。
Controller部分:由兩個(gè)控制器組成,它們分別負(fù)責(zé)系統(tǒng)核心轉(zhuǎn)發(fā)和業(yè)務(wù)邏輯處理:
(1) 系統(tǒng)核心控制器對(duì)應(yīng)就是ActionServlet控制器,它繼承的是HttpServlet類。
(2) 業(yè)務(wù)邏輯控制器對(duì)應(yīng)就是Action控制器,本身不處理請(qǐng)求,而是將獲取的參數(shù)傳遞給所調(diào)用Model的方法來完成處理。
Hibernate是一個(gè)開源的映射框架,該框架內(nèi)封裝了一個(gè)輕量級(jí)的JDBC,這樣方便程序員用面向?qū)ο蟮乃季S模式來操作數(shù)據(jù)庫。它一共有5個(gè)核心接口,分別為:Session、SessionFactory、Transaction、Query和Confguration。下面對(duì)這五個(gè)核心接口分別加以介紹。
(1) Session接口負(fù)責(zé)CRUD(增刪改查)的數(shù)據(jù)庫操作(該接口封裝了許多常見的SQL語句)。
(2) SessionFactory接口負(fù)責(zé)初始化Hibernate,并創(chuàng)建Session的對(duì)象。
(3) Configuration接口負(fù)責(zé)配置并啟動(dòng)Hibernate,創(chuàng)建SessionFactory對(duì)象。
(4) Transaction接口是系統(tǒng)的基類。研發(fā)人員也可以設(shè)計(jì)自定義的系統(tǒng)底層事務(wù)處理基類。
(5) Query和Criteria接口是數(shù)據(jù)庫查詢接口。它兼容HQL語言和SQL語句。HQL更加面向?qū)ο?,因?yàn)樗恼{(diào)用是類和類的屬性名。
Spring是一個(gè)開源框架,它適用于任何Java語言,使用基本的JavaBean來替代EJB,并提供了更多的常用應(yīng)用功能,能很好地解決應(yīng)用開發(fā)過程中的復(fù)雜性,使系統(tǒng)的代碼編寫更簡潔、更易于管理、并且更方便程序員做代碼走查。
由于是定制開發(fā),不能完全沿用SSH的原有框架的配置,所以在報(bào)修平臺(tái)的研發(fā)中增加了config文件夾該文件夾中主要存放報(bào)修平臺(tái)系統(tǒng)框架配置,如圖6所示。
圖6
jdbcInfo.properties 數(shù)據(jù)庫連接參數(shù)配置;
log4j.properties 控制臺(tái)日志配置;
hibernate.cfg.xml 數(shù)據(jù)庫映射配置;
beans-base.xml spring集成核心配置;
beans-dao.xml spring集成DAO層配置(數(shù)據(jù)映射底層);
beans-service.xml spring集成業(yè)務(wù)層配置(依賴DAO層);
beans-action.xml spring集成視圖層配置(與用戶交互層,依賴service層);
struts2.xml 前臺(tái)路徑跳轉(zhuǎn)控制;
beans-time.xml 數(shù)據(jù)同步配置。
智慧校園數(shù)據(jù)交互式報(bào)修平臺(tái)的程序流程圖如圖7所示。
圖7
信息中心管理員后臺(tái)有管理和打印功能:
(1) 人員維護(hù)模塊:主要針對(duì)維修人員的增刪改查的操作;
(2) 部門信息維護(hù)模塊:包括部門設(shè)備管理員變更(部門設(shè)備管理員的權(quán)限是允許為本部門名下多有設(shè)備報(bào)修)、教職工密碼修改和重置等功能;
(3) 打印模塊:常規(guī)的就是外送維修記錄打印和年度統(tǒng)計(jì)報(bào)表打印。還有報(bào)修類型的圖片生成,為今后大數(shù)據(jù)的用戶行為統(tǒng)計(jì)打基礎(chǔ)。
報(bào)修申請(qǐng)代碼如圖8所示。
圖8
管理員分配工單如圖9所示。
圖9
報(bào)修平臺(tái)頁面展示圖10所示。
本文對(duì)智慧校園數(shù)據(jù)交互式報(bào)修平臺(tái)的整個(gè)設(shè)計(jì)研發(fā)過程進(jìn)行了詳細(xì)闡述。通過前期大量的調(diào)研和充分的需求分析,平臺(tái)正式上線使用一段時(shí)間后,運(yùn)行情況良好。有部分教職工也提出了一些合理化意見和新需求。本人在后期版本也計(jì)劃做進(jìn)一步的優(yōu)化,平臺(tái)頁面布局設(shè)計(jì)上還有待做改進(jìn)。同時(shí),移動(dòng)辦公是今后的趨勢(shì),校園在線報(bào)修平臺(tái)也將整合進(jìn)校園手機(jī)微門戶的接口中去,這樣更方便教職工進(jìn)行報(bào)修申請(qǐng),也可實(shí)時(shí)了解維修的進(jìn)度情況。