许建远
(广东电网有限责任公司茂名供电局,广东茂名,525000)
采用JAVA7的WatchService技术实时监视配网SCADA系统的告警短信目录,对于新增短信文件进行有关处理-解析、匹配、新增地图信息等,把短信数据保存到数据库,并将修改后的文件保存到新的短信目录。新目录下的短信由其他模块负责,发送到中调的短信平台,再发送给有关工作人员。
短信内容的获取和匹配是实现短信告警自动导航各项功能的核心,软件系统的设计、开发遵循以下原则:
(a)采用螺旋模型(收集整理需求、设计原型、用户确认);(b)遵循软件工程化的设计方法和管理原则;
(c)采用面向对象和模块化的设计和实现技术,强调软件重用、数据重用和系统的互操作性,并最终实现系统功能的综合一体化;
(d)在满足系统的各类要求的前提下,保持一定的可扩充性,在将来需要时进行功能扩充;
(e)松耦合、接口隔离原则,提高软件的组件化特征,提高软性的成熟度。
(f)组合聚合原则。减少继承方式,多采用组合方式,增强系统的灵活性,减少系统的耦合度和复杂度。
(g)软件系统运行可靠,信息保密;
(h)加强软件测试,包括白盒测试(单元测试)、黑盒测试(系统测试等),提高软件可靠性和系统的稳定性。
根据软件的设计目标,应开发下列内容,以满足功能要求。
(a)开发XML/数据库接口,能够获取分析短信内容,所需的匹配信息,可将数据保存入库。
(b)设置定时任务与WatchService,可以实现短信内容的读取、匹配、入库的定时自动执行。
(c)进行高德地图API二次开发,用来指示短信告警的发生位置。
(d)对短信数据统计分析,为查询提供支持。
(e)Pc端可以通过WEB界面提供信息查询以及系统维护信息,可以远程调阅查看。
1.4.1 软件开发平台
本项目开发采用EclipseIDE,该开发平台是为应用系统开发者提供的软件开发环境。它除提供系统软件、支持二次开发的工具软件和应用编程接口外,还提供:创建、编译、测试应用软件所需的编译器、排错工具、开发工具、测试工具、部署工具等。
软件系统开发平台(语言)包括:JAVA、Html、CSS、JavaScript。
1.4.2 软件运行平台
软件运行平台部署在Tomcat服务器上。Tomcat 技术先进、性能稳定、运行时占用的系统资源小、扩展性好,支持负载均衡与邮件服务。软件基于JavaEE平台构建,包括JAVA容器Apache/Tomcat服务器,以及中间件Spring+IBatis/Hibernate+DWR。 Spring是为了解决企业应用开发的复杂性而创建的,它是一个轻量级的控制反转(IoC)和面向切面(AOP)的JavaBean容器框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情,具有轻便、易使用、易扩充、用途广泛等特点。
1.4.3 软件的功能模块
软件设计主要包括以下几个模块。
(a)XML/数据库接口;
(b)定时任务与系统监视;
(c)高德地图API二次开发;
(d)告警短信缓存以及统计分析;
(e)界面信息展示,实时告警短信、历史短信的查询,统计分析数据的查询。
1.4.4 技术框架
(1)JAVAEE框架
本项目基于JavaEE平台构建,包括JAVA容器Apache/Tomcat服务器,以及中间件Spring+IBatis/Hibernate+DWR。 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的JavaBean容器框架。IBatis是对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库,iBatis 使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。DWR是RPC技术,它通过反射等技术将后台的JAVA服务类直接暴露给前台JavaScript,使得前台JS代码调用后台的JAVA方法就如同直接调用JS方法一样,直截了当、简单方便。
图1
(2)XML
XML就是一种数据描述语言,广泛用于跨系统跨平台的数据传递及交互。本项目中,告警短信是一个个XML文件,格式固定数量较大。为了处理速度及便利,项目里用到JDOM和SAX两套接口。SAX是基于事件解析,它的优点是不需要等到整个XML文件被加载完成后在开始处理,而是加载到哪处理到哪,这样便带来了效率上的优势。而相比SAX,JDOM可以随机访问XML的DOM节点,且使用更简洁。
(3)WatchService
短信模块是主配网SCADA系统基本功能模块,负责将系统发现/生成的事项/告警信息,以短信方式发送给有关工作人员。一般情况下保存短信的目录会有大量的短信文件,采用传统的定时扫描目录文件的做法,效率低且会导致较高的系统运行负荷。本项目采用JAVA7的WatchService技术,在操作系统级实现对短信指定目录的增加、修改文件操作类别的监视,对新增短信文件进行有关处理-解析、匹配、新增地图信息等,把短信数据保存到数据库,并将修改后的文件保存到新的短信目录。
(4)百度/高德地图API
地 图 组 件 JavaScript API, 是 由JavaScript 语言编写的应用程序接口,支持在网站或移动端中构建功能丰富、交互性强的地图应用程序。 百度/高德地图提供了功能丰富的二次开发支持,包括地图基类、自建图层、信息窗体、路径规划、搜索服务、地图控件、定位、基础库、工具类等等。基于百度/高德地图JavaScript API 对外提供的UI组件库,侧重于帮助开发者快速实现地图上UI组件的个性化展示。在本系统中我们利用信息窗体AMap.AdvancedInfoWindow来构建我们个性化的地图弹窗。
(5)Echart及ExtJS
本项目中用到图表来展示短信统计数据。图表包括公司DNN100平台的图表组件以及百度的Echart组件,Echart可运行在 PC 和移动设备上,包括折线图、柱状图、散点图、饼图、K线图、盒形图、热力图、线图、关系图、treemap、漏斗图、仪表盘等等。本项目除了利用Echart图表组件库,本系统还采用ExtJS/JQuery等RIA技术,提供客户端丰富直观的信息可视化展示。
系统通过JDOM/SAX接口,处理所有的短信XML文件,读取一条条记录,嵌入高德地图的位置链接,然后将短信保存为XML文件存到另一个目录下,同时将短信记录保存到数据库中。
由于告警信息有时会大量出现,系统需做缓冲优化处理,采用SAX接口提高XML处理速度,采用大容量缓冲循环队列,以保证对大并发量告警信息的有效处理,采用读取、保存多线程技术以提高处理效率及可靠性。
利用CRON表达式,定义Spring的定时任务,用来定时处理XML/数据库操作。在Spring的主配置文件applicationContext.xml里配置定义定时任务task。
WatchService负责对原系统短信目录的实时监视,如下图所示。本对象需在Tomcat的web.xml需配置成Servlet,以在系统初始化时加载执行。
利用E8000EMS系统的维护的设备经纬度数据,在短信里嵌入地图链接。百度/高德地图提供了功能丰富的二次开发支持,信息窗体AMap.AdvancedInfoWindow可用来定义个性化的地图信息弹窗,用来指示短信告警的发生位置。
图2
图3
系统采用JAVA7的WatchService技术,在操作系统级实现对短信指定目录的增加、修改文件操作类别的监视,对新增短信文件进行有关处理-解析、匹配、新增地图信息等,把短信数据保存到数据库,并将修改后的文件保存到新的短信目录。短信由其他系统转发到中调短信平台。
为了对短数据做进一步的分析加工,本软件除了对短信进行定位链接处理,还把短信保存到数据库里去。通过iBATIS接口,对短信数据库进行统计分析处理,为查询提供支持。
在系统设计上,本软件采用BS架构,采用包括Spring+IBatis +DWR的JAVAEE框架。通过Spring的CORN定时机制实现对短信XML的加工处理。通过百度/高德地图API在告警短信里嵌入地图链接以及在地图上显示有效准确的提示。通过ECHART技术实现告警短信日月年统计分析的可视化展示。
在软件功能上,本软件对短信数据进行了缓存,并增加地图标注信息。短信告警是否有漏报,与平台告警进行比较;短信告警中是否带有有效的位置信息,可通过百度/高德地图打开定位进行确认;通过对比短信定位设备位置与GIS系统设备位置,确定是否一致。
在十三五电网规划快速发展的大前提下,广东电网需要全面实现配网自动化,解决盲调问题,为配网抢修提供强有力的支撑。短信平台是SCADA系统传统的子系统模块,对配网自动化非常重要,本软件对告警短信进行有意义的扩充,采用简捷有效的处理思路,充分利用当前如火如荼的移动互联网APP,有效的将地图软件GIS地理位置信息运用于配网抢修、运维工作中。另外,对短信数据的缓存也是对以往工作的有意义的补充,是对SCADA系统短信子系统的丰富完整,为短信子系统提供了基于WEB的实时查询、历史查询,以及统计分析处理的展示。