日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

電網(wǎng)多任務(wù)在線協(xié)同編輯方法與流程

文檔序號(hào):12063789閱讀:496來源:國(guó)知局
電網(wǎng)多任務(wù)在線協(xié)同編輯方法與流程

本發(fā)明涉及電網(wǎng)信息通信技術(shù)領(lǐng)域,尤其涉及一種電網(wǎng)多任務(wù)在線協(xié)同編輯方法。



背景技術(shù):

為了全面有效支撐各級(jí)單位和部門對(duì)電網(wǎng)資源信息的有效管理,需要建設(shè)覆蓋國(guó)家電網(wǎng)公司、省公司、地市公司各級(jí)電網(wǎng)資源維護(hù)應(yīng)用。在基建工程、技改大修工程、用戶工程等工程完成后,運(yùn)維檢修人員和調(diào)度人員要更新相關(guān)的設(shè)備圖形和臺(tái)帳信息,實(shí)現(xiàn)電網(wǎng)設(shè)備設(shè)施的圖形、拓?fù)洹⒃O(shè)備臺(tái)帳的一體化維護(hù),實(shí)現(xiàn)全公司電網(wǎng)橫向和縱向的“一張網(wǎng)”。運(yùn)維檢修人員需要維護(hù)運(yùn)維檢修部運(yùn)維管理的所有設(shè)備信息,實(shí)現(xiàn)設(shè)備臺(tái)帳與資產(chǎn)的互聯(lián),支撐資產(chǎn)全壽命管理,實(shí)現(xiàn)電網(wǎng)與客戶信息互聯(lián),支撐故障搶修、線損精細(xì)化等綜合應(yīng)用。

現(xiàn)有版本管理方式多數(shù)以單機(jī)與任務(wù)隔離方式為主,即客戶端下載一份全網(wǎng)數(shù)據(jù)存儲(chǔ)在本地?cái)?shù)據(jù)庫中,用戶在本地?cái)?shù)據(jù)基礎(chǔ)之上進(jìn)行圖形編輯,在本地編輯完成后,在提交環(huán)節(jié)通過復(fù)雜的版本數(shù)據(jù)合并后寫入數(shù)據(jù)庫。在這種方式下,隨著電網(wǎng)數(shù)據(jù)的增長(zhǎng),本地文件過大而導(dǎo)致數(shù)據(jù)查詢性能越來越低,圖形漫游性能卡頓現(xiàn)象嚴(yán)重,在多任務(wù)提交中,數(shù)據(jù)合并環(huán)節(jié)過于復(fù)雜,經(jīng)常導(dǎo)致提交的數(shù)據(jù)在第二天才能看到,且任務(wù)是完全隔離的,無法實(shí)現(xiàn)多人協(xié)同編輯、展示與發(fā)布,降低工作效率。

在公開號(hào)為CN104717239A的中國(guó)專利公開文件中,提出了一種共享文件的協(xié)同編輯方法、服務(wù)器及用戶端,所述方法包括:根據(jù)共享文件來源,為多個(gè)用戶端分配對(duì)共享文件的編輯權(quán)限;建立一個(gè)棧表;獲取所述多個(gè)用戶端的共享文件編輯信息,將所述共享文件編輯信息逐條存儲(chǔ)于所述棧表中。但該方案中,對(duì)于其他用戶端來說,只有部分編輯權(quán)限,無法對(duì)共享文件的全部數(shù)據(jù)進(jìn)行編輯,存在局限性。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明所要解決的技術(shù)問題是:提供一種電網(wǎng)多任務(wù)在線協(xié)同編輯方法,可實(shí)現(xiàn)編輯結(jié)果的實(shí)時(shí)共享。

為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:一種電網(wǎng)多任務(wù)在線協(xié)同編輯方法,包括:

創(chuàng)建狀態(tài)編號(hào)序列,所述狀態(tài)編號(hào)序列中的序列值從小到大依次排序;

根據(jù)編輯任務(wù),對(duì)基版表進(jìn)行編輯操作;

若所述編輯操作是在編輯態(tài)下進(jìn)行,則將編輯的數(shù)據(jù)記錄到與所述基版表對(duì)應(yīng)的版本表中,并記錄所述編輯任務(wù)對(duì)應(yīng)的版本編號(hào)以及所述編輯操作對(duì)應(yīng)的編輯標(biāo)識(shí);

依據(jù)編輯操作的時(shí)間前后順序,將編輯操作與狀態(tài)編號(hào)序列中依次取出的序列值進(jìn)行關(guān)聯(lián),并將所述序列值寫入所述版本表中;

