孫 虹,李昆明,王 林,孫 彬,周春蕾
(江蘇方天電力技術(shù)有限公司,江蘇南京 211102)
為提高電力工業(yè)能源使用效率,減少環(huán)境污染,促進能源和電力結(jié)構(gòu)調(diào)整,確保電力系統(tǒng)安全、可靠、高效運行,實現(xiàn)電力工業(yè)的可持續(xù)發(fā)展,2010年國家有關(guān)部門先后下發(fā)了一系列節(jié)能減排等政策文件[1-3],以期能加速節(jié)能服務(wù)產(chǎn)業(yè)的發(fā)展。為響應(yīng)國家節(jié)能減排政策,推行合同能源管理、發(fā)展節(jié)能服務(wù)產(chǎn)業(yè),規(guī)范節(jié)能產(chǎn)業(yè)的基礎(chǔ)技術(shù)和基礎(chǔ)數(shù)據(jù),建立統(tǒng)一的能效數(shù)據(jù)中心,江蘇率先設(shè)計開發(fā)了省級能效管理平臺。本平臺的建立一方面為江蘇對全省52個電力能效小組能效工作的管理及考核提供業(yè)務(wù)平臺,為江蘇電力節(jié)能服務(wù)公司以合同能源管理方式對用能企業(yè)開展節(jié)能服務(wù)提供全流程管理;另一方面為獲取全面的節(jié)能服務(wù)行業(yè)數(shù)據(jù),為節(jié)能行業(yè)發(fā)展提供數(shù)據(jù)支撐和技術(shù)保障,對節(jié)能項目進行監(jiān)測和節(jié)能服務(wù)機構(gòu)進行評估,為國家和各級政府機構(gòu)節(jié)能政策提供支撐,促進和推動節(jié)能行業(yè)向有序化、規(guī)范化、標準化方向發(fā)展。
系統(tǒng)開發(fā)環(huán)境采用Windows,J2EE,WebLogic,DB2 集成配置方案,結(jié)合MVC 模式的Struts2 框架,開展系統(tǒng)平臺研發(fā)工作,有效提高了軟件研發(fā)效率。WebLogic 是Bea 公司提供的一款基于J2EE 規(guī)范的應(yīng)用服務(wù)器,用于開發(fā)、集成、部署和管理大型分布式Web 應(yīng)用、網(wǎng)絡(luò)應(yīng)用和數(shù)據(jù)庫應(yīng)用。其優(yōu)異的容錯性、高度的靈活性、安全性以及強大集群功能為企業(yè)應(yīng)用提供了優(yōu)秀的解決方案。DB2 是IBM 公司研發(fā)的、目前支持平臺最廣泛的商用關(guān)系型數(shù)據(jù)庫,具有優(yōu)秀的查詢優(yōu)化和網(wǎng)絡(luò)支持能力,對大數(shù)據(jù)處理更表現(xiàn)出優(yōu)良的性能。MVC 模式將一個應(yīng)用分成3個部分,即模型(Model)、視圖(View)和控制器(Controller),這3個部分以最少的耦合協(xié)同工作,從而提高應(yīng)用的可擴展性及可維護性[4]。
系統(tǒng)總體上采用輕量級多層結(jié)構(gòu)設(shè)計,采用Struts2,Spring 和Ibatis 技術(shù)整合研發(fā)。系統(tǒng)技術(shù)架構(gòu)如圖1 所示。
圖1 系統(tǒng)技術(shù)架構(gòu)
(1)表現(xiàn)層。用戶通過表現(xiàn)層與系統(tǒng)進行交互。表現(xiàn)層通過JSP+Struts2+EXTJS 實現(xiàn),主要由各種頁面構(gòu)成,例如登錄、管理、監(jiān)控、查詢、報表等頁面。表現(xiàn)層通過JSON 方式與控制層進行數(shù)據(jù)交互。
(2)控制層。Struts2-Action 承擔了控制層任務(wù),主要負責將表現(xiàn)層請求分派到業(yè)務(wù)層處理,以及將業(yè)務(wù)層數(shù)據(jù)格式化,轉(zhuǎn)換為表現(xiàn)層可接受的JSON 格式展現(xiàn)數(shù)據(jù)。以系統(tǒng)登錄為例,當?shù)卿浾埱蟀l(fā)生時,Struts 2 會根據(jù)struts.xml 里的Action 映射集(Mapping)實例化登錄Action 類,并調(diào)用其execute()方法,并向表現(xiàn)層返回登錄成功或失敗等信息。
(3)業(yè)務(wù)層。Spring 是一款強大的輕量級框架,采用IoC 容器方式提供了業(yè)務(wù)對象管理的一致方法,允許業(yè)務(wù)組件以一定耦合度組裝起來,對使用它的應(yīng)用提供一種面向服務(wù)的編程模式的實現(xiàn)。同樣以系統(tǒng)登錄為例,控制層執(zhí)行execute 方法時,execute 方法執(zhí)行邏輯層業(yè)務(wù)處理,實現(xiàn)用戶登錄認證、權(quán)限加載等邏輯控制。
(4)數(shù)據(jù)層。數(shù)據(jù)層實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的存取操作。系統(tǒng)采用Ibatis 和JDBC 相結(jié)合方式,提供對數(shù)據(jù)的持久化支持。Ibatis 作為一款半自動O-R Mapping 框架,隔離了對不同數(shù)據(jù)庫的實現(xiàn),能夠很好的實現(xiàn)對業(yè)務(wù)功能的良好支持。
平臺由運營總覽、指標考核、項目管理、小組活動、竣工項目監(jiān)測、輔助分析工具、知識庫管理、統(tǒng)計分析考核共8個模塊來組成。平臺功能的總體結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)功能結(jié)構(gòu)
(1)運營總覽。以柱狀圖、折線圖等直觀的數(shù)據(jù)表達工具,全景式地集中展現(xiàn)全省在不同地區(qū)、不同行業(yè)、不同月份的節(jié)約電力電量實際情況、指標情況、完成占比率及能源轉(zhuǎn)換等數(shù)據(jù);提供對節(jié)能服務(wù)項目完成情況分析和潛在項目分析;提供能效小組組織架構(gòu)和各小組機構(gòu)節(jié)能量統(tǒng)計分析。
(2)指標考核。各能效小組根據(jù)指標要求走訪記錄企業(yè)用電結(jié)構(gòu)來進行初步能效分析,推動社會企業(yè)實施節(jié)能改造,并且通過圖形、表格等形式展示取得的業(yè)績。
(3)項目管理。節(jié)能服務(wù)公司用戶對審核后儲備項目及節(jié)能服務(wù)公司自己錄入的儲備項目進行甄選、診斷、立項、定案、實施、總結(jié)及歸檔操作并對項目進度進行把控。
(4)小組活動。能效服務(wù)網(wǎng)絡(luò)活動信息發(fā)布。通過發(fā)布能效服務(wù)網(wǎng)絡(luò)的活動信息,為節(jié)能服務(wù)公司的市場開拓提供支撐。
(5)竣工項目監(jiān)測。展示節(jié)能項目設(shè)備改造前后電量、負荷對比,以圖表方式展示。該圖表分為兩部分:左側(cè)展示電量對比,包括改造前電量、改造后電量、改造前后電量差值,數(shù)據(jù)為總計值;右側(cè)展示負荷對比,包括改造前負荷、改造后負荷,顯示15 min 曲線數(shù)據(jù)。
(6)輔助分析工具。提供快速查找目前正在推廣的主要節(jié)電技術(shù),并介紹各個節(jié)電技術(shù)原理、主要性能特點及適用范圍。
(7)知識庫管理。搜集國內(nèi)能效相關(guān)政策文件,建立節(jié)能政策文件庫;搜集國內(nèi)能效相關(guān)法律法規(guī),建立節(jié)能法律法規(guī)庫;匯集、跟蹤國內(nèi)外先進節(jié)能技術(shù)信息,通過平臺的先進節(jié)能技術(shù)產(chǎn)品庫、通用節(jié)能技術(shù)庫、行業(yè)節(jié)能分析庫、典型節(jié)能項目案例庫、節(jié)能標準數(shù)據(jù)庫、培訓教程庫,從節(jié)能知識的各個方面為節(jié)能服務(wù)公司及企業(yè)等進行節(jié)能服務(wù)。
(8)統(tǒng)計分析考核。根據(jù)節(jié)能服務(wù)體系建設(shè)要求,建立節(jié)約電力電量匯總、公司自身及推動社會項目信息、節(jié)能服務(wù)公司項目合同信息、節(jié)能服務(wù)公司項目投運信息、節(jié)能服務(wù)公司經(jīng)營情況、能效網(wǎng)絡(luò)小組成員信息等統(tǒng)計報表通過對各能效小組上報的儲備項目信息提供展示能效小組重點儲備項目信息、展示各能效小組錄入的已簽署合同的項目信息、展示全省地市項目數(shù)量、展示節(jié)能服務(wù)公司對能效小組上報的項目的跟蹤響應(yīng)信息、展示節(jié)能公司對全省地市上報項目狀態(tài)的項目數(shù)量信息進行統(tǒng)計報表。
系統(tǒng)數(shù)據(jù)存儲在名為DB_NXGL的數(shù)據(jù)庫中,主要的業(yè)務(wù)數(shù)據(jù)表包括:企業(yè)信息、能效小組信息、企業(yè)用能設(shè)備信息、能效項目信息等檔案數(shù)據(jù)表;節(jié)能政策文件、節(jié)能技術(shù)、節(jié)能標準等知識庫;企業(yè)節(jié)約電力電量指標數(shù)據(jù)等統(tǒng)計分析數(shù)據(jù)表。
系統(tǒng)采用視圖技術(shù)、存儲過程技術(shù),實現(xiàn)數(shù)據(jù)組合檢索和業(yè)務(wù)邏輯處理封裝。數(shù)據(jù)庫設(shè)計時,總體上遵循3NF 標準化和規(guī)范化設(shè)計方式,在數(shù)據(jù)冗余、數(shù)據(jù)庫性能、擴展性和完整性方面尋求平衡;對于項目管理流程等模塊,采用數(shù)據(jù)驅(qū)動而非硬編碼方式,增強系統(tǒng)的靈活性和擴展性[5]。
系統(tǒng)采用基于B/S 模式的Web 異步架構(gòu),頁面數(shù)據(jù)的動態(tài)刷新利用傳統(tǒng)的Ajax 技術(shù)完成數(shù)據(jù)請求,這種技術(shù)的最大優(yōu)點就是能在不更新整個頁面的前提下維護數(shù)據(jù),這使得客戶端瀏覽器能更為迅捷地回應(yīng)用戶動作[6]。頁面數(shù)據(jù)的圖形化展示則采用目前流行的Flex 技術(shù)實現(xiàn),F(xiàn)lex 組件采用AMF 協(xié)議與J2EE 服務(wù)器進行信息交互;對于大容量視頻文件,則采用HTTP協(xié)議上傳至服務(wù)器,以文件形式進行存儲和查詢。
傳統(tǒng)上采用的XML-over-HTTP 技術(shù)在Flex 客戶端和服務(wù)端之間傳輸數(shù)據(jù)雖然簡單,但需要大量數(shù)據(jù)抽象層編碼與維護工作,數(shù)據(jù)序列化和反序列化過程也會占用大量資源,導(dǎo)致應(yīng)用性能和開發(fā)效率下降。因此,系統(tǒng)選用Remote Object 方式,使用AMF(Action Message Format)二進制格式協(xié)議進行通訊,相比較傳統(tǒng)的XML-over-HTTP 方式,這種方式是最高效的通信方式。通過使用Remote Object,F(xiàn)lex 可以直接訪問后臺對象,而不用將對象數(shù)據(jù)轉(zhuǎn)換成XML 格式,從而節(jié)省了大量的文件轉(zhuǎn)換時間。此外,使用Remote Object 能較大程度提高數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸速度,數(shù)據(jù)本身被序列化為二進制的格式,從而減小了網(wǎng)絡(luò)上傳輸數(shù)據(jù)的大小,進而減少客戶端內(nèi)存消耗,并縮短處理時間[7]。
為更好地進行數(shù)據(jù)展示,系統(tǒng)引入了具有豐富表現(xiàn)力的Flex 圖表組件,如線型圖、條狀圖、餅狀圖、儀表圖等。此外,作為Flex 系統(tǒng)的客戶端運行環(huán)境,F(xiàn)lash Player 可以利用客戶端計算資源進行運算來完成各種顯示效果的渲染,使數(shù)據(jù)的交互更為直觀[8]。圖表中的顏色、圖標、符號、圖例、標題、提示等也都可以進行個性化定制[9]。
基于Flex 提供的圖表控件,系統(tǒng)還設(shè)計實現(xiàn)了一些混合型圖表和自定義圖表,如線型圖條形圖混合圖、氣泡圖、扇形圖等。以扇形圖組件為例,該組件以Flex的條狀圖控件為基礎(chǔ),通過新增扇形繪制方法redrawSerctorChart 和扇形中數(shù)據(jù)序列繪制方法drawSerctor,實現(xiàn)了從條狀圖(如圖3 所示)到扇形圖(如圖4 所示)的擴展。
圖3 條狀圖控件示意圖
圖3 展示了“竣工項目監(jiān)測”功能通過條狀圖控件實現(xiàn)設(shè)備改造前后電量使用情況和削減情況的對比。圖4 是“運營總覽”功能界面中采用自定義的扇形圖表組件,通過左右兩側(cè)的半圓形分別表達了全省不同節(jié)電方式下年度節(jié)約電量、節(jié)約電力占各自總量的百分比,節(jié)約電量、節(jié)約電力總量顯示在每個扇形的上方。
圖4 扇形圖控件示意圖
系統(tǒng)在小組活動等功能中需要將小組活動的視頻文件及其他資料上傳到服務(wù)器。在Struts2 中通過將form標簽的屬性“enctype”設(shè)置成“multipart/formdata”,并定義類型為“file”的input 標簽實現(xiàn)文件上傳功能。
form 標簽將文件上傳請求提交到服務(wù)端后,由控制層的Structs-Action 調(diào)用視頻文件上傳方法將文件轉(zhuǎn)換為二進制字節(jié)流格式保存到服務(wù)器。視頻文件上傳過程的處理流程如圖5 所示。
圖5 視頻文件上傳處理流程
用戶登錄密碼采用MD5 加密技術(shù)以密文的形式存儲,不保存明文,有效地避免了密碼泄露問題;在登錄時采用驗證碼機制,防止程序自動登錄造成的性能安全問題,并使用Session 會話實現(xiàn)用戶身份驗證保存。通過Servlet的過濾器機制,防止用戶直接輸入Url訪問非授權(quán)功能和數(shù)據(jù),即使未注冊用戶企圖繞過登錄頁面直接進入系統(tǒng)其他頁面,本系統(tǒng)也能判斷此用戶沒有合法會話進程而跳轉(zhuǎn)至登錄頁。采用Spring的攔截器技術(shù)進行權(quán)限控制,保證業(yè)務(wù)數(shù)據(jù)的安全。
基于本文提出的設(shè)計方案和實現(xiàn)技術(shù),選用IBM3850M3 服務(wù)器,以WebLogic 9.2為Web 服務(wù)器、IBM DB2 9.0為數(shù)據(jù)庫管理器、JDK1.5為開發(fā)環(huán)境,完成了軟件系統(tǒng)的開發(fā)、測試和部署工作。系統(tǒng)于2012年初投入運行,并在江蘇全省13個地市進行了推廣使用,迄今已實現(xiàn)對全省52個能效小組的能效工作考核。系統(tǒng)基于Remote Object 方式建立Flex 與J2EE 服務(wù)器之間的通信,頁面中各圖表組件可以獨立、并行地發(fā)出數(shù)據(jù)請求、接收返回信息、更新顯示數(shù)據(jù),而無需重新加載整個頁面和Flex。這種頁面異步請求和局部更新的方式,有效降低了網(wǎng)絡(luò)數(shù)據(jù)流量和網(wǎng)站訪問速度,極大地改善了用戶體驗。
采用WebLogic 和DB2 開發(fā)的、基于Web的省級能效管理平臺,具有技術(shù)新、安全性好、運行穩(wěn)定等特點。本文對該平臺在具有特殊保密要求的環(huán)境下運行容易出現(xiàn)的問題進行了梳理,并分別給出了解決方案。平臺具有良好的擴展性,在開發(fā)過程中預(yù)留了擴展系統(tǒng)功能的程序接口,便于系統(tǒng)升級。平臺對數(shù)據(jù)分析、提煉,并通過充分共享其他相關(guān)系統(tǒng)的信息,實現(xiàn)智能化查詢、統(tǒng)計、分析和預(yù)測,使管理層能夠及時全面地了解接入系統(tǒng)內(nèi)各用能用戶情況,為能效工作人員挖掘節(jié)能潛力用戶提供數(shù)據(jù)支撐。
[1]國務(wù)院辦公廳.關(guān)于加快推行合同能源管理促進節(jié)能服務(wù)產(chǎn)業(yè)發(fā)展的意見[Z].2010.
[2]中華人民共和國工業(yè)和信息化部.關(guān)于進一步加強中小企業(yè)節(jié)能減排工作的指導(dǎo)意見[Z].2010.
[3]中華人民共和國國務(wù)院.關(guān)于進一步加大工作力度確保實現(xiàn)“十一五”節(jié)能減排目標的通知[Z].2010.
[4]李 剛.Structs2 權(quán)威指南——基于WebWork 核心的MVC 開發(fā)[M].北京:電子工業(yè)出版社,2009:2-6.
[5]DB2 Information Center Online.DB2 Database Product Documentation [EB/OL].http://www-1.ibm.com/support/docview.wss?rs=71&uid=swg27009474.
[6]薛 蕾.能量管理系統(tǒng)服務(wù)子系統(tǒng)WebS的設(shè)計[J].江蘇電機工程,2011,30(4):48-51.
[7]胡毓勵.基于Flex的企業(yè)協(xié)作平臺及其用戶使用挖掘的設(shè)計與實現(xiàn)[D].杭州:浙江大學計算機科學與技術(shù)學院,2010.
[8]汪林林,胡德華,王佐成,等.基于Flex的RIA WebGIS 研究與實現(xiàn)[J].計算機應(yīng)用,2008,28(12):3257-3260.
[9]Adobe Help Resource Center.Flex 3 Developer's Guide[EB/OL].http://livedocs.adobe.com/flex/3/html/help.html?content=Part2_DevApps_1.html.