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