將所述序列值以及被編輯的基版表編號(hào)進(jìn)行關(guān)聯(lián),并寫入版本變更表;

根據(jù)所述版本變更表,判斷一基版表是否發(fā)生變更;

若發(fā)生變更,則根據(jù)所述一基版表對(duì)應(yīng)的版本表,對(duì)應(yīng)更新所述一基版表;

同時(shí),將所述更新操作與狀態(tài)編號(hào)序列的下一序列值進(jìn)行關(guān)聯(lián),并將所述下一序列值寫入基版表中;

將所述下一序列值以及更新的基版表編號(hào)進(jìn)行關(guān)聯(lián),并寫入基版變更表;

發(fā)布所述一基版表。

本發(fā)明的有益效果在于:在進(jìn)行編輯操作時(shí),通過按序從狀態(tài)編號(hào)序列中取出序列值與編輯操作關(guān)聯(lián),由于狀態(tài)編號(hào)序列中的序列值是從小到大排序的,因此可直觀地表示出各個(gè)編輯操作的順序;通過設(shè)置版本變更表,可以通過序列值判斷基版表是否發(fā)生變更,還可通過與序列值對(duì)應(yīng)的基版表編號(hào)獲取發(fā)生變更的基版表,再根據(jù)版本表中記錄的變更信息,對(duì)應(yīng)更新基版表,從而實(shí)現(xiàn)多個(gè)客戶端基于不同的編輯任務(wù)對(duì)不同或相同的基版表進(jìn)行協(xié)同編輯。

附圖說明

圖1為本發(fā)明一種多任務(wù)在線協(xié)同編輯方法的流程圖;

圖2為本發(fā)明實(shí)施例一的方法流程圖;

圖3為本發(fā)明實(shí)施例二的步驟S6的流程圖。

具體實(shí)施方式

為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖詳予說明。

本發(fā)明最關(guān)鍵的構(gòu)思在于:通過狀態(tài)編號(hào)序列的序列值表示編輯操作的順序,且所有任務(wù)共用一個(gè)狀態(tài)編號(hào)序列,在進(jìn)行編輯時(shí),可看到其他任務(wù)編輯的實(shí)時(shí)結(jié)果。

請(qǐng)參閱圖1,一種電網(wǎng)多任務(wù)在線協(xié)同編輯方法,包括:

創(chuàng)建狀態(tài)編號(hào)序列,所述狀態(tài)編號(hào)序列中的序列值從小到大依次排序;

根據(jù)編輯任務(wù),對(duì)基版表進(jìn)行編輯操作;

若所述編輯操作是在編輯態(tài)下進(jìn)行,則將編輯的數(shù)據(jù)記錄到與所述基版表對(duì)應(yīng)的版本表中,并記錄所述編輯任務(wù)對(duì)應(yīng)的版本編號(hào)以及所述編輯操作對(duì)應(yīng)的編輯標(biāo)識(shí);

依據(jù)編輯操作的時(shí)間前后順序,將編輯操作與狀態(tài)編號(hào)序列中依次取出的序列值進(jìn)行關(guān)聯(lián),并將所述序列值寫入所述版本表中;

將所述序列值以及被編輯的基版表編號(hào)進(jìn)行關(guān)聯(lián),并寫入版本變更表;

根據(jù)所述版本變更表,判斷一基版表是否發(fā)生變更;

若發(fā)生變更,則根據(jù)所述一基版表對(duì)應(yīng)的版本表,對(duì)應(yīng)更新所述一基版表;

同時(shí),將所述更新操作與狀態(tài)編號(hào)序列的下一序列值進(jìn)行關(guān)聯(lián),并將所述下一序列值寫入基版表中;

將所述下一序列值以及更新的基版表編號(hào)進(jìn)行關(guān)聯(lián),并寫入基版變更表;

發(fā)布所述一基版表。

從上述描述可知,本發(fā)明的有益效果在于:在編輯態(tài)下對(duì)基版表進(jìn)行編輯,不直接對(duì)基版表的數(shù)據(jù)進(jìn)行編輯,而是先記錄到版本表中,當(dāng)要進(jìn)行版本發(fā)布時(shí)才將版本表中的數(shù)據(jù)對(duì)應(yīng)更新到基版表中。

進(jìn)一步地,所述“根據(jù)編輯任務(wù),對(duì)基版表進(jìn)行編輯操作”之后,進(jìn)一步包括:

若所述編輯操作是在運(yùn)行態(tài)下進(jìn)行,則根據(jù)所述編輯操作更新所述基版表,并記錄所述編輯任務(wù)對(duì)應(yīng)的版本編號(hào);

