基于锁定机制的电网GIS多用户协同编辑研究①
2018-05-04胡秋翔崇殿兵毕思斯
胡秋翔, 崇殿兵, 毕思斯
(南瑞集团公司(国网电力科学研究院),南京 211006)
引言
随着电网信息化及智能电网的推进,电网GIS(Geographic Information System)得到了广泛的应用,涵盖了电网企业的输电、变电、配电、调度、营销、通信等各个生产环节[1-3]. 但是应用的推广和深入使得电网GIS维护工作量和维护人员也越来越多,多用户协同编辑成为电网GIS数据编辑维护的现实需要[4].目前,电网GIS支持多用户协同编辑主要有以下几种方式:
(1) 分层管理方式,通过集中维护和细分文件的形式按照图层信息将电网资源空间数据拆分成多个文件,每个用户编辑不同的文件,编辑完成后,将所有文件合并成完整的数据[5]. 分层管理的改进方法主要体现在数据划分方式上,包括将分层管理改进为按区域分块管理,实现用户按区域管理数据[6,7]; 顾及拓扑关系的空间划分,尽量避免不同分割单元设备之间存在拓扑关系的情况[8]等.
分层管理及其改进方法总体上协同编辑方式简便,在拓扑关系、编辑场景不复杂,且用户数较少时,能够满足协同编辑需要. 但应对当前大数据量的电网资源空间数据,以及越来越多的编辑维护工作和维护人员,分层管理方式无法维护不同数据块间设备的拓扑关系,并且不同编辑客户端数据不一致,无法分析.
(2) 空间数据库方式,多个用户同时编辑数据库中设备数据,按照完成的先后顺序同步执行入库操作[9].这是当前较为常见的一种方式,其改进方法有:引入辅助表,存储设备的操作序号和空间信息,实现设备操作日志的管理和操作回滚[10]; 结合状态机机制,支持电网资源空间数据长事务编辑需求[11]等.
空间数据库的方式在编辑设备没有交集,结果不会互相影响时效果较好. 但同时编辑一个设备时,后入库的结果会覆盖之前的结果,无法确保最终结果与用户的操作意愿一致,影响整体数据的正确性. 同时缺少数据同步,数据的一致性和实时性无法得到保障.
(3) 任务划分与版本管理方式,将电网GIS编辑工作划分成不同的子任务,任务编辑数据存储在任务对应的版本表中,任务提交时手动合并版本之间的冲突设备[12],并将版本内数据存储到电网资源数据库中,针对编辑冲突的处理,许多学者提出了优化方法:基于版本复制的版本存储技术,分离出冲突操作存于子版本进行处理,降低冲突处理难度[13]; 将编辑操作封装成命令消息并采用并发操作矩阵快速检测和处理编辑冲突[14].
任务划分与版本管理方式能够有效管理和拆分电网GIS协同编辑工作,同时版本数据提交、编辑冲突手动合并确保了数据的一致性和正确性,但考虑到电网GIS数据的空间复杂性和拓扑复杂性,冲突结果的手动合并会非常复杂[15],对操作人员要求很高,并且容易导致数据错误. 同时该方法最小的协同编辑单位是子任务,无法实现多个用户编辑同一个子任务.
本文针对电网GIS协同编辑时的数据冲突问题和数据一致性问题,在上述任务划分与版本管理方式基础上,提出基于锁定机制的电网GIS多用户协同编辑.通过锁定机制管理可能存在编辑冲突的任务版本内数据及用户待编辑数据,避免编辑冲突的产生和冲突合并操作. 同时,编辑保存后,将编辑数据同步到其他客户端,确保其他客户端数据的一致性和实时性
1 电网GIS协同编辑
电网GIS协同编辑要求建立一个多用户、并发管理的协同工作环境,传统的单层或两层GIS系统结构已经难以模拟这种复杂场景,三层结构已成为GIS协同编辑的普遍选择[16]. 图1是基于锁定机制的电网GIS协同编辑体系结构图.
图1 协同编辑体系结构
图1中数据层提供电网资源数据,版本数据,锁定数据,配置数据等电网GIS中所有数据的存储,管理,索引功能; 服务层是电网GIS协同编辑的核心,是表示层与数据层的连接桥梁. 通过其提供的电网数据服务和数据代理服务,实现表示层与数据层之间的数据交互. 锁定服务和数据同步服务对表示层各个客户端数据编辑行为统一管理,是电网GIS多用户协同编辑的调控中心,也是本文研究的关键之处; 表示层提供用户操作平台,是所有数据请求和编辑行为的来源.
基于上述体系结构,电网GIS协同编辑流程具体如图2.
图2中设备数据锁定与数据同步是整个流程的核心之处. 设备数据锁定是本文电网GIS协同编辑的基础,将版本内数据和待编辑设备锁定,能够避免不同用户之间的编辑冲突和复杂的冲突合并操作,提高协同编辑的可用性; 数据同步服务基于消息路由和消息队列机制,通过路由规则将各个客户端的变更数据信息,加入到对应的消息队列中,其他客户端订阅相应的消息队列,同步获取并显示变更设备,实现客户端与服务端及其他客户端的数据一致性和实时性. 因此,下文将对数据锁定和数据同步进一步讨论分析.
2 设备锁定机制
设备锁定分为两种,一种是用户编辑前的设备手动锁定,具体来说是用户编辑之前,对可能编辑的设备预先锁定,编辑保存时,再对锁定的设备解锁,确保编辑过程中其他用户不能编辑这些设备; 另一种是任务版本内数据的自动锁定,具体来说是用户编辑结果保存入任务版本表时,自动将保存的数据锁定. 任务提交,数据由版本表转存到电网资源表时,自动将对应任务版本的锁定数据解锁. 自动锁定不需要用户手动干预,同时确保任务提交前,对应任务版本表数据不会被其他用户编辑.
图2 基于锁定机制的协同编辑流程
为支持设备数据的锁定,数据库创建锁定信息表(LockTable),并通过TYPE字段标示锁定类型,服务端则基于LockTable为客户端提供锁定服务,LockTable具体表结构如表1.
表1 锁定信息表表结构
2.1 锁定服务
锁定服务包括设备锁定检测(Check),设备锁定(Lock),设备锁定更新(Update)等部分. Check模块通过查询设备锁定表,判断输入设备是否已经被锁定,并返回具体的锁定信息; Lock模块在Check模块的基础上实现客户端手动的设备锁定; Update模块实现用户保存或者任务版本提交时对锁定表的更新.
假定用户待锁定设备列表为LockDevList,编辑保存时的变更清单为EditList,登录的版本ID为versionID,上述锁定服务的Lock算法(Check算法在Lock算法中已有体现)和编辑保存时的Update算法具体描述如表2和表3,版本提交时锁定表更新即将versionID为提交版本ID的所有锁定记录删除,不再具体描述算法.
表2 Lock算法描述
表3 Update算法描述
2.2 设备手动锁定
用户进入任务版本编辑数据之前,需要手动锁定待编辑设备,之后的编辑操作只能针对已锁定的设备.通过上述Check算法可知,待锁定设备可能被其他用户或者版本锁定使得当前锁定操作失败即锁定冲突.锁定冲突具体有以下几种场景:
(1) 两个或多个任务版本确实需要编辑同一设备,而设备已被其他版本锁定.
(2) 其他用户锁定设备范围过大,已经锁定当前用户需要锁定的部分设备;
(3) 当前用户待锁定设备范围过大,包含了其他用户或任务已经锁定的设备;
场景(1)中锁定冲突由设备编辑维护业务决定,只能通过对编辑维护业务的调整和优化来减少和避免;场景(2)和场景(3)都是锁定设备范围过大所致,因此,待锁定设备的选择是设备手动锁定的关键. 待锁定设备应趋近满足用户编辑维护需要的最小设备集合. 待锁定设备越少,锁定冲突的概率越小,同时也减少后续用户锁定冲突的可能.
基于此,兼顾电网GIS中设备数据编辑特点,本文提出了3种手动锁定操作:
(1) 站房锁定. 站房内设备是一个相对独立的数据,站内设备编辑通常只涉及一个站房,并且一个站房通常由一个用户管理,站房锁定即按照用户选择的站房将所属站内设备锁定,这种方式能够快速有效的支持站内设备的协同编辑;
(2) 分段馈线锁定. 与站内设备相似,馈线及其所属设备是电网GIS中站外设备中相对独立的数据,也是站外设备编辑维护的主体,而整条馈线的空间数据范围数据量较大,需要多个用户同时维护,因此本文提出分段馈线锁定方式,用户选择馈线上起点和终点设备,根据电网拓扑分析,找出区间所有设备执行锁定操作;
(3) 选中设备锁定:对用户选中一个或多个设备执行锁定操作. 选中设备锁定是一种更广泛的锁定操作,能锁定任意一个或多个没有被锁定过的设备,是上述两种设备锁定方式的有益补充.
设备锁定冲突时,用户需要等待其他用户解除锁定或者根据返回的冲突设备信息重新选择待锁定设备(LockDevList),将冲突设备排查在LockDevList之外.同时,用户编辑维护过程还可以继续补充锁定,具体编辑锁定流程如图3.
3 数据同步
数据同步服务获取各个客户端的变更数据和变更数据标示信息(Key值),消息路由通过Key值和路由规则,将之加入到对应的消息队列中,其他客户端获取订阅消息队列中的变更设备,并更新显示,实现客户端之间数据的一致性和实时性. 具体数据同步机制如图4.
由上可知,数据同步机制分为发送端、数据同步服务和接收端,其核心是数据同步服务. 数据同步服务包括Exchange(交换机),Queue(消息队列)两个部分,具体过程是:
(1) 客户端A、B将获取的变更设备DevList和更变更数据标示信息Key根据交换机负载情况发送给交换机Exchange1或者Exchange2;
(2) 交换机基于路由规则对Key和消息队列Queue进行模式匹配,将DevList发送给匹配的Queue;
(3) Queue将DevList加入队列中,并将队列中的DevList顺序逐个发送给订阅的客户端.
本文基于电网GIS数据以地市为单位管理维护的特点,将用户的所属地市ID和当前编辑设备的信息作为Key值,如用户A的所属地市ID为“Nanjing”,当前编辑设备列表为a,b,c,d,则数据同步的Key值为“Nanjingabcd”. 同时消息队列也使用地市名称作为名称,如“NanJing” Queue,“Zhenjiang” Queue.
路由规则是根据Key值和Queue的名称进行全字符匹配,若Key值中包含了Queue名称的字符,则匹配成功,否则匹配失败. 匹配成功时将变更设备列表DevList投入到相应的Queue中. 即用户A的DevList_A 投入到“Nanjing” Queue 中.
根据用户所属地市ID,在客户端登陆时订阅相应的Queue. 所属地市为“Nanjing”的用户在客户端登陆时都订阅“Nanjing” Queue. 当 Queue 不为空时,顺序将其中存储的DevList发送给订阅的客户端. 即“Nanjing”Queue中存储的DevList_A发送给订阅的客户端,因此,同属“Nanjing”的其他客户端都能获取A用户的变更设备DevList_A,实现数据同步.
4 原型系统实现
结合上述研究,在“配网应用系统与地理信息系统深度融合应用” 项目开发过程中实现了基于锁定机制的电网GIS协同编辑,并满足了项目对协同编辑工作的需求.
原型系统协同编辑过程如图5至图7. 假定用户A和B登陆同一任务,分别编辑区域内的站内和站外设备. A、B用户分别对站内设备和站外部分馈线设备进行锁定,图5中高亮部分为B用户锁定设备,左侧为锁定设备列表; 锁定完成后同时编辑设备,A用户在站内添加一个间隔,B用户移动一个柱上变压器,如图6所示; 保存时,A先保存,结果同步到B客户端,如图7所示; B再进行保存,结果同步到A客户端. 至此,完成整个协同编辑过程.
图5 B用户锁定设备及对应设备列表
图6 A、B用户分别编辑设备
图7 数据同步
5 小结
电网GIS多用户协同编辑是当前电网GIS应用中的现实需求,本文提出的基于锁定机制的电网GIS多用户协同编辑实现了电网GIS多用户之间的协同工作,并在协同编辑流程、客户端数据一致性等方面进行了优化和完善. 具体优点如下:
(1) 基于锁定机制的协同编辑流程满足不同任务之间以及同一任务不同用户之间的协同工作;
(2) 通过锁定机制规避了设备编辑冲突,避免了复杂的冲突合并操作;
(3) 基于消息队列和发布订阅方式的数据同步实现了不同客户端的数据一致性和实时性.
本文通过锁定机制规避了设备编辑冲突,但是针对用户锁定设备过多,任务版本内数据锁定时间过长,以及误操作锁定了其他用户责任范围数据导致其他用户无法锁定的情况,本文未做详细讨论. 今后作者也将进一步分析研究用户锁定范围权限及锁定时间权限等问题.
1 史兴华. 电网GIS及其应用. 北京:中国电力出版社,2010.
2 林峰,郭宝,钱蔚. 面向公共电网GIS平台的电网地理图形应用架构. 电力系统自动化,2011,35(24):63-67.
3 冯丹,谭术,王果. GIS技术在配网管理中的应用. 四川电力技术,2003,26(4):55-57.
4 弓帅. 电力GIS平台空间数据管理系统[硕士学位论文].北京:华北电力大学(北京),2011.
5 李宁. 供电企业配电AM/FM/GIS系统常见问题探讨. 电力系统及其自动化学报,2002,14(2):53-55.
6 沈陈华. 城乡一体化地籍管理信息系统数据组织研究. 遥感信息,2006,(4):67-69.
7 邵志举. 网格地理信息数据库研究和应用仿真. 计算机仿真,2008,25(11):124-128. [doi:10.3969/j.issn.1006-9348.2008.11.035]
8 刘英,张曙光. 基于多维粒度树的GIS空间数据并发控制.计算机工程,2006,32(7):55-57.
9 曹刚. 电网线路管理地理信息系统的设计与实现[硕士学位论文]. 成都:电子科技大学,2012.
10 刘会侠,龚健雅,刘华,等. 一种新的基于空间数据库的空间数据编辑处理方法. 测绘信息与工程,2005,30(5):29-30.
11 陈波,周顺平,万波,等. GIS中长事务模型. 地球科学-中国地质大学学报,2006,31(5):605-608.
12 周驰,郭宝,王沈亮,等. 生产管理系统与电网GIS平台集成应用分析. 电力信息化,2011,9(2):102-106.
13 朱鸣,窦万峰. 协同图形编辑系统中改进的多版本技术. 小型微型计算机系统,2007,28(7):1318-1321.
14 吴娟. 地理要素的并发编辑研究[硕士学位论文]. 南京:南京师范大学,2008.
15 韩小妹. 实时协同GIS中并发控制模型研究[硕士学位论文]. 徐州:中国矿业大学,2015.
16 李伟,刘仁义,刘南. 基于任务划分和多版本技术的GIS空间数据协同处理研究. 浙江大学学报(理学版),2005,32(4):475-480.