高洪波
(應急管理部信息研究院,北京 100029)
近年來,國家對安全生產工作高度重視,在《中共中央國務院關于推進安全生產領域改革發展的意見》中要求構建國家、省、市、縣四級重大危險源信息管理體系,對重點行業、重點區域、重點企業實行風險預警控制,有效防范重特大生產安全事故。2019年兩會提出,改革和加強應急管理,實現生產安全事故總量和重特大事故數量持續下降。煤礦領域是防范遏制重特大事故的重點領域,更是各級安全監管監察部門推動安全生產依法治理的關鍵行業,遵照黨中央指示要求,需要大力推進煤礦安全生產信息化項目建設,實現煤礦安全生產風險監測預警。
隨著全國煤礦安全信息化建設的推進,各級煤礦安全生產監管監察部門陸續通過建設煤礦安全風險監測預警系統,全面掌握管轄范圍內的煤礦安全生產重大風險情況。為了提高監測預警系統的使用效能,充分發揮移動互聯網技術的優勢,本文基于Android 平臺研發了煤礦風險監測預警移動端App,幫助監察人員更有效地進行日常監管、遠程監察、數據分析、風險評估、執法監察等工作,真正實現隨時隨地的手機移動監察、移動執法,本文將詳細介紹煤礦風險監測預警App 的設計和實現。
目前在移動端設備采用最廣泛的移動操作系統應當是Android平臺,因此本系統基于Android進行設計開發。Android是一款采用Linux 內核的開源操作系統[1-2],由美國Google 公司與84家硬件制造商、軟件開發商及電信運營商組建開放手機聯盟共同研發,目前已發布到版本13,筆者曾參與第一代Android系統的研發工作。
本系統主要由基于Android 的移動端App、后臺管理系統、Web服務器和數據庫服務器組成,整體架構如圖1所示。

圖1 系統整體架構
移動端App負責系統的應用層實現,用戶可以通過App對煤礦安全監控、人員定位、工業視頻等感知數據、報警信息以及研判報告等進行實時調閱查看;Web服務器負責對App 傳來的各類請求進行封裝處理,并與數據庫服務器進行交互實現數據的讀寫操作;數據庫服務器主要存儲從煤礦安全風險監測預警系統獲取的全量感知數據,主要包括煤礦安全監控、井下作業人員管理系統、沖擊地壓監測系統、水文地質監測系統和礦用重大設備監控數據等;后臺管理系統負責后臺的管理操作,系統管理員可以對賬號信息、權限信息、版本信息等進行控制維護。
本文基于輕量級的前端框架Vue進行移動端應用的構建,開發模式采用MVVM 模式(Model-View-ViewModel),MVVM 模式將移動端應用按三層構建,即模型→視圖→視圖模型,對應各層分別賦予不同職責[3-4]。
Model層即數據層,主要負責提供數據,支持提供從本地數據庫獲取的數據,提供業務邏輯的實體類等數據結構,也提供數據的存儲。本文使用axios 實現數據的請求處理,axios 是通過promise 實現的對ajax 技術的一種封裝,功能非常強大,包括取消請求、超時處理、進度處理等,它對各種瀏覽器的支持非常友好,也可以解決回調地獄問題。
View 層即視圖層,主要負責顯示界面,它不涉及業務邏輯處理,當需要進行業務邏輯處理時通知ViewModel 層。在View層主要利用Vue 框架的組件化特性,將應用頁面拆分成小型、獨立、可復用的一個個組件,每個組件完成屬于自己的獨立功能,通過組件化可大幅度提高應用開發的效率和可復用性。組件的渲染是通過前端路由vue-router實現的,通過不同的url來選擇性地渲染不同的組件。在router對象中,所有的url路徑和組件被建立為映射關系,當需要對組件進行渲染時,router會根據當前url 中hash 指定的路徑匹配到對應的組件上,并將這個組件用于展示。
ViewModel層即視圖數據層,主要負責業務邏輯的處理,它不涉及任何的視圖操作,可通過Data Binding 庫實現綁定View層和ViewModel 層中的數據,通過使用observer 觀察者模式對數據變化進行監聽,并自動通知View 層將對應的視圖進行更新,而當用戶操作視圖,ViewModel 也能監聽到視圖的變化,然后通知數據做相應改動。