依據(jù)編輯操作的時(shí)間前后順序,將編輯操作與狀態(tài)編號(hào)序列中依次取出的序列值進(jìn)行關(guān)聯(lián),并將所述序列值寫入所述基版表中;

將所述序列值以及被編輯的基版表編號(hào)進(jìn)行關(guān)聯(lián),并寫入基版變更表。

由上述描述可知,在運(yùn)行態(tài)下對(duì)基版表進(jìn)行編輯,則實(shí)時(shí)更新基版表,不涉及版本表。

進(jìn)一步地,所述“根據(jù)所述版本變更表,判斷一基版表是否發(fā)生變更”具體為:

獲取版本變更表中最大的序列值;

獲取所有基版表及版本表中最大的序列值;

判斷兩個(gè)所述最大的序列值是否一致;

若不一致,則根據(jù)版本變更表,獲取在兩個(gè)所述最大的序列值之間的序列值對(duì)應(yīng)的基版表編號(hào);

判斷所述對(duì)應(yīng)的基版表編號(hào)是否包含所述一基版表編號(hào);

若包含,則判定所述一基版表發(fā)生變更。

由上述描述可知,通過代表編輯操作的時(shí)間前后順序的序列值,直觀地表示出對(duì)各個(gè)數(shù)據(jù)進(jìn)行編輯的順序,可以很容易地得知相對(duì)于一個(gè)時(shí)間點(diǎn),之后是否有進(jìn)行編輯,從而判斷是否發(fā)生變更。

進(jìn)一步地,所述“若發(fā)生變更,則根據(jù)所述一基版表對(duì)應(yīng)的版本表,對(duì)應(yīng)更新所述一基版表”具體為:

若所述一基版表對(duì)應(yīng)的版本表中一數(shù)據(jù)對(duì)應(yīng)的編輯標(biāo)識(shí)為預(yù)設(shè)的新增數(shù)據(jù)標(biāo)識(shí),則將所述一數(shù)據(jù)增加至所述一基版表中,并在所述一基版表中將對(duì)應(yīng)的版本編號(hào)置為預(yù)設(shè)的初始編號(hào);

若所述一基版表對(duì)應(yīng)的版本表中一數(shù)據(jù)對(duì)應(yīng)的編輯標(biāo)識(shí)為預(yù)設(shè)的修改數(shù)據(jù)標(biāo)識(shí),則在所述一基版表中搜索到原來的所述一數(shù)據(jù),將所述版本表中編輯后的所述一數(shù)據(jù)同步至所述一基版表中,并在所述一基版表中將對(duì)應(yīng)的版本編號(hào)置為預(yù)設(shè)的初始編號(hào);

若所述一基版表對(duì)應(yīng)的版本表中一數(shù)據(jù)對(duì)應(yīng)的編輯標(biāo)識(shí)為預(yù)設(shè)的刪除基版數(shù)據(jù)標(biāo)識(shí),則在所述一基版表中刪除所述一數(shù)據(jù)。

由上述描述可知,以增量數(shù)據(jù)的方式進(jìn)行更新,只保留最后的編輯結(jié)果,而不考慮編輯過程。

進(jìn)一步地,所述“若發(fā)生變更,則根據(jù)所述一基版表對(duì)應(yīng)的版本表,對(duì)應(yīng)更新所述一基版表”之后,進(jìn)一步包括:

刪除所述對(duì)應(yīng)的版本表中的所述一數(shù)據(jù)。

由上述描述可知,將已進(jìn)行更新的數(shù)據(jù)及時(shí)從版本表中進(jìn)行刪除,從而保證已發(fā)布的版本記錄能夠及時(shí)從版本緩存中刪除。

進(jìn)一步地,所述“根據(jù)編輯任務(wù),對(duì)基版表進(jìn)行編輯操作”之前,進(jìn)一步包括:

將電網(wǎng)設(shè)備的基版表及其對(duì)應(yīng)的版本表載入內(nèi)存,并映射為內(nèi)存對(duì)象組織管理。

由上述描述可知,通過將空間數(shù)據(jù)表在內(nèi)存中以面向?qū)ο蟮男问竭M(jìn)行儲(chǔ)存,可節(jié)約內(nèi)存空間。

進(jìn)一步地,所述基版表中的一條數(shù)據(jù)只能在一個(gè)編輯任務(wù)中進(jìn)行編輯。

由上述描述可知,通過版本鎖定機(jī)制,避免沖突編輯。

實(shí)施例一

本發(fā)明的實(shí)施例一為:一種電網(wǎng)多任務(wù)在線協(xié)同編輯方法,所述方法基于版本管理技術(shù),版本管理技術(shù)是在圖形維護(hù)、編輯時(shí)使用到的一種長(zhǎng)事務(wù)的圖形維護(hù)處理技術(shù)。通過它可以實(shí)現(xiàn)不同的圖形版本層進(jìn)行各自任務(wù)的維護(hù)和編輯,而互不影響。在系統(tǒng)中,用于實(shí)現(xiàn)運(yùn)行態(tài)電網(wǎng)與編輯態(tài)電網(wǎng)的隔離。版本任務(wù)編輯工作全部在編輯態(tài)下進(jìn)行,在運(yùn)行態(tài)下看不到編輯態(tài)的數(shù)據(jù),只有待任務(wù)發(fā)布之后,編輯態(tài)數(shù)據(jù)合并到運(yùn)行態(tài)才可以。將每一個(gè)電網(wǎng)設(shè)備運(yùn)維任務(wù)單做為一個(gè)版本,記錄電網(wǎng)G I S數(shù)據(jù)的變化;當(dāng)版本經(jīng)審核發(fā)布后,則結(jié)束版本的生命周期;版本的審核發(fā)布作為一個(gè)長(zhǎng)事務(wù),要么全部成功,要么全部失敗。

本實(shí)施例中,數(shù)據(jù)庫中表的原始狀態(tài)稱為基版表,一個(gè)數(shù)據(jù)庫中存在有多張基版表,因此為每個(gè)基版表都設(shè)置了編號(hào),每個(gè)基版表都有與其一一對(duì)應(yīng)的版本表;同時(shí),為了保存版本中的編輯狀態(tài),以及提高版本數(shù)據(jù)查詢效率,每個(gè)基版表增加兩個(gè)字段,分別是狀態(tài)編號(hào)(STATEID)和版本編號(hào)(VERSIONID),狀態(tài)編號(hào)表示對(duì)數(shù)據(jù)進(jìn)行編輯操作的時(shí)間前后順序,版本編號(hào)即編輯任務(wù)對(duì)應(yīng)的編號(hào)。版本表相對(duì)基版表增加一個(gè)編輯標(biāo)識(shí)字段(ADDFLAG),描述數(shù)據(jù)的編輯類型(新增、修改、刪除,其中刪除包括刪除基版數(shù)據(jù)和刪除新增數(shù)據(jù)),方便版本編輯增量的查詢。

請(qǐng)參照?qǐng)D2,所述方法包括如下步驟:

S1:創(chuàng)建狀態(tài)編號(hào)序列,所述狀態(tài)編號(hào)序列中的序列值從小到大依次排序;優(yōu)選地,可以從小到大依次遞增排序,如0、1、2、3……以此類推。

S2:根據(jù)編輯任務(wù),對(duì)基版表進(jìn)行編輯操作;此時(shí),判斷該編輯操作是否在編輯態(tài)下進(jìn)行的,若是,執(zhí)行步驟S3,若否,則表示該編輯操作是在運(yùn)行態(tài)下進(jìn)行的,執(zhí)行步驟S11。進(jìn)一步地,營(yíng)銷、通信系統(tǒng)使用場(chǎng)景是直接在運(yùn)行態(tài)上進(jìn)行編輯,運(yùn)檢系統(tǒng)不能在運(yùn)行態(tài)編輯,必須通過創(chuàng)建一個(gè)任務(wù)工單,在任務(wù)中進(jìn)行編輯,之后提交審核,審核通過之后,發(fā)布編輯后的數(shù)據(jù),此時(shí)會(huì)將任務(wù)中的編輯數(shù)據(jù)寫入基版表中。運(yùn)行態(tài)下的編輯數(shù)據(jù)直接寫入基版表中,編輯態(tài)下的編輯數(shù)據(jù)直接寫入版本表中。

S3:將編輯的數(shù)據(jù)記錄到與所述基版表對(duì)應(yīng)的版本表中,并記錄所述編輯任務(wù)對(duì)應(yīng)的版本編號(hào)以及所述編輯操作對(duì)應(yīng)的編輯標(biāo)識(shí)。在編輯態(tài)下對(duì)基版表進(jìn)行編輯時(shí),不直接在基版表上進(jìn)行修改,而是將被編輯的數(shù)據(jù)記錄到與基版表一一對(duì)應(yīng)的版本表中,此時(shí),普通用戶在運(yùn)行態(tài)下看不到實(shí)時(shí)編輯的結(jié)果。

