淺談電力營銷管理系統與抄表機之間的集成
摘要:該文介紹了一種基于J2EE的電力營銷管理信息系統和抄表機的集成解決方案。提出了集成方案的總體設計,闡述了該方案所涉及的ActiveX控件、zlib解壓縮、Base64編解碼、DBF格式轉換組件等關鍵技術。
關鍵詞:電力營銷管理系統抄表機DBFActiveX控件zlib解壓縮Base64編解碼
0引言
抄表機實際上是一臺功能強大的掌上數據電腦,由于其具有存儲容量大、數據保存時間長、攜帶方便、機器運行速度快等特點,在供電企業已經得到廣泛應用,主要用于現場電能表表碼數據的采集。與傳統的卡本抄表方式相比,具有提高工作效率、減少出錯率、方便等多方面的優勢。
抄表員每次抄表前將抄表戶的詳細數據從電力營銷管理信息系統下裝到抄表機中,然后攜帶抄表機到現場,利用抄表機簡便的查找方式查到該抄表戶資料,將現場表碼數據輸入到抄表機中,抄表結束后,將抄表機連接到微機上,抄表機內存儲的抄表數據就全部自動的錄入到電力營銷管理信息系統中。
目前在供電企業中使用的抄表機大多數是通過標準串口線RS232和微機互連,采用標準的DBF作為交換數據格式與電力營銷管理信息系統進行數據交互,電力營銷管理信息系統通過調用抄表機提供的接口程序,實現抄表數據的上下載過程。
1總體設計
基于J2EE的電力營銷管理信息系統和抄表機的集成主要由兩個重要的組件構成:客戶端基于COM組件模型開發的ActiveX控件和服務端的DBF格式轉換組件。系統結構示意圖如圖1所示。
(1)ActiveX控件提供了DBF格式二進制數據流的zlib解壓縮、Base64編解碼和調用抄表機的發送接收程序功能。
(2)DBF格式轉換組件實現了抄表數據的記錄形式和DBF格式之間的轉換,提供了DBF文件元數據解析、DBF格式二進制數據流的解壓縮和Base64編解碼功能。
使用抄表過程簡要描述如下:抄表機下載時,首先服務端數據提取程序從抄表中間庫中獲取抄表數據,通過DBF格式轉換組件將數據轉換為DBF格式的Java類數組,再轉換為字節數組輸出流格式,并進行壓縮和Base64編碼,在客戶端利用網頁上嵌入的ActiveX控件進行解碼和解壓,并在指定目錄下形成DBF格式的數據文件,利用COM通信機制,調用抄表機發送程序發送數據到抄表機。抄表機上載時,過程正好相反。
2系統實現關鍵技術
2。1客戶端實現技術
(1)抄表機的發送接收程序調用接口。ActiveTemplateLipary(ATL)和MicrosoftFoundationClasses(MFC)是目前編寫ActiveX控件的兩個流行的框架,但是從基本的設計結構上講,MFC不適合于開發專業的COM組件,它適合于在Windows應用的基礎上提供相應的COM支持,ATL完全面向COM組件[1]。采用ATL構建ActiveX控件,提供抄表機的發送接收程序調用接口。由于COM組件具有接口和實現分離的特性,屏蔽了對不同抄表機型號的不同的接口調用的實現差異,對外提供統一的抄表機的發送接收程序調用接口。接口的實現是對抄表機提供的動態鏈接庫的.接口調用,實現了COM組件與組件之間的互操作。
(2)解壓縮接口。為有效地傳輸數據和提高網頁文件的下載速度,需要對抄表數據進行壓縮處理。采用zlib作為解壓縮引擎,為ActiveX控件提供解壓縮接口。GNUzlib是通用的壓縮庫,流行的deflate壓縮算法,提供了一套in—memory壓縮和解壓函數,并能檢測解壓出來的數據完整性。
(3)Base64編解碼接口。采用Base64編碼將二進制抄表數據進行編碼,并在網頁上作為對象緩存。Base64是網絡上最常見的用于傳輸8bit字節代碼的編碼方式之一,它將二進制數據編碼為字母和數字。ActiveX控件提供Base64編解碼接口,通過編碼將其轉換成為一種被稱為BASE64的ASCII子集的字符的組合,解碼實現逆過程。
(4)采用腳本對頁面對象進行訪問。將ActiveX控件嵌入抄表機應用程序網頁,通過VBScript和Jscript腳本直接調用頁面對象(如ActiveX控件)的訪問。
2。2服務端實現技術
服務端的DBF格式轉換組件,由一組通用的DBF操作組件構成,邏輯上分為DBF格式定義組件、DBF格式解析組件、DBF轉換組件和實用類。
(1)DBF格式轉換組件。DBF格式定義組件DBFField,定義了DBF字段的元數據以及get和set方法,字段元數據包括字段名、數據類型、長度、數據部分位數等。
采用XML[2]來描述DBF文件的元數據結構和語義,并以XML文件存放在Web應用程序WEB—INF目錄下。DBF格式解析組件,提供了通過XML文件或者直接解析DBF文件獲取DBF的元數據結構兩種方式。DBFStruParser利用DOM解析器將XML解析成DBFField數組。另一種實現是直接在WEB—INF目錄存放DBF格式文件,DBFReader解析DBF格式流文件生成DBFField數組。
DBF轉換組件DBFConvertRecords,實現數據庫中抄表數據結構和DBF格式之間的映射,以及抄表數據集合ArrayList、XML格式與DBF格式的相互轉換。
實用類Base64Util用于Base64編解碼。java。util。zip。Deflater用于解壓縮。
(2)利用XSLT進行格式轉換。抄表數據元數據和DBF元數據之間的映射可簡單地通過兩者一致的字段名或別名約定來實現,但是這種實現要求抄表中間庫表的定義和DBF的定義要嚴格的對應,由于不同電力企業使用的是不同廠商不同型號的抄表機,傳送的DBF格式和語義也不一定相同。
XSLT[3]樣式表描述了將源XML格式轉換為目標格式的一系列的規則。利用XSLT轉換器作為轉換引擎,對XML格式數據進行過濾、排序和重構[4]。過濾是選擇并提取數據的一個特定子集的處理過程,排序就是重新編排數據的過程,重構包括數據元數據轉換和翻譯數據[4]。以抄表機下裝為例,說明轉換過程,如圖2所示。
首先針對不同類型的抄表機,分別定義不同XSLT樣式表。利用DOM解析器將從數據庫中檢索的抄表數據集合ArrayList轉換為XML,根據XSLT樣式表所描述的規則,轉換為抄表機特定格式的XML數據,再將XML格式轉換為DBF格式,間接實現了抄表數據集合和DBF格式的映射。
(3)組件調用。采用基于MVC模型2的Struts的Web應用框架,WriteDbfAction用于處理JSP頁面的抄表機發送和接收處理請求,調用DBF格式轉換組件進行DBF解析、轉換,并利用實用類進行編解碼和解壓縮。為了向業務層隱藏特定表示層的細節,降低表示層和業務層耦合度,首先定義IWriteDbf接口,WriteDbfForm實現該接口,該接口不包括與請求處理和協議相關的表示層數據結構的引用。采用接口的方式提供合適的值對象給業務代理WriteDbfBD,再調用相應的業務邏輯類,如DBF格式轉換DBFConvertRecords。
3結束語
文中介紹的一種基于J2EE的電力營銷管理信息系統中實現抄表機上下裝的集成解決方案,實現了基于J2EE的電力營銷管理信息系統和抄表機之間的緊密集成,該方案也實現了J2EE環境下進行DBF格式的數據集成,已經應用于工程實踐。例如供電企業的電能計量管理部門采購常壽命電能表時,需要電能表生產廠商提供電能表資料、電能表檢定和誤差記錄數據,然后將這些數據轉入到電力營銷管理信息系統中。
【淺談電力營銷管理系統與抄表機之間的集成】相關文章: