摘要:電力市場運營系統(tǒng)是為了適應(yīng)我國電力市場化改革的需要,部署在電力調(diào)度(交易)中心的一套自動化系統(tǒng),本文介紹該系統(tǒng)的信息發(fā)布與數(shù)據(jù)申報子系統(tǒng)的設(shè)計開發(fā)與運用到的關(guān)鍵技術(shù)。
關(guān)鍵詞:J2EE;JSP;Ajax;Struts;Oracle
中圖分類號:TP309.05文獻標識碼:A文章編號:1009-3044(2008)12-20ppp-0c
Power Market Operation System Based on J2EE: Design adn Implementation of Data Process Subsystem adn Information Publieshing Subsystem
XU Bu-yun
(College of Software Engineering, Southeast University, Nanjing 210096,China)
Abstract:Power Market Operation System is an automatic system deploying at state grid. It meet the demand of the Chinese power market. This paper describes the design and implementation of data process subsystem and information publishing subsystem and the relative key technologies.
Key words:J2EE;JSP;Ajax;Struts;Oracle
1 引言
電力市場運營系統(tǒng)是為了適應(yīng)我國電力市場化改革的需要,部署在電力調(diào)度(交易)中心的一套自動化系統(tǒng),實現(xiàn)電力市場運營規(guī)則所要求的有關(guān)電力交易的各項業(yè)務(wù),為電力市場中的報價、交易、結(jié)算、信息發(fā)布等提供技術(shù)支持。根據(jù)國家電力體制改革目標和國家電網(wǎng)公司的電力發(fā)展規(guī)劃要求,適合國情的統(tǒng)一開放電力市場體系建設(shè)已經(jīng)到來。三級電力市場交易應(yīng)用平臺研究成果將對我國三級電力市場的交易運營、仿真培訓、分析評估與輔助決策等電力市場應(yīng)用建設(shè)具有十分重要的理論價值和指導作用。開發(fā)的原型系統(tǒng)將可直接應(yīng)用到包括國家、區(qū)域和省等各級電力交易中心,用于電力市場交易運營,并創(chuàng)造巨大的經(jīng)濟效益和社會效益。系統(tǒng)在設(shè)計上具有先進性、使用性、開放性等優(yōu)點先進性。
因此,本項目的研究和開發(fā)成果具有非常廣闊的應(yīng)用前景。
2 系統(tǒng)設(shè)計
2.1 系統(tǒng)結(jié)構(gòu)
本課題所屬的功能模塊(見圖1):
(1)數(shù)據(jù)申報:數(shù)據(jù)申報主要完成電力市場數(shù)據(jù)申報接收與處理,它是市場成員參與各類市場交易,提交交易申請的數(shù)據(jù)提交工具;也是交易中心向市場成員收集各類市場信息,用于分析市場運行狀況和預(yù)測市場走勢的數(shù)據(jù)收集工具。數(shù)據(jù)申報功能的服務(wù)對象為參與市場競爭和市場管理的各市場成員。數(shù)據(jù)申報主要功能包括注冊數(shù)據(jù)申報、交易數(shù)據(jù)申報和運營數(shù)據(jù)申報三部分。
為了保證數(shù)據(jù)申報的正確性,有必要對申報數(shù)據(jù)進行有效性校驗、處理保存和確認;應(yīng)根據(jù)市場規(guī)則,提供申報數(shù)據(jù)查詢功能;系統(tǒng)應(yīng)采用安全保護措施,具備完善的身份認證和數(shù)據(jù)加密傳輸機制,確保申報數(shù)據(jù)的安全、保密和防篡改。
數(shù)據(jù)申報服務(wù)接收到市場成員的申報數(shù)據(jù),并通過有效性校驗后,及時將申報數(shù)據(jù)傳送到交易管理、結(jié)算管理、市場分析和信息發(fā)布各個模塊,參與市場應(yīng)用計算。
(2)信息發(fā)布:信息發(fā)布子系統(tǒng)是各市場成員及時了解市場、開展競價決策的主要數(shù)據(jù)來源。發(fā)布信息內(nèi)容包括市場注冊信息、交易申報信息、交易計劃信息、結(jié)算考核信息、電網(wǎng)運行和市場運行信息。
系統(tǒng)主要完成各類運行數(shù)據(jù)和市場信息的發(fā)布、存檔、檢索及處理,使所有市場參與者能夠及時、平等地訪問相關(guān)的市場信息,保證電力市場的公開、公平、公正。信息發(fā)布工作遵循市場交易規(guī)則,有序開展市場交易,及時披露交易信息,依法接受政府監(jiān)管。
2.2 體系架構(gòu)
本系統(tǒng)以O(shè)racle 10g數(shù)據(jù)庫為底層數(shù)據(jù)支撐,在J2EE體系架構(gòu)下,基于Ajax+Struts的分布式應(yīng)用的Web客戶端。所采用的技術(shù)雖然不是Web應(yīng)用開發(fā)領(lǐng)域最前沿的新技術(shù),但卻是最成熟的技術(shù)。整套框架的穩(wěn)定性、低成本以及可拓展性都是經(jīng)歷過考驗的。
采用Web Services、XML技術(shù)實現(xiàn)市場成員與系統(tǒng)在松散耦合的情況下無縫連接,數(shù)據(jù)交換與平臺無關(guān)。
(1)界面處理子層
該層主要負責:第一,接收從客戶服務(wù)層發(fā)來的查詢請求;第二,將查詢結(jié)果轉(zhuǎn)化為Html 頁面形式返回給客戶。在接收查詢請求時,查詢和發(fā)布為主,不存在更新和插入操作??蛻舴?wù)層與應(yīng)用邏輯層之間的參數(shù)傳遞比較少,主要是查詢條件參數(shù)和顯示方式參數(shù)。這樣的表示層以靜態(tài)頁面為主。因此在表示層中沒有采用Java Servlet 接收客戶參數(shù),取而代之的是直接用JSP(JavaServer Page) 來接收HTTP 請求,這樣可以達到編寫方便、快速的目的。
(2)應(yīng)用處理子層
該層主要負責:第一,把從表示層傳來的查詢參數(shù),經(jīng)過邏輯加工,形成適當?shù)腟QL 語句,再交給數(shù)據(jù)庫操作層處理;第二,將得到的結(jié)果集進行篩選和存儲,為數(shù)據(jù)顯示做準備。在這一層中的各種查詢方法和藥品對象,用Java Bean 進行抽象和封裝,既實現(xiàn)了面向?qū)ο?,又實現(xiàn)了模塊化。
(3)數(shù)據(jù)庫訪問子層
該層封裝了數(shù)據(jù)庫的基本操作,包括數(shù)據(jù)庫打開,發(fā)送SQL語句,數(shù)據(jù)庫關(guān)閉。
2.3 開發(fā)環(huán)境
運用SUN公司的解決方案,使用J2EE(Struts、EJB、Hibernate)+ Oracle+ WebLogic+ JavaScript。.
3 系統(tǒng)實現(xiàn)的關(guān)鍵技術(shù)
(1)運用Ajax技術(shù)的異步操作優(yōu)點解決服務(wù)器于客戶端頁面響應(yīng)慢的問題。從客戶端發(fā)出請求中的參數(shù)得到上下文數(shù)據(jù),并創(chuàng)建個性化的響應(yīng)。服務(wù)器使用Servlet獲取請求中包含的參數(shù),進行一定處理后發(fā)送給Ajax引擎,Ajax引擎對獲取的數(shù)據(jù)進行處理后發(fā)送到客戶端顯示。此時,客戶端完全不用刷新,只需進行局部刷新(見圖2)。
(2)利用Java特有的反射機制,在運行期識別對象和類,實現(xiàn)服務(wù)器端動態(tài)處理響應(yīng)。Java語言并不是一開始執(zhí)行就被完全加載的,這與許多傳統(tǒng)語言有區(qū)別。當你不知道某個對象的確切類型,但這個類型在編譯期已知,可以使用RTTI(run time type identification) 識別它。利用該技術(shù),我們可以將所有頁面初始化的公用函數(shù)寫到同一個類中,使用時可以方便的調(diào)用,提高可重用性。
(3)運用SAX(Simple API for XML)、DOM(Document Object Model)、JDOM、DOM4J解析和操作XML文檔,作為數(shù)據(jù)傳輸?shù)拿浇?。在Ajax中可以使用XMLHttpRequest對象的requestXML方法返回XML格式的文本。
4 研究方向及實施方案
4.1 研究方向
對于傳統(tǒng)的Web應(yīng)用模型,大部分界面上的用戶動作都會觸發(fā)一個連接到Web服務(wù)器的HTTP請求。服務(wù)器完成一些處理,例如接收數(shù)據(jù)、處理計算、再訪問其他的數(shù)據(jù)庫系統(tǒng),最后返回一個HTML頁面到客戶端。在服務(wù)器處理自己的事情的時候,用戶只能等待,用戶得動作總是與服務(wù)器得“思考時間”同步。
在Ajax模型中,在會話的開始,瀏覽器加載了一個Ajax引擎:采用JavaScript編寫并且通常在一個隱藏的框架中。在用戶單擊按鈕時,使用JavaScript和DHTML立即更新用戶界面,并向服務(wù)器發(fā)送異步請求,以執(zhí)行更新或查詢數(shù)據(jù)庫。當請求返回時,就可以使用JavaScript和CSS來相應(yīng)地更新用戶界面而不是刷新整個頁面。這樣Web站點看起來時即時響應(yīng)的。
所以用戶不用再打開一個空白窗口,等待通信。用戶登錄時,就會從Web服務(wù)器下載大量的Javascript代碼。這些代碼會在整個會話的生命周期發(fā)揮作用,它會與用戶交互。
本課題是基于J2EE的Web客戶端的開發(fā),原有大部分的頁面均采取JSP結(jié)合Struts框架的Action以及FormBean的開發(fā)方式。該方法在系統(tǒng)規(guī)模極為龐大的情況下會造成很多重復(fù)代碼的冗余,配置文件極為龐大,維護困難。因此,本課題基于Ajax技術(shù)提出一種改良的數(shù)據(jù)查詢及提交方式來開發(fā)JSP頁面,盡量少使用JavaScript代碼,利用統(tǒng)一的Servlet接收客戶端請求,在服務(wù)器端處理后將請求結(jié)果返回給客戶端。
4.2 實施方案
1.查詢方式:
(1)確定的數(shù)據(jù)查詢語句;
var querystr = 'substitutedInit|tradeseqId:100008000000015';
上面的查詢語句以符號“|”為各個查詢的詳細信息間隔; “substitutedInit”標志該查詢所要調(diào)用的業(yè)務(wù)層的函數(shù)名;“tradeseqId:100008000000015”為查詢數(shù)據(jù)的過濾條件,相當于標準SQL語句中的where子句;是要傳遞給業(yè)務(wù)層的查詢參數(shù);
(2)在項目的通用JavaScript文件添加解析數(shù)據(jù)查詢語句的函數(shù),解析數(shù)據(jù)查詢語句并生成相應(yīng)的查詢語句的xml描述信息;
(3)在項目中的通用JavaScript文件中添加Ajax異步請求的函數(shù),發(fā)送請求并提交數(shù)據(jù)查詢的xml描述信息,將查詢數(shù)據(jù)的xml描述信息發(fā)送到服務(wù)器;
(4)服務(wù)器端Servlet接受數(shù)據(jù)查詢語句并生成相應(yīng)的Document對象;
(5)利用Java的反射機制動態(tài)處理請求;
(6)將xml格式的查詢結(jié)果信息返回客戶端,解析并將相應(yīng)的數(shù)據(jù)填入控件中。
2.數(shù)據(jù)提交:
(1)確定通用數(shù)據(jù)操作類中的方法;
通用數(shù)據(jù)提交操作的類類包含對各種數(shù)據(jù)提交的方法。以year_trade_bi.jsp頁面為例,其中包含數(shù)據(jù)提交的功能。我們在DataCommit類中添加doYearTrade方法,該方法包含一個參數(shù)xmlStr(String類型),參數(shù)為數(shù)據(jù)提交中涉及到的各個字段的xml格式描述信息。該方法返回一個描述數(shù)據(jù)提交操作的結(jié)果信息(數(shù)據(jù)提交成功或數(shù)據(jù)提交失敗),并在服務(wù)器端返回給用戶以表明數(shù)據(jù)提交操作是否成功。doYearTrade方法中具體的數(shù)據(jù)提交操作由開發(fā)者根據(jù)業(yè)務(wù)要求而確定。
(2)頁面發(fā)送數(shù)據(jù)提交請求;
(3)發(fā)送數(shù)據(jù)提交的具體數(shù)據(jù)信息;
(4)服務(wù)器端接受數(shù)據(jù)提交的xml參數(shù)描述并確定數(shù)據(jù)提交調(diào)用的方法。
5 結(jié)束語
系統(tǒng)經(jīng)過立項、需求分析、系統(tǒng)設(shè)計、系統(tǒng)開發(fā)、測試以及現(xiàn)場安裝,調(diào)試并且根據(jù)用戶需求變化修改程序等一系列過程后,立時一年多時間,已經(jīng)初步建立了一個全國15個網(wǎng)省公司普遍需要的標準版本,目前該系統(tǒng)在湖北、山西、浙江等多個省已經(jīng)投入運行。系統(tǒng)具有先進性、使用性、開放性等優(yōu)點先進性。
參考文獻:
[1] Ted Husted, Cedric Dumoulin,George Franciscus.Struts in Action[M].Manning Publications November 2002.
[2] 楊爭林,沈利華,胡俊.電力市場技術(shù)支持系統(tǒng)主站的三層體系方案[J]電力系統(tǒng)自動化,2004(02).
[3] Flanagan.JavaScript權(quán)威指南 [M].機械工業(yè)出版社,2003.
收稿日期:2008-03-27
作者簡介:徐步云(1983-),男,江蘇蘇州人,碩士研究生,研究方向:軟件工程。