S4:依據(jù)編輯操作的時(shí)間前后順序,將編輯操作與狀態(tài)編號(hào)序列中依次取出的序列值進(jìn)行關(guān)聯(lián),并將所述序列值寫入所述版本表中;所有的編輯任務(wù)都對(duì)應(yīng)一個(gè)狀態(tài)編號(hào)序列。

S5:將所述序列值以及被編輯的基版表編號(hào)進(jìn)行關(guān)聯(lián),并寫入版本變更表;即版本變更表記錄是表示狀態(tài)編號(hào)的序列值以及對(duì)應(yīng)的被編輯的基版表的編號(hào)。

S6:根據(jù)所述版本變更表,判斷一基版表是否發(fā)生變更,若是,執(zhí)行步驟S7。

S7:根據(jù)所述一基版表對(duì)應(yīng)的版本表,對(duì)應(yīng)更新所述一基版表。進(jìn)一步地,根據(jù)所述版本表中的編輯標(biāo)識(shí)字段(ADDFLAG)來進(jìn)行相應(yīng)的操作。

具體地,若所述一基版表對(duì)應(yīng)的版本表中一數(shù)據(jù)對(duì)應(yīng)的編輯標(biāo)識(shí)為預(yù)設(shè)的新增數(shù)據(jù)標(biāo)識(shí),則將所述一數(shù)據(jù)增加至所述一基版表中,并在所述一基版表中將對(duì)應(yīng)的版本編號(hào)置為預(yù)設(shè)的初始編號(hào),優(yōu)選地,預(yù)設(shè)的初始編號(hào)為0;

若所述一基版表對(duì)應(yīng)的版本表中一數(shù)據(jù)對(duì)應(yīng)的編輯標(biāo)識(shí)為預(yù)設(shè)的修改數(shù)據(jù)標(biāo)識(shí),則在所述一基版表中搜索到原來的所述一數(shù)據(jù),將所述版本表中編輯后的所述一數(shù)據(jù)同步至所述一基版表中,并在所述一基版表中將對(duì)應(yīng)的版本編號(hào)置為預(yù)設(shè)的初始編號(hào);

若所述一基版表對(duì)應(yīng)的版本表中一數(shù)據(jù)對(duì)應(yīng)的編輯標(biāo)識(shí)為預(yù)設(shè)的刪除基版數(shù)據(jù)標(biāo)識(shí),則所述一基版表中刪除所述一數(shù)據(jù);

若所述一基版表對(duì)應(yīng)的版本表中的一數(shù)據(jù)對(duì)應(yīng)的編輯標(biāo)識(shí)為預(yù)設(shè)的刪除新增數(shù)據(jù)標(biāo)識(shí),則不對(duì)所述一基版表進(jìn)行操作。

S8:同時(shí),將所述更新操作與狀態(tài)編號(hào)序列的下一序列值進(jìn)行關(guān)聯(lián),并將所述下一序列值寫入基版表中;即繼續(xù)按照順序從狀態(tài)編號(hào)序列中取出序列值,此時(shí),將更新操作當(dāng)做一個(gè)整體的編輯操作,因此只用一個(gè)序列值來作為狀態(tài)編號(hào)。

S9:將所述下一序列值以及更新的基版表編號(hào)進(jìn)行關(guān)聯(lián),并寫入基版變更表。

S10:發(fā)布所述一基版表。

S11:根據(jù)所述編輯操作更新所述基版表,并記錄所述編輯任務(wù)對(duì)應(yīng)的版本編號(hào)。在運(yùn)行態(tài)下對(duì)基版表進(jìn)行編輯時(shí),則不涉及版本表,而是直接更新基版表,普通用戶在運(yùn)行態(tài)下可以實(shí)時(shí)看到編輯結(jié)果。

S12:依據(jù)編輯操作的時(shí)間前后順序,將編輯操作與狀態(tài)編號(hào)序列中依次取出的序列值進(jìn)行關(guān)聯(lián),并將所述序列值寫入所述基版表中。

S13:將所述序列值以及被編輯的基版表編號(hào)進(jìn)行關(guān)聯(lián),并寫入基版變更表。

在步驟S3中,記錄編輯任務(wù)對(duì)應(yīng)的版本編號(hào),是為了防止沖突編輯,通過采用版本鎖定機(jī)制,保證基版表中的任意一條數(shù)據(jù)只能在一個(gè)編輯任務(wù)中進(jìn)行編輯。例如,若一個(gè)客戶端在版本編號(hào)為100的編輯任務(wù)中對(duì)一數(shù)據(jù)進(jìn)行編輯,另一客戶端若也要對(duì)該數(shù)據(jù)進(jìn)行編輯時(shí),需比較該數(shù)據(jù)對(duì)應(yīng)的版本編號(hào)與自身所執(zhí)行的編輯任務(wù)的版本編號(hào)是否一致,若一致,則允許編輯,若不一致,例如若另一客戶端所執(zhí)行的編輯任務(wù)的版本編號(hào)為200,則不能對(duì)該數(shù)據(jù)進(jìn)行編輯。

