上海市防汛信息中心 上海 200050
原上海防汛值班工作模塊是基于市、區(qū)兩級的結(jié)構(gòu)建設(shè)的,新的需求明確需要拓展形成市、區(qū)、街鎮(zhèn)三級防汛體系聯(lián)動管理,防汛值班用戶體系發(fā)生較大變化;原功能模塊采用的是SSH架構(gòu),所使用的Hibernate技術(shù)對于現(xiàn)在的大數(shù)據(jù)量處理力不從心;前端jsp頁面加載響應(yīng)速度也不能滿足用戶需求。因此,在上海大力推進“一網(wǎng)通管”的形勢下開始新的防汛值班工作模塊建設(shè)。
原防汛值班模塊于2016年開發(fā)完成并投入使用,其設(shè)計思路主要為市區(qū)兩級防汛辦提供值班信息管理和值班工作管理,并提供了市區(qū)兩級值班信息維護、簽到、信息查詢等主要功能,為當(dāng)時的值班值守工作提供了較為便捷的信息化服務(wù)。
本項目以上海水務(wù)云的PaaS平臺提供的硬件架構(gòu)作為底層平臺,在此基礎(chǔ)上構(gòu)建三個層次軟件功能,分別表現(xiàn)如下:集成層主要負責(zé)將相關(guān)數(shù)據(jù)實例化,形成ORM層;業(yè)務(wù)層則主要是用來實現(xiàn)該代碼的業(yè)務(wù)規(guī)則;表現(xiàn)層則完成和用戶的交互。
各個層次劃分設(shè)計圖如下:
圖1 軟件技術(shù)架構(gòu)圖
用戶表現(xiàn)層是整個應(yīng)用軟件中用戶最直接用戶體驗的部分。包括了頁面體驗、短信體驗、IVR體驗等。但是其中90%體驗來自于頁面體驗。用戶在會在表現(xiàn)層獲得各類UI技術(shù)提供的視覺效果,因此表現(xiàn)層的設(shè)計尤為重要。本項目采用JSF作為基本展現(xiàn)技術(shù)框架。
業(yè)務(wù)邏輯架構(gòu)采用struts2.1 提供的基礎(chǔ)架構(gòu)框架,在此基礎(chǔ)上整合了Spring框架,事物的控制也由Spring來處理。與外部系統(tǒng)的交互則通過接口適配器來處理。對于高并發(fā)量的靜態(tài)數(shù)據(jù),本次項目設(shè)計采用JbossCache緩存的方式來提高響應(yīng)速度。
數(shù)據(jù)集成層主要是提供相關(guān)業(yè)務(wù)數(shù)據(jù)實體化的層次,該層次可以采用各類組件,例如:hibernate、mybaits等,快速實現(xiàn)數(shù)據(jù)業(yè)務(wù)實體,便于方便業(yè)務(wù)邏輯層的調(diào)用,本平臺采用的是mybaits組件,便于在處理批量數(shù)據(jù)時提高效率。
原防汛值班值守模塊支持市、區(qū)兩級的值班錄入功能,且市級不能查看區(qū)級的值班情況。因此本次建設(shè)初始就以優(yōu)化流程制度、強化培訓(xùn)等多措并舉來作為需求排摸手段,通過監(jiān)測分析值班人員微信群的日常溝通交流和每個月的總值班運行狀況作為開發(fā)依據(jù)[1]。最后確定增加街鎮(zhèn)級功能,使得防汛值班值守模塊能夠?qū)崿F(xiàn)市級、區(qū)級(各區(qū)防辦、區(qū)防汛成員單位)、街鎮(zhèn)級的三級應(yīng)用,便于應(yīng)急聯(lián)絡(luò)和快速反應(yīng)。系統(tǒng)兼容各瀏覽器的要求,無須設(shè)置兼容性模式。實現(xiàn)防汛值班值守三級應(yīng)用,并提供統(tǒng)一的數(shù)據(jù)服務(wù)。
(1)規(guī)范防汛值班的現(xiàn)場行為,提高防汛值班的響應(yīng)效率。
(2)提高防汛值班排班的信息準(zhǔn)確性。
(3)發(fā)現(xiàn)服務(wù)質(zhì)量短板,提升全市用戶滿意度。
(4)通過機制調(diào)整、工具完善、流程優(yōu)化等方式提升專業(yè)化運營能力,服務(wù)一線員工。
(5)建設(shè)精確管理平臺,由原先簡單手工排班向系統(tǒng)自定義的排班系統(tǒng)轉(zhuǎn)換,適時調(diào)整精確排班策略。
由于數(shù)據(jù)量多,為了提升數(shù)據(jù)查詢的速度,確保在最短的時間內(nèi)獲取所需業(yè)務(wù)信息,該項目采用內(nèi)存緩存的模式實現(xiàn)批量數(shù)據(jù)的查詢,具體實現(xiàn)方法:①查詢的時候采用SQL直接從數(shù)據(jù)庫中獲取相關(guān)信息;②獲取信息后一方面提供給業(yè)務(wù)端作為相關(guān)的顯示,一方面則將其寫入緩存;③當(dāng)下次再查詢數(shù)據(jù)的時候則優(yōu)先進入緩存中進行數(shù)據(jù)的查詢,并取得相關(guān)的業(yè)務(wù)主鍵,將業(yè)務(wù)主鍵和條件存入一個堆棧,將堆棧進行業(yè)務(wù)序列化,并在網(wǎng)絡(luò)上進行傳遞,當(dāng)?shù)竭_服務(wù)器端后,對于序列化的數(shù)據(jù)進行反序列化合并入SQL,原條件執(zhí)行not exist操作,此時符合的邏輯數(shù)據(jù)則不再提取,需要的數(shù)據(jù)則傳遞到客戶端。
具體優(yōu)化和改造的業(yè)務(wù)模塊如下:
(1)防汛值班信息數(shù)據(jù)服務(wù):統(tǒng)一值班信息數(shù)據(jù)服務(wù),并提供統(tǒng)一對外接口,便于大屏等外部各系統(tǒng)獲取值班信息數(shù)據(jù),可供應(yīng)急聯(lián)絡(luò)和快速反應(yīng)。數(shù)據(jù)服務(wù)分為“市防汛指揮部”、“區(qū)防汛指揮部”兩大模塊;
(2)防汛組織機構(gòu)權(quán)限控制:進行市、區(qū)、街鎮(zhèn)三級用戶進行權(quán)限管理,通過統(tǒng)一權(quán)限SSO,可以進行防汛值班值守、洪澇災(zāi)情統(tǒng)計、防汛分區(qū)預(yù)警、防汛一網(wǎng)四庫、短信接收名單、傳真號碼。同時,向各級防辦提供統(tǒng)一賬戶。系統(tǒng)采用用戶權(quán)限組和崗位混合控制的授權(quán)方式,可以根據(jù)需要對各個崗位進行人力分配。
圖2 上海市基于“一網(wǎng)通管”的防汛指揮大屏
(1)防汛指揮模塊開發(fā)
微信作為當(dāng)前主要的社群媒體,本項目在微信端也有涉及。在全市統(tǒng)一的政務(wù)微信平臺上,通過相關(guān)的接口,建立防汛工作即時聯(lián)絡(luò)體系、應(yīng)用模塊統(tǒng)一入口和信息采集發(fā)布網(wǎng)絡(luò)。設(shè)置各防汛機構(gòu)分級管理員,錄入相關(guān)防汛工作人員及通訊錄。
(2)簽到功能實現(xiàn)
移動端簽到基于全市統(tǒng)一的政務(wù)微信平臺實現(xiàn),支持市、區(qū)、街鎮(zhèn)三級值班人員簽到,同時具有查看本級及下級簽到情況功能,便于管理人員查看值班人員到崗情況,如發(fā)現(xiàn)當(dāng)前部門無人簽到,則可讀取應(yīng)值班人員信息,便于其聯(lián)系到對應(yīng)的值班人員。
該簽到功能分2步實現(xiàn):
1)政務(wù)微信通過統(tǒng)一數(shù)據(jù)接口抓取當(dāng)前值班列表信息:因值班制度的要求,防汛值班分為白班和晚班兩種,每天上午8點到9點、下午5點到6點進行交接班,因此在不同的時間段內(nèi),所抓取的值班列表是不相同的;
2)值班人員通過值班列表上的“簽到”按鈕進行簽到操作,程序后臺讀取當(dāng)前進行簽到操作的用戶的手機號碼,發(fā)送到服務(wù)器端進行比對,姓名和手機號均匹配的,則視為簽到成功。
隨著各類移動應(yīng)用的發(fā)展,未來對于防汛值班工作的要求將會進一步提升,不僅要能排班,更要排好班。不僅要人來排班,更要通過機器自動排班。通過信息化的管理手段,規(guī)范化、精細化管理運行值班工作,提供風(fēng)險管理與風(fēng)險預(yù)測手段[3],因此不難預(yù)見,該項目后續(xù)的發(fā)展和建設(shè)將向著智能化方向前進。這對于項目的建議和管理人員無疑提出了更高的要求,我們也相信,未來這個目標(biāo)一定能實現(xiàn)。