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