本實(shí)施例在進(jìn)行編輯操作時(shí),通過按序從狀態(tài)編號(hào)序列中取出序列值與編輯操作關(guān)聯(lián),由于狀態(tài)編號(hào)序列中的序列值是從小到大排序的,因此可直觀地表示出各個(gè)編輯操作的順序;通過設(shè)置版本變更表,可以通過序列值判斷基版表是否發(fā)生變更,還可通過與序列值對(duì)應(yīng)的基版表編號(hào)獲取發(fā)生變更的基版表,再根據(jù)版本表中記錄的變更信息,對(duì)應(yīng)更新基版表,從而實(shí)現(xiàn)多個(gè)客戶端基于不同的編輯任務(wù)對(duì)不同或相同的基版表進(jìn)行協(xié)同編輯。

實(shí)施例二

本實(shí)施例對(duì)實(shí)施例一中步驟S6的進(jìn)一步拓展。

如圖3所示,步驟S6具體包括:

S601:獲取版本變更表中最大的序列值。

S602:獲取所有基版表及版本表中最大的序列值;即獲取內(nèi)存中所有基版表及其對(duì)應(yīng)的版本表中最大的序列值。

S603:判斷兩個(gè)所述最大的序列值是否一致,若是,則表示沒有對(duì)任意一個(gè)基版表進(jìn)行編輯,若否,則表示有對(duì)基版表進(jìn)行編輯,執(zhí)行步驟S604。

S604:根據(jù)版本變更表,獲取在兩個(gè)所述最大的序列值之間的序列值對(duì)應(yīng)的基版表編號(hào)。

S605:判斷所述對(duì)應(yīng)的基版表編號(hào)是否包含所述一基版表編號(hào),若是,執(zhí)行步驟S606。

S606:判定所述一基版表發(fā)生變更。

由于序列值代表的編輯操作的時(shí)間前后順序,因此可以根據(jù)序列值判定出基版表是否發(fā)生變更,然后根據(jù)版本變更表記錄的被編輯的基版表編號(hào)得知具體是對(duì)哪幾個(gè)基版表進(jìn)行了編輯。更新時(shí),只對(duì)兩個(gè)最大的序列值之間的序列值所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行更新。

可選地,可在發(fā)布時(shí)對(duì)整體編輯的數(shù)據(jù)進(jìn)行更新,也可在發(fā)布前對(duì)編輯態(tài)中的基版表進(jìn)行實(shí)時(shí)更新,此時(shí),可根據(jù)預(yù)設(shè)的周期定時(shí)掃描基版變更表和版本變更表,獲取兩個(gè)表中最大的序列值,然后與上一周期獲取的最大序列值進(jìn)行比較,若不一致,則表明發(fā)生了變更,以兩個(gè)所述最大的序列值的區(qū)間作為查詢條件,查詢基版變更表或版本變更表,查找到該周期中有被編輯的基版表,然后根據(jù)其對(duì)應(yīng)的版本表進(jìn)行相應(yīng)更新。

實(shí)施例三

本實(shí)施例是上述實(shí)施例的進(jìn)一步拓展。

在步驟S1或S2之前,將電網(wǎng)設(shè)備的基版表及其對(duì)應(yīng)的版本表載入內(nèi)存,并映射為內(nèi)存對(duì)象組織管理,即將電網(wǎng)基版與版本空間數(shù)據(jù)載入內(nèi)存,并采用相應(yīng)的數(shù)據(jù)結(jié)構(gòu)封裝空間數(shù)據(jù)庫數(shù)據(jù),空間數(shù)據(jù)包括點(diǎn)、線、面與注記等,利用面向?qū)ο笤O(shè)計(jì)思想形成數(shù)據(jù)抽象類型,對(duì)數(shù)據(jù)進(jìn)行封裝,同時(shí)對(duì)空間表采用相應(yīng)數(shù)據(jù)結(jié)構(gòu)封裝,主要管理空間記錄對(duì)象、對(duì)象索引以及提供數(shù)據(jù)讀寫操作。

