上海市防汛信息中心 上海 200050
原上海防汛值班工作模块是基于市、区两级的结构建设的,新的需求明确需要拓展形成市、区、街镇三级防汛体系联动管理,防汛值班用户体系发生较大变化;原功能模块采用的是SSH架构,所使用的Hibernate技术对于现在的大数据量处理力不从心;前端jsp页面加载响应速度也不能满足用户需求。因此,在上海大力推进“一网通管”的形势下开始新的防汛值班工作模块建设。
原防汛值班模块于2016年开发完成并投入使用,其设计思路主要为市区两级防汛办提供值班信息管理和值班工作管理,并提供了市区两级值班信息维护、签到、信息查询等主要功能,为当时的值班值守工作提供了较为便捷的信息化服务。
本项目以上海水务云的PaaS平台提供的硬件架构作为底层平台,在此基础上构建三个层次软件功能,分别表现如下:集成层主要负责将相关数据实例化,形成ORM层;业务层则主要是用来实现该代码的业务规则;表现层则完成和用户的交互。
各个层次划分设计图如下:
图1 软件技术架构图
用户表现层是整个应用软件中用户最直接用户体验的部分。包括了页面体验、短信体验、IVR体验等。但是其中90%体验来自于页面体验。用户在会在表现层获得各类UI技术提供的视觉效果,因此表现层的设计尤为重要。本项目采用JSF作为基本展现技术框架。
业务逻辑架构采用struts2.1 提供的基础架构框架,在此基础上整合了Spring框架,事物的控制也由Spring来处理。与外部系统的交互则通过接口适配器来处理。对于高并发量的静态数据,本次项目设计采用JbossCache缓存的方式来提高响应速度。
数据集成层主要是提供相关业务数据实体化的层次,该层次可以采用各类组件,例如:hibernate、mybaits等,快速实现数据业务实体,便于方便业务逻辑层的调用,本平台采用的是mybaits组件,便于在处理批量数据时提高效率。
原防汛值班值守模块支持市、区两级的值班录入功能,且市级不能查看区级的值班情况。因此本次建设初始就以优化流程制度、强化培训等多措并举来作为需求排摸手段,通过监测分析值班人员微信群的日常沟通交流和每个月的总值班运行状况作为开发依据[1]。最后确定增加街镇级功能,使得防汛值班值守模块能够实现市级、区级(各区防办、区防汛成员单位)、街镇级的三级应用,便于应急联络和快速反应。系统兼容各浏览器的要求,无须设置兼容性模式。实现防汛值班值守三级应用,并提供统一的数据服务。
(1)规范防汛值班的现场行为,提高防汛值班的响应效率。
(2)提高防汛值班排班的信息准确性。
(3)发现服务质量短板,提升全市用户满意度。
(4)通过机制调整、工具完善、流程优化等方式提升专业化运营能力,服务一线员工。
(5)建设精确管理平台,由原先简单手工排班向系统自定义的排班系统转换,适时调整精确排班策略。
由于数据量多,为了提升数据查询的速度,确保在最短的时间内获取所需业务信息,该项目采用内存缓存的模式实现批量数据的查询,具体实现方法:①查询的时候采用SQL直接从数据库中获取相关信息;②获取信息后一方面提供给业务端作为相关的显示,一方面则将其写入缓存;③当下次再查询数据的时候则优先进入缓存中进行数据的查询,并取得相关的业务主键,将业务主键和条件存入一个堆栈,将堆栈进行业务序列化,并在网络上进行传递,当到达服务器端后,对于序列化的数据进行反序列化合并入SQL,原条件执行not exist操作,此时符合的逻辑数据则不再提取,需要的数据则传递到客户端。
具体优化和改造的业务模块如下:
(1)防汛值班信息数据服务:统一值班信息数据服务,并提供统一对外接口,便于大屏等外部各系统获取值班信息数据,可供应急联络和快速反应。数据服务分为“市防汛指挥部”、“区防汛指挥部”两大模块;
(2)防汛组织机构权限控制:进行市、区、街镇三级用户进行权限管理,通过统一权限SSO,可以进行防汛值班值守、洪涝灾情统计、防汛分区预警、防汛一网四库、短信接收名单、传真号码。同时,向各级防办提供统一账户。系统采用用户权限组和岗位混合控制的授权方式,可以根据需要对各个岗位进行人力分配。
图2 上海市基于“一网通管”的防汛指挥大屏
(1)防汛指挥模块开发
微信作为当前主要的社群媒体,本项目在微信端也有涉及。在全市统一的政务微信平台上,通过相关的接口,建立防汛工作即时联络体系、应用模块统一入口和信息采集发布网络。设置各防汛机构分级管理员,录入相关防汛工作人员及通讯录。
(2)签到功能实现
移动端签到基于全市统一的政务微信平台实现,支持市、区、街镇三级值班人员签到,同时具有查看本级及下级签到情况功能,便于管理人员查看值班人员到岗情况,如发现当前部门无人签到,则可读取应值班人员信息,便于其联系到对应的值班人员。
该签到功能分2步实现:
1)政务微信通过统一数据接口抓取当前值班列表信息:因值班制度的要求,防汛值班分为白班和晚班两种,每天上午8点到9点、下午5点到6点进行交接班,因此在不同的时间段内,所抓取的值班列表是不相同的;
2)值班人员通过值班列表上的“签到”按钮进行签到操作,程序后台读取当前进行签到操作的用户的手机号码,发送到服务器端进行比对,姓名和手机号均匹配的,则视为签到成功。
随着各类移动应用的发展,未来对于防汛值班工作的要求将会进一步提升,不仅要能排班,更要排好班。不仅要人来排班,更要通过机器自动排班。通过信息化的管理手段,规范化、精细化管理运行值班工作,提供风险管理与风险预测手段[3],因此不难预见,该项目后续的发展和建设将向着智能化方向前进。这对于项目的建议和管理人员无疑提出了更高的要求,我们也相信,未来这个目标一定能实现。