胡秋翔, 崇殿兵, 畢思斯
(南瑞集團公司(國網(wǎng)電力科學研究院),南京 211006)
隨著電網(wǎng)信息化及智能電網(wǎng)的推進,電網(wǎng)GIS(Geographic Information System)得到了廣泛的應用,涵蓋了電網(wǎng)企業(yè)的輸電、變電、配電、調(diào)度、營銷、通信等各個生產(chǎn)環(huán)節(jié)[1-3]. 但是應用的推廣和深入使得電網(wǎng)GIS維護工作量和維護人員也越來越多,多用戶協(xié)同編輯成為電網(wǎng)GIS數(shù)據(jù)編輯維護的現(xiàn)實需要[4].目前,電網(wǎng)GIS支持多用戶協(xié)同編輯主要有以下幾種方式:
(1) 分層管理方式,通過集中維護和細分文件的形式按照圖層信息將電網(wǎng)資源空間數(shù)據(jù)拆分成多個文件,每個用戶編輯不同的文件,編輯完成后,將所有文件合并成完整的數(shù)據(jù)[5]. 分層管理的改進方法主要體現(xiàn)在數(shù)據(jù)劃分方式上,包括將分層管理改進為按區(qū)域分塊管理,實現(xiàn)用戶按區(qū)域管理數(shù)據(jù)[6,7]; 顧及拓撲關(guān)系的空間劃分,盡量避免不同分割單元設(shè)備之間存在拓撲關(guān)系的情況[8]等.
分層管理及其改進方法總體上協(xié)同編輯方式簡便,在拓撲關(guān)系、編輯場景不復雜,且用戶數(shù)較少時,能夠滿足協(xié)同編輯需要. 但應對當前大數(shù)據(jù)量的電網(wǎng)資源空間數(shù)據(jù),以及越來越多的編輯維護工作和維護人員,分層管理方式無法維護不同數(shù)據(jù)塊間設(shè)備的拓撲關(guān)系,并且不同編輯客戶端數(shù)據(jù)不一致,無法分析.
(2) 空間數(shù)據(jù)庫方式,多個用戶同時編輯數(shù)據(jù)庫中設(shè)備數(shù)據(jù),按照完成的先后順序同步執(zhí)行入庫操作[9].這是當前較為常見的一種方式,其改進方法有:引入輔助表,存儲設(shè)備的操作序號和空間信息,實現(xiàn)設(shè)備操作日志的管理和操作回滾[10]; 結(jié)合狀態(tài)機機制,支持電網(wǎng)資源空間數(shù)據(jù)長事務編輯需求[11]等.
空間數(shù)據(jù)庫的方式在編輯設(shè)備沒有交集,結(jié)果不會互相影響時效果較好. 但同時編輯一個設(shè)備時,后入庫的結(jié)果會覆蓋之前的結(jié)果,無法確保最終結(jié)果與用戶的操作意愿一致,影響整體數(shù)據(jù)的正確性. 同時缺少數(shù)據(jù)同步,數(shù)據(jù)的一致性和實時性無法得到保障.
(3) 任務劃分與版本管理方式,將電網(wǎng)GIS編輯工作劃分成不同的子任務,任務編輯數(shù)據(jù)存儲在任務對應的版本表中,任務提交時手動合并版本之間的沖突設(shè)備[12],并將版本內(nèi)數(shù)據(jù)存儲到電網(wǎng)資源數(shù)據(jù)庫中,針對編輯沖突的處理,許多學者提出了優(yōu)化方法:基于版本復制的版本存儲技術(shù),分離出沖突操作存于子版本進行處理,降低沖突處理難度[13]; 將編輯操作封裝成命令消息并采用并發(fā)操作矩陣快速檢測和處理編輯沖突[14].
任務劃分與版本管理方式能夠有效管理和拆分電網(wǎng)GIS協(xié)同編輯工作,同時版本數(shù)據(jù)提交、編輯沖突手動合并確保了數(shù)據(jù)的一致性和正確性,但考慮到電網(wǎng)GIS數(shù)據(jù)的空間復雜性和拓撲復雜性,沖突結(jié)果的手動合并會非常復雜[15],對操作人員要求很高,并且容易導致數(shù)據(jù)錯誤. 同時該方法最小的協(xié)同編輯單位是子任務,無法實現(xiàn)多個用戶編輯同一個子任務.
本文針對電網(wǎng)GIS協(xié)同編輯時的數(shù)據(jù)沖突問題和數(shù)據(jù)一致性問題,在上述任務劃分與版本管理方式基礎(chǔ)上,提出基于鎖定機制的電網(wǎng)GIS多用戶協(xié)同編輯.通過鎖定機制管理可能存在編輯沖突的任務版本內(nèi)數(shù)據(jù)及用戶待編輯數(shù)據(jù),避免編輯沖突的產(chǎn)生和沖突合并操作. 同時,編輯保存后,將編輯數(shù)據(jù)同步到其他客戶端,確保其他客戶端數(shù)據(jù)的一致性和實時性
電網(wǎng)GIS協(xié)同編輯要求建立一個多用戶、并發(fā)管理的協(xié)同工作環(huán)境,傳統(tǒng)的單層或兩層GIS系統(tǒng)結(jié)構(gòu)已經(jīng)難以模擬這種復雜場景,三層結(jié)構(gòu)已成為GIS協(xié)同編輯的普遍選擇[16]. 圖1是基于鎖定機制的電網(wǎng)GIS協(xié)同編輯體系結(jié)構(gòu)圖.
圖1 協(xié)同編輯體系結(jié)構(gòu)
圖1中數(shù)據(jù)層提供電網(wǎng)資源數(shù)據(jù),版本數(shù)據(jù),鎖定數(shù)據(jù),配置數(shù)據(jù)等電網(wǎng)GIS中所有數(shù)據(jù)的存儲,管理,索引功能; 服務層是電網(wǎng)GIS協(xié)同編輯的核心,是表示層與數(shù)據(jù)層的連接橋梁. 通過其提供的電網(wǎng)數(shù)據(jù)服務和數(shù)據(jù)代理服務,實現(xiàn)表示層與數(shù)據(jù)層之間的數(shù)據(jù)交互. 鎖定服務和數(shù)據(jù)同步服務對表示層各個客戶端數(shù)據(jù)編輯行為統(tǒng)一管理,是電網(wǎng)GIS多用戶協(xié)同編輯的調(diào)控中心,也是本文研究的關(guān)鍵之處; 表示層提供用戶操作平臺,是所有數(shù)據(jù)請求和編輯行為的來源.
基于上述體系結(jié)構(gòu),電網(wǎng)GIS協(xié)同編輯流程具體如圖2.
圖2中設(shè)備數(shù)據(jù)鎖定與數(shù)據(jù)同步是整個流程的核心之處. 設(shè)備數(shù)據(jù)鎖定是本文電網(wǎng)GIS協(xié)同編輯的基礎(chǔ),將版本內(nèi)數(shù)據(jù)和待編輯設(shè)備鎖定,能夠避免不同用戶之間的編輯沖突和復雜的沖突合并操作,提高協(xié)同編輯的可用性; 數(shù)據(jù)同步服務基于消息路由和消息隊列機制,通過路由規(guī)則將各個客戶端的變更數(shù)據(jù)信息,加入到對應的消息隊列中,其他客戶端訂閱相應的消息隊列,同步獲取并顯示變更設(shè)備,實現(xiàn)客戶端與服務端及其他客戶端的數(shù)據(jù)一致性和實時性. 因此,下文將對數(shù)據(jù)鎖定和數(shù)據(jù)同步進一步討論分析.
設(shè)備鎖定分為兩種,一種是用戶編輯前的設(shè)備手動鎖定,具體來說是用戶編輯之前,對可能編輯的設(shè)備預先鎖定,編輯保存時,再對鎖定的設(shè)備解鎖,確保編輯過程中其他用戶不能編輯這些設(shè)備; 另一種是任務版本內(nèi)數(shù)據(jù)的自動鎖定,具體來說是用戶編輯結(jié)果保存入任務版本表時,自動將保存的數(shù)據(jù)鎖定. 任務提交,數(shù)據(jù)由版本表轉(zhuǎn)存到電網(wǎng)資源表時,自動將對應任務版本的鎖定數(shù)據(jù)解鎖. 自動鎖定不需要用戶手動干預,同時確保任務提交前,對應任務版本表數(shù)據(jù)不會被其他用戶編輯.
圖2 基于鎖定機制的協(xié)同編輯流程
為支持設(shè)備數(shù)據(jù)的鎖定,數(shù)據(jù)庫創(chuàng)建鎖定信息表(LockTable),并通過TYPE字段標示鎖定類型,服務端則基于LockTable為客戶端提供鎖定服務,LockTable具體表結(jié)構(gòu)如表1.
表1 鎖定信息表表結(jié)構(gòu)
鎖定服務包括設(shè)備鎖定檢測(Check),設(shè)備鎖定(Lock),設(shè)備鎖定更新(Update)等部分. Check模塊通過查詢設(shè)備鎖定表,判斷輸入設(shè)備是否已經(jīng)被鎖定,并返回具體的鎖定信息; Lock模塊在Check模塊的基礎(chǔ)上實現(xiàn)客戶端手動的設(shè)備鎖定; Update模塊實現(xiàn)用戶保存或者任務版本提交時對鎖定表的更新.
假定用戶待鎖定設(shè)備列表為LockDevList,編輯保存時的變更清單為EditList,登錄的版本ID為versionID,上述鎖定服務的Lock算法(Check算法在Lock算法中已有體現(xiàn))和編輯保存時的Update算法具體描述如表2和表3,版本提交時鎖定表更新即將versionID為提交版本ID的所有鎖定記錄刪除,不再具體描述算法.
表2 Lock算法描述
表3 Update算法描述
用戶進入任務版本編輯數(shù)據(jù)之前,需要手動鎖定待編輯設(shè)備,之后的編輯操作只能針對已鎖定的設(shè)備.通過上述Check算法可知,待鎖定設(shè)備可能被其他用戶或者版本鎖定使得當前鎖定操作失敗即鎖定沖突.鎖定沖突具體有以下幾種場景:
(1) 兩個或多個任務版本確實需要編輯同一設(shè)備,而設(shè)備已被其他版本鎖定.
(2) 其他用戶鎖定設(shè)備范圍過大,已經(jīng)鎖定當前用戶需要鎖定的部分設(shè)備;
(3) 當前用戶待鎖定設(shè)備范圍過大,包含了其他用戶或任務已經(jīng)鎖定的設(shè)備;
場景(1)中鎖定沖突由設(shè)備編輯維護業(yè)務決定,只能通過對編輯維護業(yè)務的調(diào)整和優(yōu)化來減少和避免;場景(2)和場景(3)都是鎖定設(shè)備范圍過大所致,因此,待鎖定設(shè)備的選擇是設(shè)備手動鎖定的關(guān)鍵. 待鎖定設(shè)備應趨近滿足用戶編輯維護需要的最小設(shè)備集合. 待鎖定設(shè)備越少,鎖定沖突的概率越小,同時也減少后續(xù)用戶鎖定沖突的可能.
基于此,兼顧電網(wǎng)GIS中設(shè)備數(shù)據(jù)編輯特點,本文提出了3種手動鎖定操作:
(1) 站房鎖定. 站房內(nèi)設(shè)備是一個相對獨立的數(shù)據(jù),站內(nèi)設(shè)備編輯通常只涉及一個站房,并且一個站房通常由一個用戶管理,站房鎖定即按照用戶選擇的站房將所屬站內(nèi)設(shè)備鎖定,這種方式能夠快速有效的支持站內(nèi)設(shè)備的協(xié)同編輯;
(2) 分段饋線鎖定. 與站內(nèi)設(shè)備相似,饋線及其所屬設(shè)備是電網(wǎng)GIS中站外設(shè)備中相對獨立的數(shù)據(jù),也是站外設(shè)備編輯維護的主體,而整條饋線的空間數(shù)據(jù)范圍數(shù)據(jù)量較大,需要多個用戶同時維護,因此本文提出分段饋線鎖定方式,用戶選擇饋線上起點和終點設(shè)備,根據(jù)電網(wǎng)拓撲分析,找出區(qū)間所有設(shè)備執(zhí)行鎖定操作;
(3) 選中設(shè)備鎖定:對用戶選中一個或多個設(shè)備執(zhí)行鎖定操作. 選中設(shè)備鎖定是一種更廣泛的鎖定操作,能鎖定任意一個或多個沒有被鎖定過的設(shè)備,是上述兩種設(shè)備鎖定方式的有益補充.
設(shè)備鎖定沖突時,用戶需要等待其他用戶解除鎖定或者根據(jù)返回的沖突設(shè)備信息重新選擇待鎖定設(shè)備(LockDevList),將沖突設(shè)備排查在LockDevList之外.同時,用戶編輯維護過程還可以繼續(xù)補充鎖定,具體編輯鎖定流程如圖3.
數(shù)據(jù)同步服務獲取各個客戶端的變更數(shù)據(jù)和變更數(shù)據(jù)標示信息(Key值),消息路由通過Key值和路由規(guī)則,將之加入到對應的消息隊列中,其他客戶端獲取訂閱消息隊列中的變更設(shè)備,并更新顯示,實現(xiàn)客戶端之間數(shù)據(jù)的一致性和實時性. 具體數(shù)據(jù)同步機制如圖4.
由上可知,數(shù)據(jù)同步機制分為發(fā)送端、數(shù)據(jù)同步服務和接收端,其核心是數(shù)據(jù)同步服務. 數(shù)據(jù)同步服務包括Exchange(交換機),Queue(消息隊列)兩個部分,具體過程是:
(1) 客戶端A、B將獲取的變更設(shè)備DevList和更變更數(shù)據(jù)標示信息Key根據(jù)交換機負載情況發(fā)送給交換機Exchange1或者Exchange2;
(2) 交換機基于路由規(guī)則對Key和消息隊列Queue進行模式匹配,將DevList發(fā)送給匹配的Queue;
(3) Queue將DevList加入隊列中,并將隊列中的DevList順序逐個發(fā)送給訂閱的客戶端.
本文基于電網(wǎng)GIS數(shù)據(jù)以地市為單位管理維護的特點,將用戶的所屬地市ID和當前編輯設(shè)備的信息作為Key值,如用戶A的所屬地市ID為“Nanjing”,當前編輯設(shè)備列表為a,b,c,d,則數(shù)據(jù)同步的Key值為“Nanjingabcd”. 同時消息隊列也使用地市名稱作為名稱,如“NanJing” Queue,“Zhenjiang” Queue.
路由規(guī)則是根據(jù)Key值和Queue的名稱進行全字符匹配,若Key值中包含了Queue名稱的字符,則匹配成功,否則匹配失敗. 匹配成功時將變更設(shè)備列表DevList投入到相應的Queue中. 即用戶A的DevList_A 投入到“Nanjing” Queue 中.
根據(jù)用戶所屬地市ID,在客戶端登陸時訂閱相應的Queue. 所屬地市為“Nanjing”的用戶在客戶端登陸時都訂閱“Nanjing” Queue. 當 Queue 不為空時,順序?qū)⑵渲写鎯Φ腄evList發(fā)送給訂閱的客戶端. 即“Nanjing”Queue中存儲的DevList_A發(fā)送給訂閱的客戶端,因此,同屬“Nanjing”的其他客戶端都能獲取A用戶的變更設(shè)備DevList_A,實現(xiàn)數(shù)據(jù)同步.
結(jié)合上述研究,在“配網(wǎng)應用系統(tǒng)與地理信息系統(tǒng)深度融合應用” 項目開發(fā)過程中實現(xiàn)了基于鎖定機制的電網(wǎng)GIS協(xié)同編輯,并滿足了項目對協(xié)同編輯工作的需求.
原型系統(tǒng)協(xié)同編輯過程如圖5至圖7. 假定用戶A和B登陸同一任務,分別編輯區(qū)域內(nèi)的站內(nèi)和站外設(shè)備. A、B用戶分別對站內(nèi)設(shè)備和站外部分饋線設(shè)備進行鎖定,圖5中高亮部分為B用戶鎖定設(shè)備,左側(cè)為鎖定設(shè)備列表; 鎖定完成后同時編輯設(shè)備,A用戶在站內(nèi)添加一個間隔,B用戶移動一個柱上變壓器,如圖6所示; 保存時,A先保存,結(jié)果同步到B客戶端,如圖7所示; B再進行保存,結(jié)果同步到A客戶端. 至此,完成整個協(xié)同編輯過程.
圖5 B用戶鎖定設(shè)備及對應設(shè)備列表
圖6 A、B用戶分別編輯設(shè)備
圖7 數(shù)據(jù)同步
電網(wǎng)GIS多用戶協(xié)同編輯是當前電網(wǎng)GIS應用中的現(xiàn)實需求,本文提出的基于鎖定機制的電網(wǎng)GIS多用戶協(xié)同編輯實現(xiàn)了電網(wǎng)GIS多用戶之間的協(xié)同工作,并在協(xié)同編輯流程、客戶端數(shù)據(jù)一致性等方面進行了優(yōu)化和完善. 具體優(yōu)點如下:
(1) 基于鎖定機制的協(xié)同編輯流程滿足不同任務之間以及同一任務不同用戶之間的協(xié)同工作;
(2) 通過鎖定機制規(guī)避了設(shè)備編輯沖突,避免了復雜的沖突合并操作;
(3) 基于消息隊列和發(fā)布訂閱方式的數(shù)據(jù)同步實現(xiàn)了不同客戶端的數(shù)據(jù)一致性和實時性.
本文通過鎖定機制規(guī)避了設(shè)備編輯沖突,但是針對用戶鎖定設(shè)備過多,任務版本內(nèi)數(shù)據(jù)鎖定時間過長,以及誤操作鎖定了其他用戶責任范圍數(shù)據(jù)導致其他用戶無法鎖定的情況,本文未做詳細討論. 今后作者也將進一步分析研究用戶鎖定范圍權(quán)限及鎖定時間權(quán)限等問題.
1 史興華. 電網(wǎng)GIS及其應用. 北京:中國電力出版社,2010.
2 林峰,郭寶,錢蔚. 面向公共電網(wǎng)GIS平臺的電網(wǎng)地理圖形應用架構(gòu). 電力系統(tǒng)自動化,2011,35(24):63-67.
3 馮丹,譚術(shù),王果. GIS技術(shù)在配網(wǎng)管理中的應用. 四川電力技術(shù),2003,26(4):55-57.
4 弓帥. 電力GIS平臺空間數(shù)據(jù)管理系統(tǒng)[碩士學位論文].北京:華北電力大學(北京),2011.
5 李寧. 供電企業(yè)配電AM/FM/GIS系統(tǒng)常見問題探討. 電力系統(tǒng)及其自動化學報,2002,14(2):53-55.
6 沈陳華. 城鄉(xiāng)一體化地籍管理信息系統(tǒng)數(shù)據(jù)組織研究. 遙感信息,2006,(4):67-69.
7 邵志舉. 網(wǎng)格地理信息數(shù)據(jù)庫研究和應用仿真. 計算機仿真,2008,25(11):124-128. [doi:10.3969/j.issn.1006-9348.2008.11.035]
8 劉英,張曙光. 基于多維粒度樹的GIS空間數(shù)據(jù)并發(fā)控制.計算機工程,2006,32(7):55-57.
9 曹剛. 電網(wǎng)線路管理地理信息系統(tǒng)的設(shè)計與實現(xiàn)[碩士學位論文]. 成都:電子科技大學,2012.
10 劉會俠,龔健雅,劉華,等. 一種新的基于空間數(shù)據(jù)庫的空間數(shù)據(jù)編輯處理方法. 測繪信息與工程,2005,30(5):29-30.
11 陳波,周順平,萬波,等. GIS中長事務模型. 地球科學-中國地質(zhì)大學學報,2006,31(5):605-608.
12 周馳,郭寶,王沈亮,等. 生產(chǎn)管理系統(tǒng)與電網(wǎng)GIS平臺集成應用分析. 電力信息化,2011,9(2):102-106.
13 朱鳴,竇萬峰. 協(xié)同圖形編輯系統(tǒng)中改進的多版本技術(shù). 小型微型計算機系統(tǒng),2007,28(7):1318-1321.
14 吳娟. 地理要素的并發(fā)編輯研究[碩士學位論文]. 南京:南京師范大學,2008.
15 韓小妹. 實時協(xié)同GIS中并發(fā)控制模型研究[碩士學位論文]. 徐州:中國礦業(yè)大學,2015.
16 李偉,劉仁義,劉南. 基于任務劃分和多版本技術(shù)的GIS空間數(shù)據(jù)協(xié)同處理研究. 浙江大學學報(理學版),2005,32(4):475-480.