在進(jìn)行編輯時(shí),后端通過服務(wù)方式集中管理空間數(shù)據(jù),采用版本穿透機(jī)制,即在編輯任務(wù)中可以相互實(shí)時(shí)看到其他任務(wù)的編輯結(jié)果,實(shí)現(xiàn)多個(gè)任務(wù)“一張網(wǎng)”式管理。版本穿透機(jī)制主要通過多個(gè)版本數(shù)據(jù)與基版數(shù)據(jù)相互疊加實(shí)現(xiàn)。

當(dāng)進(jìn)行更新時(shí),采用數(shù)據(jù)實(shí)時(shí)更新技術(shù),通過定期掃描基版變更表與版本變更表以增量的方式實(shí)時(shí)讀取數(shù)據(jù)并將增量數(shù)據(jù)載入內(nèi)存,用于實(shí)時(shí)更新內(nèi)存數(shù)據(jù),體現(xiàn)客戶端訪問的數(shù)據(jù)一致性。通過增量數(shù)據(jù)實(shí)時(shí)更新技術(shù)與版本管理技術(shù)實(shí)現(xiàn)多任務(wù)版本數(shù)據(jù)發(fā)布管理。

進(jìn)一步地,還采用了版本緩存自動(dòng)維護(hù)機(jī)制,即在步驟S6之后,刪除所述對(duì)應(yīng)的版本表中的所述一數(shù)據(jù)。具體地,版本數(shù)據(jù)發(fā)布時(shí),柵格服務(wù)能夠自動(dòng)清理版本緩存數(shù)據(jù),在版本表中的數(shù)據(jù)寫入基版表后,基版表中的數(shù)據(jù)發(fā)生變更,引發(fā)基版表更新,若基版表中的數(shù)據(jù)對(duì)應(yīng)的版本編號(hào)(VERSIONID)為0,柵格服務(wù)會(huì)自動(dòng)在版本緩存中根據(jù)基版表中的數(shù)據(jù)ID查找對(duì)應(yīng)的版本數(shù)據(jù),如果找到,則刪除。版本數(shù)據(jù)發(fā)布后,基版表數(shù)據(jù)發(fā)生變更,實(shí)時(shí)掃描基表變更表,將實(shí)施例二中兩個(gè)最大的序列值之間的增量數(shù)據(jù)同步到基版緩存中,在更新基版數(shù)據(jù)時(shí),判斷數(shù)據(jù)對(duì)應(yīng)的VERSIONID是否為0,若VERSIONID為0,則在對(duì)應(yīng)版本緩存中查找記錄,若能根據(jù)數(shù)據(jù)ID找到對(duì)應(yīng)版本記錄,則在版本緩存中刪除,采用這種方法可以準(zhǔn)確實(shí)現(xiàn)版本發(fā)布后,已發(fā)布的版本記錄能夠及時(shí)從版本緩存中刪除。

實(shí)施例四

本實(shí)施例是上述實(shí)施例的一具體應(yīng)用場(chǎng)景。本實(shí)施例以在編輯態(tài)下進(jìn)行編輯為例。

表1和表2分別定義了基版表結(jié)構(gòu)和版本表結(jié)構(gòu);其中對(duì)版本表的編輯標(biāo)識(shí)字段ADDFLAG設(shè)置了默認(rèn)參數(shù)。

表1

表2

假設(shè)編號(hào)10247為基版表POLE如表3所示,該表原始狀態(tài)有6條記錄,在未對(duì)其進(jìn)行編輯前,其對(duì)應(yīng)的版本表POLE_VER如表4所示。

表3

表4

假設(shè)A與B客戶端分別創(chuàng)建并打開版本編號(hào)為VERSIONID=100與VERSIONID=200的編輯任務(wù),在A與B打開新建任務(wù)且在編輯之前,A與B看到的圖形均為運(yùn)行態(tài)數(shù)據(jù),也就是基版數(shù)據(jù)。A與B均編輯基版表POLE,假設(shè)A新增記錄ID=7,B用戶新增記錄ID=8與9兩條記錄,則在版本表中插入3條記錄,如表5所示;由于版本表數(shù)據(jù)發(fā)生變化,版本變更表新增3條記錄,如表6所示。

表5

表6

A與B客戶端通過訪問后端柵格化服務(wù)實(shí)時(shí)出圖,根據(jù)版本穿透機(jī)制,A在版本編號(hào)為200的任務(wù)中不僅可以看到自己新增的ID為7的設(shè)備,還可以實(shí)時(shí)看到B在版本編號(hào)為300的任務(wù)中新增的ID為8與9的設(shè)備,同時(shí)B也可以在自己的任務(wù)中看到A新增的ID為7的設(shè)備。

