李丹, 張未未
(北京中醫(yī)藥大學(xué), 管理學(xué)院, 北京 100029)
高校設(shè)備的正常運(yùn)行對(duì)高校的科研、教育和正常生活有著關(guān)鍵性的作用,目前大多數(shù)高校的設(shè)備報(bào)修采用傳統(tǒng)人工報(bào)修、Web報(bào)修等形式,存在時(shí)效性低、信息錯(cuò)誤、訪問受限、經(jīng)濟(jì)負(fù)擔(dān)大等缺點(diǎn)[1],影響了設(shè)備的正常使用。為了提升設(shè)備報(bào)修并維修的效率,筆者運(yùn)用微信開發(fā)者工具,設(shè)計(jì)并構(gòu)建了基于微信小程序與云開發(fā)的設(shè)備故障網(wǎng)絡(luò)報(bào)修系統(tǒng)。
傳統(tǒng)的移動(dòng)應(yīng)用程序?qū)τ谟脩魜碚f,在下載和使用時(shí)總會(huì)出現(xiàn)內(nèi)存不足、信息泄露等問題[2],而在微信內(nèi)就能打開使用、不需要下載、“即用即走”的小程序則可較好地改善以上問題。調(diào)查顯示,微信已成為高校工作生活的主要社交平臺(tái)[3],且微信小程序優(yōu)化了用戶的使用體驗(yàn),能夠節(jié)省手機(jī)空間;對(duì)于開發(fā)者而言,小程序設(shè)計(jì)不需考慮多平臺(tái)、多機(jī)型、多系統(tǒng)的差異[4],降低了設(shè)計(jì)開發(fā)門檻、后期推廣與運(yùn)營成本,有很大的生存空間;將線上使用與線下場景融合起來,有較高的即得性。
云開發(fā)指開發(fā)者可充分利用小程序提供的云端功能,不需要專門搭建服務(wù)器來開發(fā)小程序、小游戲等,簡化了后端的操作和維護(hù),使得開發(fā)人員專注于核心業(yè)務(wù)功能的開發(fā)。云開發(fā)提供了原生的、完整的云支持和微信支持服務(wù),包括云函數(shù)、數(shù)據(jù)庫、存儲(chǔ)器[5]三大服務(wù)支持,并且在云控制臺(tái)可實(shí)現(xiàn)數(shù)據(jù)庫、存儲(chǔ)和云函數(shù)監(jiān)控,以保證云服務(wù)器的正常使用。此外,云開發(fā)與小程序接入的第三方服務(wù)器可彼此兼容。
1.2.1 數(shù)據(jù)庫
數(shù)據(jù)庫是微信小程序與服務(wù)器進(jìn)行交互的基礎(chǔ),用于保存用戶信息、用戶上傳文件記錄、交互數(shù)據(jù)記錄等[6]。云開發(fā)提供的數(shù)據(jù)庫是JSON格式,可創(chuàng)建多個(gè)不同的集合。每個(gè)集合可認(rèn)為是由多條記錄組成的一個(gè)數(shù)組,同時(shí),每條記錄就可看作JSON格式的數(shù)組中的一個(gè)對(duì)象。
訪問數(shù)據(jù)庫的API分為云函數(shù)端和小程序端。有著嚴(yán)格調(diào)用限制的小程序端API使得開發(fā)者可直接在小程序端調(diào)用API來操作非敏感數(shù)據(jù),而云函數(shù)端與小程序端完全隔離的環(huán)境,對(duì)于較敏感、安全性要求較高的數(shù)據(jù),則可交給云函數(shù)端的API進(jìn)行私密且安全的數(shù)據(jù)操作。同時(shí),數(shù)據(jù)庫的讀寫權(quán)限在小程序端和管理端(云控制臺(tái)與云函數(shù)端)也是不同的,小程序端對(duì)數(shù)據(jù)庫的操作受權(quán)限控制(4種權(quán)限),管理端不受數(shù)據(jù)庫的權(quán)限控制,擁有所有讀寫權(quán)限。
1.2.2 云存儲(chǔ)
云存儲(chǔ)指開發(fā)者通過云函數(shù)或小程序端的API實(shí)現(xiàn)存儲(chǔ)的功能。云存儲(chǔ)提供可用性高、穩(wěn)定性高、安全性高的云端存儲(chǔ)服務(wù),支持存儲(chǔ)管理、權(quán)限設(shè)置、上傳管理、組件支持等功能。
1.2.3 云函數(shù)
云函數(shù)指部署并運(yùn)行在云端或服務(wù)器端Node.js中的一段代碼,各云函數(shù)完全獨(dú)立,但可相互調(diào)用,也可與小程序端的函數(shù)以及外界服務(wù)器進(jìn)行交互。
網(wǎng)絡(luò)報(bào)修系統(tǒng)是以微信小程序?yàn)檫\(yùn)行主體,以云開發(fā)平臺(tái)為后端服務(wù)器的線上系統(tǒng)。系統(tǒng)前端功能的主要模塊有故障報(bào)修、系統(tǒng)管理和消息管理。前端通過調(diào)用API接口對(duì)數(shù)據(jù)庫進(jìn)行增刪查改等操作,網(wǎng)絡(luò)報(bào)修系統(tǒng)的整體功能結(jié)構(gòu)如圖1所示。
圖1 網(wǎng)絡(luò)報(bào)修系統(tǒng)功能結(jié)構(gòu)圖
數(shù)據(jù)庫之中的表有用戶表、維修工單表、角色表和故障類型表。表間的關(guān)系可由圖2清晰地表現(xiàn)出來。
圖2 E-R圖
根據(jù)E-R圖設(shè)計(jì)的數(shù)據(jù)庫表的結(jié)構(gòu)具體如表1~表4所示,其中字段的數(shù)據(jù)類型皆為默認(rèn)的字符串類型,開發(fā)人員可根據(jù)字段性質(zhì)自行更改數(shù)據(jù)類型與長度。
用戶表。用戶表用于管理人員,包含用戶小程序?qū)R粯?biāo)識(shí),手機(jī)號(hào)碼和角色id,如表1所示。
表1 用戶表
維修工單表。維修工單表記錄設(shè)備報(bào)修的信息,包含故障信息、維修信息、作業(yè)清單狀態(tài)、維修人員等,如表2所示。
表2 維修工單表
角色表。角色表包含3種角色類型,如表3所示。
表3 角色表
故障類型表。故障類型表包括多種設(shè)備故障類型,如表4所示。
表4 故障類型表
系統(tǒng)用戶分為報(bào)修人員、維修人員和管理人員3種不同角色。用戶可使用該小程序提交報(bào)修信息生成未修工單,管理人員對(duì)收到的維修工單派遣維修人員,維修人員可接收并完成線下維修或者拒絕接收并填寫拒絕維修原因。3大模塊的功能實(shí)現(xiàn)保證了三類用戶群體之間的正常交互,實(shí)現(xiàn)了設(shè)計(jì)小程序的目的。
2.3.1 系統(tǒng)管理
該模塊主要實(shí)現(xiàn)用戶管理、權(quán)限管理和角色管理3大功能。系統(tǒng)用戶以高校師生即報(bào)修人員、維修人員和后勤管理人員3大群體為主。用戶首次進(jìn)入小程序需授權(quán)獲取其OpenID進(jìn)入并選擇自己的角色,而后在登錄時(shí)按照角色的不同,進(jìn)入其專屬界面,實(shí)現(xiàn)其需求或工作職責(zé)。
2.3.2 故障報(bào)修
故障報(bào)修模塊主要完成工單管理、維修反饋管理以及最后線下維修的整個(gè)流程的跟蹤。其主要包括報(bào)修人員選擇故障類型與維修時(shí)間、填寫設(shè)備故障詳細(xì)狀況與維修地點(diǎn);管理員對(duì)提交后的維修工單分配相應(yīng)的維修人員;維修人員根據(jù)報(bào)修人員填寫的故障信息選擇拒絕維修并反饋原因或接收。同時(shí),根據(jù)填寫的維修時(shí)間對(duì)實(shí)際維修時(shí)間進(jìn)行適當(dāng)更改,并完成線下維修。三類用戶皆可查看不同狀態(tài)下的歷史工單。
2.3.3 消息管理
在用戶授權(quán)接收訂閱消息之后,待工單狀態(tài)改變時(shí),系統(tǒng)將根據(jù)OpenID發(fā)送相應(yīng)的消息模板與內(nèi)容。在設(shè)備報(bào)修流程中,管理員分派維修人員之后,系統(tǒng)將發(fā)送訂閱消息給該維修人員通知其進(jìn)行維修;維修人員接收之后,系統(tǒng)將會(huì)向該工單報(bào)修人員發(fā)送訂閱消息,通知最終維修時(shí)間。訂閱消息將在微信的服務(wù)通知模塊中顯示。
完成小程序申請(qǐng)后,在微信開發(fā)者工具中,點(diǎn)擊寫有“云開發(fā)”的圖標(biāo),打開云開發(fā)控制臺(tái),按照步驟創(chuàng)建云環(huán)境,而后進(jìn)行云函數(shù)初始化工作,在config.json文件中填寫“cloudfunctionRoot:云函數(shù)存放目錄”從而創(chuàng)建相應(yīng)的目錄;在app.js中進(jìn)行環(huán)境初始化:“wx.cloud.init({env:環(huán)境ID})”,保存編譯之后云開發(fā)環(huán)境即搭建成功。創(chuàng)建的每個(gè)環(huán)境都有自己唯一的環(huán)境ID來標(biāo)識(shí),默認(rèn)情況下是初始創(chuàng)建的環(huán)境,如果需要更換環(huán)境或創(chuàng)建了多個(gè)環(huán)境則需在云函數(shù)中指定環(huán)境。
詳細(xì)設(shè)計(jì)與代碼編寫主要包括獲取用戶授權(quán)、報(bào)修申請(qǐng)、工單管理、工作通知等功能,以實(shí)現(xiàn)各模塊的職能。
3.2.1 流程圖
設(shè)備故障網(wǎng)絡(luò)報(bào)修小程序的流程如圖3所示。
3.2.2 主要功能代碼
3.2.2.1 申請(qǐng)報(bào)修
報(bào)修人員提交申請(qǐng)后,后臺(tái)代碼將維修工單相關(guān)信息添加到后臺(tái)數(shù)據(jù)庫的“order”表中。
const db=wx.cloud.database().collection('order')
submit:function()
{
db.add
({
data:
{
openid:data.openid,//維修工單相關(guān)信息
},
success: function(){}
})
}
3.2.2.2 管理員分派維修人員
由于數(shù)據(jù)庫權(quán)限對(duì)小程序端有嚴(yán)格的控制,使得數(shù)據(jù)庫的更改權(quán)限只能由該記錄的創(chuàng)建者更改。為了管理人員擁有數(shù)據(jù)庫讀寫的權(quán)限,在云函數(shù)端操作即可擁有所有權(quán)限,所以創(chuàng)建了“orderupdate”云函數(shù)。以分派維修人員為例。
在小程序端調(diào)用該云函數(shù),傳入查詢條件與需要更新的數(shù)據(jù):
wx.cloud.callFunction
({
name: 'orderupdate',
data:
{
action:'paidan',
workerid:"***"http://查詢信息以及需要更改的信息
},
success: function (res) {}
})
云函數(shù)端更新數(shù)據(jù)庫數(shù)據(jù):
switch (event.action)
{
case 'paidan':
{
try
{
return await db.collection('order').doc(event.docid).update
({
data:
{
workerid: "***"http://小程序端傳來的信息
}
})
}
catch(e){}
}
}
如今,在移動(dòng)性學(xué)習(xí)和辦公的趨勢下,傳統(tǒng)的設(shè)備報(bào)修方式已嚴(yán)重影響了設(shè)備的正常使用與維修。該系統(tǒng)結(jié)合用戶需求與設(shè)備申請(qǐng)維修流程,構(gòu)建了一款基于小程序與云開發(fā)的高校設(shè)備網(wǎng)絡(luò)報(bào)修系統(tǒng)。經(jīng)試用與反饋,基于微信小程序與云開發(fā)的設(shè)備報(bào)修系統(tǒng)相比傳統(tǒng)人工報(bào)修、Web報(bào)修等方式具有明顯的優(yōu)勢,簡化了設(shè)備報(bào)修流程,減少了人員因信息流通不暢而導(dǎo)致的時(shí)間浪費(fèi),實(shí)現(xiàn)了設(shè)備報(bào)修的移動(dòng)化與無紙化,提升了設(shè)備的利用率,而且小程序“無需安裝,用完即走”以及跨平臺(tái)的特點(diǎn),也提升了系統(tǒng)的易用性。同時(shí)試用人員指出,希望故障類型更加豐富,工單表的維修地點(diǎn)更加細(xì)化,以方便線下的維修工作,這將在后續(xù)版本中進(jìn)行改進(jìn)。
本文介紹了開發(fā)該系統(tǒng)使用的工具,詳細(xì)論述了該系統(tǒng)的整體結(jié)構(gòu)設(shè)計(jì)與不同模塊的功能,并展示了實(shí)現(xiàn)核心功能的相關(guān)代碼,實(shí)現(xiàn)了設(shè)備網(wǎng)絡(luò)報(bào)修系統(tǒng)的預(yù)期功能。實(shí)踐證明,該系統(tǒng)提高了高校信息化水平。