許建遠
(廣東電網有限責任公司茂名供電局,廣東茂名,525000)
采用JAVA7的WatchService技術實時監(jiān)視配網SCADA系統(tǒng)的告警短信目錄,對于新增短信文件進行有關處理-解析、匹配、新增地圖信息等,把短信數(shù)據(jù)保存到數(shù)據(jù)庫,并將修改后的文件保存到新的短信目錄。新目錄下的短信由其他模塊負責,發(fā)送到中調的短信平臺,再發(fā)送給有關工作人員。
短信內容的獲取和匹配是實現(xiàn)短信告警自動導航各項功能的核心,軟件系統(tǒng)的設計、開發(fā)遵循以下原則:
(a)采用螺旋模型(收集整理需求、設計原型、用戶確認);(b)遵循軟件工程化的設計方法和管理原則;
(c)采用面向對象和模塊化的設計和實現(xiàn)技術,強調軟件重用、數(shù)據(jù)重用和系統(tǒng)的互操作性,并最終實現(xiàn)系統(tǒng)功能的綜合一體化;
(d)在滿足系統(tǒng)的各類要求的前提下,保持一定的可擴充性,在將來需要時進行功能擴充;
(e)松耦合、接口隔離原則,提高軟件的組件化特征,提高軟性的成熟度。
(f)組合聚合原則。減少繼承方式,多采用組合方式,增強系統(tǒng)的靈活性,減少系統(tǒng)的耦合度和復雜度。
(g)軟件系統(tǒng)運行可靠,信息保密;
(h)加強軟件測試,包括白盒測試(單元測試)、黑盒測試(系統(tǒng)測試等),提高軟件可靠性和系統(tǒng)的穩(wěn)定性。
根據(jù)軟件的設計目標,應開發(fā)下列內容,以滿足功能要求。
(a)開發(fā)XML/數(shù)據(jù)庫接口,能夠獲取分析短信內容,所需的匹配信息,可將數(shù)據(jù)保存入庫。
(b)設置定時任務與WatchService,可以實現(xiàn)短信內容的讀取、匹配、入庫的定時自動執(zhí)行。
(c)進行高德地圖API二次開發(fā),用來指示短信告警的發(fā)生位置。
(d)對短信數(shù)據(jù)統(tǒng)計分析,為查詢提供支持。
(e)Pc端可以通過WEB界面提供信息查詢以及系統(tǒng)維護信息,可以遠程調閱查看。
1.4.1 軟件開發(fā)平臺
本項目開發(fā)采用EclipseIDE,該開發(fā)平臺是為應用系統(tǒng)開發(fā)者提供的軟件開發(fā)環(huán)境。它除提供系統(tǒng)軟件、支持二次開發(fā)的工具軟件和應用編程接口外,還提供:創(chuàng)建、編譯、測試應用軟件所需的編譯器、排錯工具、開發(fā)工具、測試工具、部署工具等。
軟件系統(tǒng)開發(fā)平臺(語言)包括:JAVA、Html、CSS、JavaScript。
1.4.2 軟件運行平臺
軟件運行平臺部署在Tomcat服務器上。Tomcat 技術先進、性能穩(wěn)定、運行時占用的系統(tǒng)資源小、擴展性好,支持負載均衡與郵件服務。軟件基于JavaEE平臺構建,包括JAVA容器Apache/Tomcat服務器,以及中間件Spring+IBatis/Hibernate+DWR。 Spring是為了解決企業(yè)應用開發(fā)的復雜性而創(chuàng)建的,它是一個輕量級的控制反轉(IoC)和面向切面(AOP)的JavaBean容器框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情,具有輕便、易使用、易擴充、用途廣泛等特點。
1.4.3 軟件的功能模塊
軟件設計主要包括以下幾個模塊。
(a)XML/數(shù)據(jù)庫接口;
(b)定時任務與系統(tǒng)監(jiān)視;
(c)高德地圖API二次開發(fā);
(d)告警短信緩存以及統(tǒng)計分析;
(e)界面信息展示,實時告警短信、歷史短信的查詢,統(tǒng)計分析數(shù)據(jù)的查詢。
1.4.4 技術框架
(1)JAVAEE框架
本項目基于JavaEE平臺構建,包括JAVA容器Apache/Tomcat服務器,以及中間件Spring+IBatis/Hibernate+DWR。 Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的JavaBean容器框架。IBatis是對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫,iBatis 使用簡單的XML 和注解來配置和映射基本數(shù)據(jù)類型、Map 接口和POJO 到數(shù)據(jù)庫記錄。DWR是RPC技術,它通過反射等技術將后臺的JAVA服務類直接暴露給前臺JavaScript,使得前臺JS代碼調用后臺的JAVA方法就如同直接調用JS方法一樣,直截了當、簡單方便。
圖1
(2)XML
XML就是一種數(shù)據(jù)描述語言,廣泛用于跨系統(tǒng)跨平臺的數(shù)據(jù)傳遞及交互。本項目中,告警短信是一個個XML文件,格式固定數(shù)量較大。為了處理速度及便利,項目里用到JDOM和SAX兩套接口。SAX是基于事件解析,它的優(yōu)點是不需要等到整個XML文件被加載完成后在開始處理,而是加載到哪處理到哪,這樣便帶來了效率上的優(yōu)勢。而相比SAX,JDOM可以隨機訪問XML的DOM節(jié)點,且使用更簡潔。
(3)WatchService
短信模塊是主配網SCADA系統(tǒng)基本功能模塊,負責將系統(tǒng)發(fā)現(xiàn)/生成的事項/告警信息,以短信方式發(fā)送給有關工作人員。一般情況下保存短信的目錄會有大量的短信文件,采用傳統(tǒng)的定時掃描目錄文件的做法,效率低且會導致較高的系統(tǒng)運行負荷。本項目采用JAVA7的WatchService技術,在操作系統(tǒng)級實現(xiàn)對短信指定目錄的增加、修改文件操作類別的監(jiān)視,對新增短信文件進行有關處理-解析、匹配、新增地圖信息等,把短信數(shù)據(jù)保存到數(shù)據(jù)庫,并將修改后的文件保存到新的短信目錄。
(4)百度/高德地圖API
地 圖 組 件 JavaScript API, 是 由JavaScript 語言編寫的應用程序接口,支持在網站或移動端中構建功能豐富、交互性強的地圖應用程序。 百度/高德地圖提供了功能豐富的二次開發(fā)支持,包括地圖基類、自建圖層、信息窗體、路徑規(guī)劃、搜索服務、地圖控件、定位、基礎庫、工具類等等?;诎俣?高德地圖JavaScript API 對外提供的UI組件庫,側重于幫助開發(fā)者快速實現(xiàn)地圖上UI組件的個性化展示。在本系統(tǒng)中我們利用信息窗體AMap.AdvancedInfoWindow來構建我們個性化的地圖彈窗。
(5)Echart及ExtJS
本項目中用到圖表來展示短信統(tǒng)計數(shù)據(jù)。圖表包括公司DNN100平臺的圖表組件以及百度的Echart組件,Echart可運行在 PC 和移動設備上,包括折線圖、柱狀圖、散點圖、餅圖、K線圖、盒形圖、熱力圖、線圖、關系圖、treemap、漏斗圖、儀表盤等等。本項目除了利用Echart圖表組件庫,本系統(tǒng)還采用ExtJS/JQuery等RIA技術,提供客戶端豐富直觀的信息可視化展示。
系統(tǒng)通過JDOM/SAX接口,處理所有的短信XML文件,讀取一條條記錄,嵌入高德地圖的位置鏈接,然后將短信保存為XML文件存到另一個目錄下,同時將短信記錄保存到數(shù)據(jù)庫中。
由于告警信息有時會大量出現(xiàn),系統(tǒng)需做緩沖優(yōu)化處理,采用SAX接口提高XML處理速度,采用大容量緩沖循環(huán)隊列,以保證對大并發(fā)量告警信息的有效處理,采用讀取、保存多線程技術以提高處理效率及可靠性。
利用CRON表達式,定義Spring的定時任務,用來定時處理XML/數(shù)據(jù)庫操作。在Spring的主配置文件applicationContext.xml里配置定義定時任務task。
WatchService負責對原系統(tǒng)短信目錄的實時監(jiān)視,如下圖所示。本對象需在Tomcat的web.xml需配置成Servlet,以在系統(tǒng)初始化時加載執(zhí)行。
利用E8000EMS系統(tǒng)的維護的設備經緯度數(shù)據(jù),在短信里嵌入地圖鏈接。百度/高德地圖提供了功能豐富的二次開發(fā)支持,信息窗體AMap.AdvancedInfoWindow可用來定義個性化的地圖信息彈窗,用來指示短信告警的發(fā)生位置。
圖2
圖3
系統(tǒng)采用JAVA7的WatchService技術,在操作系統(tǒng)級實現(xiàn)對短信指定目錄的增加、修改文件操作類別的監(jiān)視,對新增短信文件進行有關處理-解析、匹配、新增地圖信息等,把短信數(shù)據(jù)保存到數(shù)據(jù)庫,并將修改后的文件保存到新的短信目錄。短信由其他系統(tǒng)轉發(fā)到中調短信平臺。
為了對短數(shù)據(jù)做進一步的分析加工,本軟件除了對短信進行定位鏈接處理,還把短信保存到數(shù)據(jù)庫里去。通過iBATIS接口,對短信數(shù)據(jù)庫進行統(tǒng)計分析處理,為查詢提供支持。
在系統(tǒng)設計上,本軟件采用BS架構,采用包括Spring+IBatis +DWR的JAVAEE框架。通過Spring的CORN定時機制實現(xiàn)對短信XML的加工處理。通過百度/高德地圖API在告警短信里嵌入地圖鏈接以及在地圖上顯示有效準確的提示。通過ECHART技術實現(xiàn)告警短信日月年統(tǒng)計分析的可視化展示。
在軟件功能上,本軟件對短信數(shù)據(jù)進行了緩存,并增加地圖標注信息。短信告警是否有漏報,與平臺告警進行比較;短信告警中是否帶有有效的位置信息,可通過百度/高德地圖打開定位進行確認;通過對比短信定位設備位置與GIS系統(tǒng)設備位置,確定是否一致。
在十三五電網規(guī)劃快速發(fā)展的大前提下,廣東電網需要全面實現(xiàn)配網自動化,解決盲調問題,為配網搶修提供強有力的支撐。短信平臺是SCADA系統(tǒng)傳統(tǒng)的子系統(tǒng)模塊,對配網自動化非常重要,本軟件對告警短信進行有意義的擴充,采用簡捷有效的處理思路,充分利用當前如火如荼的移動互聯(lián)網APP,有效的將地圖軟件GIS地理位置信息運用于配網搶修、運維工作中。另外,對短信數(shù)據(jù)的緩存也是對以往工作的有意義的補充,是對SCADA系統(tǒng)短信子系統(tǒng)的豐富完整,為短信子系統(tǒng)提供了基于WEB的實時查詢、歷史查詢,以及統(tǒng)計分析處理的展示。