之后,A修改ID=5的數(shù)據(jù),將Fld1改為Fld11,B修改ID=6的數(shù)據(jù),將Fld2改為Fld22,此時(shí)的基版表如表7所示,版本表如表8所示,版本變更表如表9所示。且由于基版表中ID=5和ID=6的數(shù)據(jù)已分別被VERSIONID=100與VERSIONID=200的任務(wù)鎖定,因此不能被其他任務(wù)編輯。

表7

表8

表9

版本數(shù)據(jù)發(fā)生變更,實(shí)時(shí)掃描版本變更表,將增量數(shù)據(jù)載入版本緩存中,此時(shí)A與B可以實(shí)時(shí)相互看到各自修改后的效果。

之后,A刪除ID=1的數(shù)據(jù),B刪除ID=2的數(shù)據(jù),此時(shí)的基版表如表10所示,版本表如表11所示,版本變更表如表12所示。由于是刪除基版數(shù)據(jù),因此將ADDFLAG設(shè)為3。

表10

表11

表12

版本數(shù)據(jù)發(fā)生變更,實(shí)時(shí)掃描版本變更表,將增量數(shù)據(jù)載入版本緩存中,此時(shí)A與B可以實(shí)時(shí)相互看到各自刪除后的效果。

若為刪除新增數(shù)據(jù)的情況,例如A刪除ID=7的數(shù)據(jù),B刪除ID=8的數(shù)據(jù),此時(shí)的版本表如表13所示,版本變更表如表14所示。由于是刪除新增數(shù)據(jù),因此修改狀態(tài)編號(hào),并將ADDFLAG更新為4。

表13

表14

版本數(shù)據(jù)發(fā)生變更,實(shí)時(shí)掃描版本變更表,將增量數(shù)據(jù)載入版本緩存中,此時(shí)讀取到的增量數(shù)據(jù)為ID=7與ID=8,數(shù)據(jù)更新模塊將增量數(shù)據(jù)映射為內(nèi)存對(duì)象存儲(chǔ)在對(duì)應(yīng)的版本緩存中,在出圖展示場(chǎng)景下,通過判斷內(nèi)存對(duì)象的ADDFLAG標(biāo)記來確定該設(shè)備是否需要展示。A與B漫游后,可以實(shí)時(shí)在線看到雙方編輯后的效果,A任務(wù)與B任務(wù)中均看不到ID=7與ID=8的記錄。

任務(wù)編輯完畢之后,即可以進(jìn)行版本發(fā)布,版本發(fā)布的主要方法是通過判斷版本表中的ADDFLAG進(jìn)行相應(yīng)的操作:

如果版本記錄ADDFLAG=1,則將版本記錄以拷貝的方式在基版表中新增一條記錄,且將VERSIONID置為0。

如果版本記錄ADDFLAG=2,且能根據(jù)ID在基版表中找到記錄,則以版本記錄更新同步到基版表,且將VERSIONID置為0。

如果版本記錄ADDFLAG=3,且能根據(jù)ID在基版表中找到記錄,則刪除基版表對(duì)應(yīng)的記錄。

將版本記錄處理完畢之后,最后刪除版本表中已發(fā)布的記錄。

A發(fā)布VERSIONID=200的任務(wù),B發(fā)布VERSIONID=300的任務(wù),發(fā)布完畢后,基版表如表15所示,基版變更表如表16所示,版本表如表17所示。

表15

表16

表17

A與B在運(yùn)行態(tài)下漫游,均能夠?qū)崟r(shí)看到相互發(fā)布后的圖形數(shù)據(jù)。

綜上所述,本發(fā)明提供的一種電網(wǎng)多任務(wù)在線協(xié)同編輯方法,在進(jìn)行編輯操作時(shí),通過按序從狀態(tài)編號(hào)序列中取出序列值與編輯操作關(guān)聯(lián),由于狀態(tài)編號(hào)序列中的序列值是從小到大排序的,因此可直觀地表示出各個(gè)編輯操作的順序;通過設(shè)置版本變更表,可以通過序列值判斷基版表是否發(fā)生變更,還可通過與序列值對(duì)應(yīng)的基版表編號(hào)獲取發(fā)生變更的基版表,再根據(jù)版本表中記錄的變更信息,對(duì)應(yīng)更新基版表,從而實(shí)現(xiàn)多個(gè)客戶端基于不同的編輯任務(wù)對(duì)不同或相同的基版表進(jìn)行協(xié)同編輯。

以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等同變換,或直接或間接運(yùn)用在相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1