丰碧泓,潘瑾,陈以恒,李文浩,张文毅
(1.国网上海市电力公司工程建设咨询分公司,上海 200120;2.上海交通大学,电子信息与电气工程学院,上海 200240)
电力建设工程安全稳定是电网公司赖以生存和发展的基础,是电网公司的“生命线”[1]。但是在当下快速发展的社会形态下,电力工程面临着业务需求复杂、施工环境苛刻等问题,作业风险日益增加,稍有不慎就会引发安全事故,造成不可估量的人员伤亡和经济损失[2]。在实际的建设生产中,设备的不安全状态、作业人员的危险行为等因素难以进行定量参数化的评估,而加强对工程的督查监管,及时发现风险因素加以控制,在预防重大安全事故,保障电力工程安全运行上具有重要的意义。
目前,在电力工程风险管控的信息化系统的设计开发中,大多数研究主要面向业务需求高度定制化开发[3-6],单体应用程序涵盖了系统的所有功能,每个功能模块间的耦合度较高,扩展性上存在局限。同时,在更新迭代时,会带来巨大的维护成本,且易出现牵一发而动全身的问题。对此,本文将微服务架构[7]引入到电力建设工程安全管理体系中,在功能模块按需设计的基础上,将系统分解为多个具有独立功能的子系统进行开发,每个子系统联合协调运作,构成完整的电力建设工程安全风险管控系统。系统的最终产出包含微服务后端程序、Web前端应用、手机端App,用户能够完成对电力工程的进度上报、风险计算、督查安排、责任考核和信息核准。通过该系统的使用,可以规范化安全监督流程,实现对电力作业风险的闭环化管理,有效提升风险管控效能,具有良好的实际意义。
在业务需求上,本系统的主要用户可抽象出项目管理员、安监督察员、责任考核员和信息核查员四类。项目管理员为工程建设的一线员工,直接管理项目的作业规划和进度上报,提供整个流程的基础数据;安监督察员根据所上报的项目作业内容,依照一定的风险识别评估方法,筛选出当前风险较大的项目安排督察,并将所发现的问题和整改意见进行上报;责任考核员根据督察反馈结果对问题进行定责,以责令项目管理员进行整改,从而降低潜在隐患的发生,三者的联合互通实现了对工程建设风险的闭环管控。此外,由于电力工程的规模庞大、内容复杂,施工作业的内容和方案会不断调整变化,导致工程现场的作业情况与安监督察员获取的信息大相径庭,因此需有信息核查员及时勘察工程的运行情况,反馈并督促项目管理员进行内容更改,形成另一个小闭环,以提高系统基础数据的准确性和实时性。
在技术需求上,系统后端服务程序基于微服务架构搭建,并与底层数据库进行交互。Web前端应用、IOS和Android端App基于前后端分离[8]的思想进行开发,以RESTFUL API[9]接口的形式与后端进行交互,最终实现整个系统的联通。
在权限需求上,针对不同的访问用户需设置不同的权限。上文中已经抽象出四类用户,相同类别用户的查询权限较为相似,但按照职务又可分为主任、副主任、普通员工等,在增、删、改操作上会有所差别。因此,需实现前端视觉权限和后端请求权限的双重控制,前者用于在前端展示不同的页面,后者用于在后端判断接口调用的权限。
根据上文的实现目标,将系统的基本业务需求抽象为5大功能模块,分别为工程项目数据管理、工程风险计算、安监督查管理、安全责任量化考核和周计划信息核准。5个模块相互协作,共组成2个闭环,具体内容如图1所示。
图1 系统功能模块设计
(1) 工程项目数据管理。对现有的项目信息进行标准化和规范化,项目管理员对实际的工程进展进行在线上报和更新,为安监督查员提供基础数据。
(2) 工程风险计算。设计了涵盖人员、机械、环境和管理四个维度的风险计算器,项目管理员填写相关信息后,系统能根据权重分配计算出当前作业的动态风险值。同时,环境维度基于爬虫获取天气并实时刷新,自动调整动态风险,可为安监督查提供参考。
(3) 安监督查管理。安监督查员根据项目作业内容和潜在的动态风险,在线制定每日督查方案,督查完毕后,可在系统上发布口头警告通知单和整改通知单。
(4) 安全责任量化考核。责任考核员根据督察反馈结果对问题进行定责,同时根据考核规则自动计算责任扣分,并面向所有员工展示计分排名,督促项目管理员在作业一线进行整改,以加强风险管控能力。
(5) 周计划信息核准。信息核查员基于上报的项目进展情况,每日前往作业现场进行核准,并填写系统数据和实际情况的差异程度,系统按照作业条目计算数据的准确率,并反馈至项目管理员,督促加强信息上报的实时性和准确性。
满足业务需求后,为支持系统的运行,还设计了公共通用模块,模块的内容包含系统的定时任务管理、基本信息管理、日志信息管理。系统的定时任务包括爬虫定时启动并获取天气数据,自动刷新项目的动态风险值;基本信息管理功能用于增加、修改系统运行时的基本元素,比如施工单位信息等;日志信息管理用于检测和记录系统的运行状态,同时可查看系统的异常日志,辅助维护人员对系统的状态监控和错误排查。
此外,为提升系统的安全性和隐私性,本文设计了用户管理模块,包含了用户的信息管理、密码验证和权限分配。该模块在前端或App端进行后端接入时控制用户权限,可完成对用户的群组划分,配置多样化的访问权限,以实现前端视觉权限与后端请求权限的双重管理。
为保证系统模块间的独立性,提升其拓展能力和易维护性,后端采用微服务实现,具体的架构采用Spring Cloud[10],本系统使用Spring Cloud中的Eureka[11]组件作为服务发现中心,以解决服务地址硬编码导致的重启IP变化问题。具体的,在后端程序中创建一个新的Spring Boot[12]项目作为Eureka服务端,之后每个客户端项目向服务端进行注册,此时服务消费者可以从服务端获取到注册表信息并查找其他服务,从而进行远程调用。
在权限管理上,采用Spring Security[13]安全框架进行实现。本系统将主要用户分为项目管理员、安监督察员、责任考核员、信息核查员总共4个类型,并设置了额外的系统超级管理员。每一类用户对接口拥有不同的操作权限,具体的,通过对过滤器进行配置从而实现后端接口请求权限的控制。
后端系统实现时,将5大业务功能模块合并成为一个整体,并与公共通用模块和用户管理模块构成3个微服务进行独立开发。微服务后端的具体细节如图2所示。每个服务都包含了控制层(Controller)、服务层(Service)和数据持久层(Mapper)。控制层对外提供API接口,以JSON格式进行数据交互,以便用户操作进行访问;服务层封装了系统所有的业务逻辑,与数据持久层进行交互,并将结果返回到控制层;数据持久层主要通过连接MySQL并执行特定的SQL语句实现数据的增删改查,为服务层提供支撑。
在实现前端应用时,首先使用ERP软件设计出简约的UI界面,之后基于Vue.js[14]架构并应用Element UI进行实例化。Vue.js是一套用于构建用户界面的渐进式框架,其核
图2 系统后端的架构图
心只关注视图层,易于上手,且便于与第三方库或既有项目整合。此外,该框架还是一个非侵入性的响应式系统,代码修改时,视图会进行同步更新,可有效减轻开发人员的工作负担,同时提高了页面的渲染效率。
在前端视觉权限的实现上,当用户登录成功后,首先调用特定的接口读取到该用户可访问的页面信息,然后渲染出不同的导航栏,每个用户只能对特定的页面进行访问和跳转,从而实现权限的控制。
为满足多样化的用户需求,除前端Web应用外,本系统还提供IOS和Android端手机App。原生的App开发方式面对跨平台应用时,需同时开发、维护多份独立的代码,会使开发成本成倍增长,后续的维护同样复杂。本系统设计时选取跨平台方案Flutter[15]开发手机端App,可实现“一套代码,多端运行”。Flutter架构内置丰富的Widget和动画效果,并且能在不同平台上获得相同的体验,采用该架构可有效缩短开发周期,同时提高代码的复用率。
系统开发完毕后,首先需进行功能测试,本文采用黑盒测试的方法,针对具体的页面和功能点逐一测试,并记录下测试的所属页面、用例说明、测试流程、预期结果和测试结果。经过人工测试后,可以验证系统功能点与设计时的逻辑达到一致,能够较好地满足实际需求。
除功能测试外,本文还对系统性能进行测试,主要是为了检验并发情况下的系统响应时间,从而判断系统是否满足性能需求。本文使用Apache推出的JMeter作为性能测试工具,分别在并发量为100人和300人时,以用户获取自己的身份信息作为测试接口,对系统进行了两次并发测试并生成相应的聚合报告,测试结果如表1和表2所示,可以看出,系统的平均响应时间都在200 ms左右,当并发量增大后,系统的最大响应时间随之增大,但平均值和中位数变化不大,且测试的错误率都为0%,说明系统性能稳定,能够应对一定规模的并发请求。
表1 并发量为100时的系统性能测试结果 单位:ms
表2 并发量为300时的系统性能测试结果 单位:ms
本文将数据思维与信息技术融入电力建设工程的安全监督体系,设计实现了基于微服务的电力建设工程安全风险管控系统。系统包含工程项目数据管理、工程风险计算、安监督查管理、安全责任量化考核和周计划信息核准5大功能模块,实现了对工程风险的双闭环管控。系统目前已经正式投入运行,有效提高了电网工程安全风险管控效能,促进安全管理实现标准化、规范化和精细化,同时为支撑能源物联网的建设提供了准确、可靠的建设工程数据。