圖2 移動端MVVM框架
通過MVVM 模式,實現了數據的雙向綁定,有效降低UI、交互邏輯、業務邏輯和數據間的耦合,并節省了大量的樣板代碼編寫工作。
服務端通過API 接口為移動端提供各類數據交換和共享服務,所有接口均采用HTTP協議,按照RESTful的標準進行實現。為保證接口的安全,采用了DES加密算法對接口數據進行加密,加密解密速度較快,適用于大數據量的場景,可有效防止數據傳輸過程中被篡改或者丟失。

圖3 服務端SSM框架
服務端架構采用SSM 框架(Spring+SpringMVC+MyBatis)進行搭建,SSM是目前主流的Java EE企業級框架[5-6],適用于搭建各類大型應用系統的服務端,有利于簡化開發過程。SSM框架由Spring、SpringMVC、MyBatis三個開源框架整合而成,Spring維護所有對象的創建和依賴關系,降低了組件之間的耦合性;SpringMVC是使用了MVC設計思想的輕量級Web框架,負責請求的轉發和視圖管理,支持靈活的數據驗證、格式化和數據綁定機制;MyBatis作為數據對象的持久化引擎,對數據庫的操作采用xml文件配置,將SQL和代碼及逆行解耦,支持動態的SQL。
本系統在數據庫服務器端基于MySQL 搭建數據庫集群對煤礦全量感知數據、基礎數據以及生產管理數據進行統一存儲和應用。移動端需要對海量數據進行條件查詢操作,如果單純依靠請求服務器端數據庫進行查詢的方式,查詢速度會受到網絡延遲和并發請求的影響,導致用戶體驗不佳。因此,在移動端使用SQLite數據庫作為數據緩存,臨時存取報警信息等查詢頻度高的臨時數據集。SQLite是一款輕量級數據庫[7-8],存取速度快,穩定性高。移動端啟動時,從服務器端數據庫加載數據塊,生成數據結構一致的SQLite 數據文件;每次進行數據查詢操作時,首先從SQLite進行查詢,如果沒有命中,則請求發送至MySQL進行查詢,并更新緩存數據;當進行數據更新操作時,同時對MySQL 和SQLite 進行更新,保證數據一致性,由于移動端應用主要功能是數據的查閱,因此使用SQLite緩存機制可以大幅度提高用戶使用體驗。數據庫架構設計如圖4所示。

