高洪波
(应急管理部信息研究院,北京 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,使煤矿安全监察人员能够随时随地通过移动终端对煤矿安全监控、人员定位、工业视频、冲击地压监测、水文地质监测、矿用重大设备监控等进行远程巡查,查阅煤矿瓦斯长时间报警未处理、井下超员、无井下带班领导、煤矿冲击地压异常、涌水量、排水量异常等现象,实现远程监察执法的目的,确实有效提高煤矿安全监管监察效能。