許建遠
(廣東電網有限責任公司茂名供電局,廣東茂名,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的實時查詢、歷史查詢,以及統計分析處理的展示。