圖4 數據庫架構
1)原生和H5混合開發技術
傳統的Android 移動端開發采用原生開發方式,開發者使用Android 官方平臺提供的開發語言、SDK 以及Android studio等開發工具進行開發,原生開發的優點是運行速度快,可以調用底層類庫訪問移動端的設備硬件,諸如攝像頭、GPS等功能,但是原生開發方式的周期較長,開發成本較高,可維護性和移植性不強。隨著移動互聯網技術的成熟,基于H5 的WebAPP開發方式日益普及,開發者可以使用Html5、JavaScipt等Web前端通用技術,基于瀏覽器支持進行界面展示和交互,具有開發周期短、成本低的特點,但是由于Web 技術本身的限制,H5 移動應用不能直接訪問設備硬件,在用戶體驗上存在一定局限性。
本系統由于需要訪問GPS、攝像頭等設備硬件實現煤礦地圖定位以及現場監察執法拍照等功能,因此本文采用了原生Android 和H5 混合開發方式。混合開發是一種取長補短的開發模式,除了地圖和拍照等功能使用原生Android實現外,主要的業務界面均使用基于H5的Web開發技術進行實現。采用混合開發技術,不但提高了開發效率,并且版本更新部署更加方便,每次升級版本只需在服務器端升級即可。
2)跨域訪問技術
本系統是基于前后端分離的架構實現的,跨域訪問技術是實現前端(移動端)與后端(服務端)交互的基礎。跨域是因為瀏覽器的同源策略所導致,同源是指域名、協議、端口相同,同源策略是瀏覽器最核心也最基本的安全功能,解決跨域問題常用的方法有CORS、JSONP、Proxy 等方式。本系統主要采用CORS方式進行跨域訪問,首先從前端瀏覽器發出CORS 預檢請求(preflight request),在請求的header中加上Origin字段,設定請求源(請求協議+域名+端口),服務器端收到請求后,將對比這個字段,如果請求源在服務器端的許可范圍內,服務器端會返回與CORS 相關的響應頭。通過CORS 跨域預檢請求后,瀏覽器發出正式的數據請求,從服務器端返回數據。作為規范化的跨域解決方式,雖然CORS需要進行兩次請求,因為預檢機制通過檢查請求來源能在一定程度上防范CSRF 攻擊,所以在安全性上更加可靠。
煤礦風險監測預警App 主要提供給煤礦安全生產監察執法人員使用,幫助用戶全面掌握轄區內煤礦的安全感知數據、報警及處置情況、風險分布及變化趨勢以及監控系統聯網運行情況。用戶運用這個系統作為監管抓手,對報警多、風險高、處置慢的煤礦企業進行重點關注,以此敦促轄區內煤礦安全生產水平整體改善,降低事故發生率。
系統的主要功能模塊如圖5 所示,包括重點關注信息、風險分級報警、報警統計分析、報警處置查看、監測數據查詢及分析研判報告等功能。

圖5 系統功能架構
重點關注信息功能展示當日轄區內煤礦實時監測數據、風險研判數據、監測統計數據、聯網情況等指標,使用人員可以直觀查看各類重點關注的指標數據,及時掌握當日煤礦安全生產態勢。重點關注信息中展示的內容可以根據用戶的角色、職級、管轄范圍進行自動匹配定制,也支持由用戶自行設置。
風險分級報警功能對轄區內煤礦的瓦斯、一氧化碳超限等達風險級別的報警提供實時推送告知,并按風險級別(紅、橙、黃、藍)重點展示。
報警統計分析功能對煤礦安全監控系統的瓦斯、一氧化碳超限、局扇的開停情況、報警類型占比等進行日、周、月趨勢分析,報警按區劃、時間進行統計,按圖表形式進行展示,并對重大風險、風險等級情況集中匯總。
報警處置查看功能提供轄區內煤礦的甲烷、一氧化碳的超限處置信息,用戶可具體了解超限已處置與未處置的風險區域分布及詳情。
監測數據查詢功能支持從手機端對井工煤礦安全監控數據、井下人員定位數據、水文監測數據、沖擊地壓監測數據及礦井基本信息進行便捷查詢。監察執法人員在現場監察執法時,可通過移動端調閱所有歷史數據,并與煤礦企業的安全監控、人員定位等系統中的數據進行比對確認。
分析研判報告功能提供分析研判周報、月報、風險研判報告,在報告中通過圖表方式展示轄區內煤礦數量、煤礦分類、各系統聯網情況,安全監控系統、井下人員位置系統、視頻監控系統、礦井水文地質監測系統、煤礦沖擊地壓監測系統及礦用重大設備監測系統所采集到的關鍵匯總指標數據及研判分析建議,可進行便捷瀏覽和查閱。

圖6 App功能界面
本研究針對移動互聯網時代煤礦安全生產遠程監察的新需求,研發煤礦風險監測預警App,使煤礦安全監察人員能夠隨時隨地通過移動終端對煤礦安全監控、人員定位、工業視頻、沖擊地壓監測、水文地質監測、礦用重大設備監控等進行遠程巡查,查閱煤礦瓦斯長時間報警未處理、井下超員、無井下帶班領導、煤礦沖擊地壓異常、涌水量、排水量異常等現象,實現遠程監察執法的目的,確實有效提高煤礦安全監管監察效能。