陳詩(shī)雨 熊才權(quán) 董奕
摘 要:操作意圖一致性控制是協(xié)同編輯的重要研究問(wèn)題。傳統(tǒng)的協(xié)同控制算法在操作意圖一致性和交互性上存在加鎖粒度大小難以把握、函數(shù)轉(zhuǎn)換結(jié)果與用戶意圖不一致、操作對(duì)象全局ID難以分配等局限性。為減少用戶協(xié)同工作中出現(xiàn)的操作意圖不一致現(xiàn)象,提高工作效率,提出一種基于WebSocket協(xié)議及隱藏/恢復(fù)機(jī)制的共享同步控制方法。該方法采用WebSocket技術(shù),通過(guò)集合類對(duì)編輯樣本和操作主體進(jìn)行共同控制,從而減小操作主體的等待時(shí)間,實(shí)現(xiàn)在靜默和動(dòng)態(tài)兩種情況下共享編輯樣本的一致性,不僅很好解決了用戶操作意圖一致性問(wèn)題,還能滿足用戶在協(xié)同過(guò)程中的交互需求,提高頁(yè)面質(zhì)量。
關(guān)鍵詞:WebSocket;操作意圖一致性;頁(yè)面質(zhì)量;共享同步控制方法(SSCM)
DOI:10. 11907/rjdk. 182139
中圖分類號(hào):TP301 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2019)005-0079-05
Abstract: Operation intention consistency control is an important research problem in collaborative editing. Traditional collaborative control algorithm has shortcomings in operating intention consistency and interaction, such as the difficulties to ensure the sizes of lock granularities, the inconsistency between function conversion results and users intentions and difficulties to allocate global operation ID. In order to reduce the user operation intent inconsistent phenomenon occurring in a collaborative work and improve the efficiency of users to work together, we put forward shared SSCM (Shared Synchronization Control Method) based on the WebSocket protocol and hide/recovery mechanism, the method uses the WebSocket technology, control the common edit samples and operating subject through the collection class, thus reduces the waiting time for operation main body, and realises the consistency of shared editing samples in silence and dynamic cases. This method can not only solve the problem of the consistency of user operation intention, but also can meet the user's interactive demand in the collaborative process and improve the quality of the page.
Key Words: WebSocket;operational intent consistency;page quality;shared synchronization control method (SSCM)
0 引言
協(xié)同編輯指在網(wǎng)絡(luò)環(huán)境下多人共同編輯一個(gè)文檔,集結(jié)群體智慧,使最終文檔滿足群體多數(shù)人員的意見(jiàn)要求,是計(jì)算機(jī)協(xié)同工作研究領(lǐng)域的典型應(yīng)用。協(xié)同工作要求很強(qiáng)的實(shí)時(shí)性,即用戶不用刷新頁(yè)面就能及時(shí)看到他人所作的修改。實(shí)時(shí)協(xié)同編輯需要解決的重點(diǎn)問(wèn)題是保證用戶操作意圖的一致性,即如何在較高的網(wǎng)絡(luò)延遲下盡可能多地維護(hù)用戶意圖?,F(xiàn)有的操作意圖一致性算法如OT(Operational Transformation)算法[1]、AST(Address SpaceTransformation)算法[2]、CRDT(Commutative Replicated Data Type)算法[3-6]等各具優(yōu)點(diǎn),但都存在局限性[3]。在OT算法中,本地操作可以立即執(zhí)行, 而遠(yuǎn)程操作需要結(jié)合本地歷史操作,進(jìn)行并發(fā)操作轉(zhuǎn)換后才能執(zhí)行。而設(shè)計(jì)一個(gè)有效的并發(fā)操作轉(zhuǎn)換函數(shù)面臨很大挑戰(zhàn),因而這種算法在實(shí)際應(yīng)用中存在一定的局限性[3]。AST(Address SpaceTransformation)算法通過(guò)文檔的地址空間回溯到操作產(chǎn)生時(shí)的狀態(tài),以此獲取操作的執(zhí)行位置。為保證回溯的正確性,必須保存上次運(yùn)算之后的求解路徑,而數(shù)據(jù)量過(guò)大數(shù)據(jù)庫(kù)就會(huì)產(chǎn)生超負(fù)現(xiàn)象。CRDT算法雖不需要保存操作歷史,且并發(fā)操作之間不需要進(jìn)行轉(zhuǎn)換,但當(dāng)操作主體很多時(shí),操作主體標(biāo)識(shí)可能不唯一,從而出現(xiàn)編輯沖突[3]。編輯鎖是解決編輯沖突最簡(jiǎn)單的方法,但傳統(tǒng)的協(xié)同編輯方法是對(duì)整篇文章加鎖,粒度過(guò)大,不能實(shí)現(xiàn)多人協(xié)作;毛啟容等[7]提出的樂(lè)觀鎖技術(shù)雖減小了加鎖粒度,但卻需要在加鎖時(shí)人為發(fā)起請(qǐng)求,請(qǐng)求同意后才允許編輯,效率很低。無(wú)論是對(duì)整篇文章加鎖還是樂(lè)觀鎖技術(shù),都是基于鎖或序列化的處理機(jī)制,著重于實(shí)現(xiàn)結(jié)果一致性卻無(wú)法滿足用戶在協(xié)同過(guò)程中對(duì)操作意圖的一致性需求。何發(fā)智等[5]對(duì)CRDT算法進(jìn)行了大量?jī)?yōu)化和改進(jìn),提出了一種支持對(duì)字符串操作的集成和選擇性撤銷算法,以緩解選擇性撤銷時(shí)出現(xiàn)的編輯沖突。LIU等[8]提出的DSGOT算法,雖然通過(guò)邏輯時(shí)鐘解決了操作之間的矛盾,可有效保證操作意圖一致性,但尚未在實(shí)際文本協(xié)同編輯系統(tǒng)中得到應(yīng)用。Sun等[9]提出的CCR方法,不僅提供了一種解決實(shí)時(shí)協(xié)同編輯系統(tǒng)沖突的方法,而且提供了一個(gè)支持部分沖突解決策略的框架。
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,基于Web的協(xié)同編輯應(yīng)用需求也越來(lái)越多。頁(yè)面質(zhì)量被認(rèn)為是協(xié)同編輯的結(jié)果,不同層次的沖突對(duì)頁(yè)面質(zhì)量的影響不同,且隨時(shí)間變化而變化[10]。Xiao等[11]提出的基于P2P的ORGA協(xié)同編輯方法可不依賴于操作用戶的終端數(shù)量,較好實(shí)現(xiàn)操作意圖的一致性,但P2P服務(wù)需要重復(fù)建立通道,導(dǎo)致網(wǎng)絡(luò)負(fù)載壓力較大,對(duì)頁(yè)面質(zhì)量也有所影響。目前基于Web的協(xié)同編輯技術(shù)大多采用WebSocket協(xié)議,如基于Web的實(shí)時(shí)協(xié)同圖形編輯系統(tǒng)CoWebDraw[12],通過(guò)WebSocket協(xié)議,實(shí)現(xiàn)了圖形的實(shí)時(shí)轉(zhuǎn)換且頁(yè)面質(zhì)量較高。
為滿足操作意圖一致性,提高頁(yè)面質(zhì)量,解決協(xié)同編輯在網(wǎng)絡(luò)環(huán)境下編輯沖突問(wèn)題,本文提出一種基于WebSocket協(xié)議及隱藏/恢復(fù)機(jī)制[13]的共享同步控制方法(SSCM),用于實(shí)現(xiàn)編輯樣本的編輯沖突問(wèn)題,以實(shí)現(xiàn)實(shí)時(shí)轉(zhuǎn)換目的。 WebSocket是一種雙向通信技術(shù),將該技術(shù)應(yīng)用到協(xié)同編輯的同步控制中有以下優(yōu)勢(shì):①可避免消息的被動(dòng)更新,提供容錯(cuò)功能[14];②可改善因操作轉(zhuǎn)換算法的不唯一和難以控制帶來(lái)的協(xié)同工作環(huán)境下的不穩(wěn)定問(wèn)題,提高用戶體驗(yàn)感[15];③可有效實(shí)現(xiàn)操作意圖一致性,緩解編輯沖突問(wèn)題,提高協(xié)同編輯效率。
1 共享同步控制方法
共享同步控制方法(Shared Synchronization Control Method,SSCM)主要用來(lái)解決操作主體間因合作和資源共享所帶來(lái)的沖突問(wèn)題。該方法首先通過(guò)文章預(yù)處理建立文章數(shù)據(jù)庫(kù),然后利用集合類建立在線用戶隊(duì)列和段落用戶隊(duì)列,以保證所有用戶的實(shí)時(shí)性,最后在Web環(huán)境下建立基于WebSocket服務(wù)端和客戶端之間的通道,實(shí)現(xiàn)編輯樣本的共享同步控制。在WebSocket過(guò)程控制環(huán)境下,SSCM包括對(duì)文章的控制和對(duì)用戶的控制。對(duì)文章的控制包括文章的預(yù)處理以及文章的分段同步,對(duì)用戶的控制包括用戶編輯任務(wù)排隊(duì)及多段落互斥訪問(wèn)控制。SSCM可有效縮小由于隊(duì)列等待引起的時(shí)間差,大大提升協(xié)同編輯效率。
1.1 文章預(yù)處理
文章預(yù)處理的主要工作是對(duì)文章進(jìn)行分段,建立段落庫(kù)。為解決操作意圖的一致性,編輯樣本以段為節(jié)點(diǎn),將操作記錄與節(jié)點(diǎn)進(jìn)行綁定,同時(shí)利用隱藏/恢復(fù)機(jī)制實(shí)現(xiàn)編輯樣本的一致性。首先根據(jù)上傳文件及相關(guān)文件操作獲取文章信息,再根據(jù)相關(guān)算法建立整體段落庫(kù),同時(shí)標(biāo)識(shí)每個(gè)段落的ID。方法描述如下:
輸入 文章名(擴(kuò)展名為doc)
輸出 段落集paraList
Begin
新建編輯樣本輸入流命名in,構(gòu)建HWPFDocument類對(duì)象doc;
定義length,表示文章字?jǐn)?shù);
定義paraList存儲(chǔ)自然段的鏈表;
定義paracont 自然段內(nèi)容;
FOR i 0 to length-1 by 1 do //當(dāng)定義變量i小于文章總字?jǐn)?shù)時(shí)進(jìn)入該循環(huán)
Range(i,i+1,doc);//定義讀取范圍
CharacterRun cr = range.getCharacterRun(0); //定義掃描字符變量cr,range表示掃描范圍
char c; //用于獲取下一個(gè)讀取的字符;
IF c為換行符
paracont+”
”;
將paracont插入paraList以更新自然段鏈表paraList;
清空paracont ;
ENDIF
END
返回整合后的paraList;
END
預(yù)處理的基本思想:在含有n個(gè)編輯段落的編輯樣本中,通過(guò)現(xiàn)有HWPFDocument類(處理doc文檔)、XWPFDocument類(處理docx文檔)對(duì)編輯樣本進(jìn)行掃描分段,并將段落內(nèi)容插入鏈表內(nèi),完成每個(gè)段落的ID標(biāo)識(shí)。
1.2 基于TCP的Websocket共享同步控制
基于Websocket共享同步控制操作的主要對(duì)象由客戶端和服務(wù)端構(gòu)成,圖1為協(xié)同控制原理。
1.2.1 共享同步
Map集合類用于存儲(chǔ)鍵值對(duì),其中每個(gè)鍵唯一映射一個(gè)值。實(shí)現(xiàn)共享同步主要依賴兩個(gè)不同的Map數(shù)據(jù)結(jié)構(gòu),分別命名為PassageMap和OnEditMap以示區(qū)別,結(jié)合Map集合類和WebSocket技術(shù)以實(shí)現(xiàn)操作意圖的一致性。
定義1 在線編輯用戶隊(duì)列。PassageMap將所有編輯樣本與樣本段落隊(duì)列聯(lián)系起來(lái),實(shí)現(xiàn)從編輯樣本ID到段落隊(duì)列的映射。每個(gè)段落隊(duì)列對(duì)應(yīng)一個(gè)在線編輯用戶隊(duì)列,以表示每個(gè)段落對(duì)應(yīng)的所有編輯用戶,其結(jié)構(gòu)為:
[PassageMap::{Map
定義2 正在編輯用戶表。OnEditMap實(shí)現(xiàn)從編輯樣本ID到正在編輯文章的映射。每個(gè)在線編輯用戶隊(duì)列的第一用戶進(jìn)入正在編輯用戶表,以表示當(dāng)前正在對(duì)樣本進(jìn)行所有用戶的編輯,其結(jié)構(gòu)為:
[OnEditMap::{Integer,List}]
如果各進(jìn)程互斥地訪問(wèn)同一資源,這一資源便稱為臨界資源。將編輯樣本中的每一段都看作一個(gè)臨界資源,則協(xié)同工作過(guò)程可視為各用戶排隊(duì)對(duì)臨界資源進(jìn)行編輯,同時(shí)前一用戶的編輯結(jié)果會(huì)同步更新至所有在線編輯用戶界面上。
為理解同步控制過(guò)程的處理機(jī)制,這里定義3種狀態(tài):
定義3 就緒狀態(tài)。將處于PassageMap隊(duì)列中的用戶從第二個(gè)起至最后一個(gè)用戶的狀態(tài)稱為就緒狀態(tài)。
定義4 執(zhí)行狀態(tài)。將處于OnEditMap中正在編輯的用戶狀態(tài)稱為執(zhí)行狀態(tài)。
每個(gè)就緒隊(duì)列的第一個(gè)用戶加入OnEditMap,且每次都由該用戶對(duì)映射段落進(jìn)行加鎖,其余選擇編輯該段的用戶進(jìn)入就緒隊(duì)列處于就緒狀態(tài)。處于OnEditMap的用戶編輯完成或者超過(guò)邏輯時(shí)鐘后便退出OnEditMap,由后一處于就緒狀態(tài)的用戶加入OnEditMap,狀態(tài)由就緒狀態(tài)變?yōu)閳?zhí)行狀態(tài),過(guò)程中若有用戶申請(qǐng)編輯該段將排至就緒隊(duì)列隊(duì)尾,直到就緒隊(duì)列用戶全部退出,該段編輯結(jié)束。
定義5 等待狀態(tài)。為解決用戶持續(xù)占用導(dǎo)致其余用戶饑餓的情況,為每個(gè)OnEditMap中的用戶添加一個(gè)10min的邏輯時(shí)鐘(Clock),當(dāng)邏輯時(shí)鐘報(bào)警后該用戶被提醒并存入另一隊(duì)列,該隊(duì)列稱為等待隊(duì)列,處于該隊(duì)列中的用戶狀態(tài)稱為等待狀態(tài)。當(dāng)處于就緒隊(duì)列的第二個(gè)用戶未能在第一個(gè)用戶完成編輯后就進(jìn)入OnEditMap,亦被加入等待隊(duì)列進(jìn)入等待狀態(tài)。
幾種隊(duì)列狀態(tài)轉(zhuǎn)換如圖2所示。
當(dāng)隊(duì)列中所有用戶都在編輯其它段落時(shí),需等待排在最前面用戶一定時(shí)間后,將第一個(gè)用戶排至隊(duì)尾再等待下一個(gè)用戶,例如當(dāng)[(U1→fP1)∧(U2→wP1)∧(U2→wP1)∧?],即未找到[Ui∈(Uj→τPi),j∈{1,2,?,m},i∈{1,2,?,n}],那么等待[U2]一定時(shí)間后將[U2]排至隊(duì)尾,再等待[U3]一定時(shí)間,依次類推。對(duì)應(yīng)用戶都可在等待時(shí)間內(nèi)結(jié)束目前編輯任務(wù),例如正在編輯其它段落的[U2]可在等待時(shí)間內(nèi)結(jié)束正在編輯的段落。
用戶結(jié)束編輯后會(huì)從相應(yīng)段落的隊(duì)列中彈出,同時(shí)也會(huì)從正在編輯段落的用戶鏈表中移除,并將隊(duì)列中的下一位用戶插入正在編輯段落的用戶鏈表,從而在滿足協(xié)同工作一致性的基礎(chǔ)上提高協(xié)同效率。
1.2.2 操作意圖一致性控制
操作轉(zhuǎn)換的基本思想是本地操作立即執(zhí)行,遠(yuǎn)程操作經(jīng)過(guò)轉(zhuǎn)換之后再執(zhí)行,各個(gè)站點(diǎn)按照不同的順序執(zhí)行操作后獲得相同的結(jié)果[16]。但操作轉(zhuǎn)換算法的復(fù)雜度會(huì)直接影響到協(xié)同工作效率,本文對(duì)基于隱藏/恢復(fù)機(jī)制的操作轉(zhuǎn)換方法[13]進(jìn)行改進(jìn),同時(shí)引入WebSocket技術(shù),以避免因算法復(fù)雜度高而造成的協(xié)同效率低下問(wèn)題??蛻舳擞糜谏上?、控制測(cè)試和顯示結(jié)果,服務(wù)端則進(jìn)行處理和廣播。為此,創(chuàng)建客戶端界面用于承載編寫(xiě)的數(shù)據(jù),Websocket用于傳遞客戶端界面與服務(wù)器之間的數(shù)據(jù)[17],具體處理過(guò)程如下:
服務(wù)端:對(duì)節(jié)點(diǎn)進(jìn)行操作,將修改集成到HB(History Block)中并進(jìn)行廣播。
具體過(guò)程如下:①初始化段落標(biāo)記,[Flag[i]=0,][i∈{0,1,?,N};]②若標(biāo)記未置1,則標(biāo)記更改,[Flag[i]=1,][i∈{0,1,?,N}],段落進(jìn)入可編輯狀態(tài)(此時(shí)其他用戶處于就緒態(tài));③通過(guò)WebSocket技術(shù)對(duì)在線用戶進(jìn)行廣播;④編輯結(jié)束,標(biāo)記位置0,[Flag[i]=0,][i∈{0,1,?,N}],同時(shí)保存HB;⑤通過(guò)WebSocket技術(shù)對(duì)在線用戶進(jìn)行廣播;⑥下一用戶進(jìn)入執(zhí)行狀態(tài),重復(fù)步驟②—步驟⑥。
客戶端:對(duì)節(jié)點(diǎn)進(jìn)行操作,及時(shí)獲取WebSocket數(shù)據(jù),過(guò)程如下:①初始化狀態(tài):段落進(jìn)入可編輯狀態(tài);②對(duì)段落文字進(jìn)行修改;③向WebSocket發(fā)送HB消息,接收WebSocket的HB消息。
以下用圖形表示各站點(diǎn)和各節(jié)點(diǎn)的操作,圖6為同一篇共享文章中3個(gè)站點(diǎn)的交互過(guò)程,以站點(diǎn)2為例:
站點(diǎn)1發(fā)出操作O1/P1,即[U1→eP1],WebSocket廣播給各站點(diǎn),各站點(diǎn)幾乎在同一時(shí)間段內(nèi)接收到消息,此階段[P1]為臨界資源,站點(diǎn)2對(duì)[P2]進(jìn)行操作,即[U2→eP2]。同理,通過(guò)已建立好的WebSocket通道使其它站點(diǎn)接收到此操作。與此同時(shí),站點(diǎn)2可接收由站點(diǎn)1發(fā)來(lái)的對(duì)[P1]的操作消息,另外站點(diǎn)3發(fā)出[U3→eP1]操作不會(huì)對(duì)[U2→eP2]有任何影響。當(dāng)[(U3→fP1)∧(U2→fP2)],站點(diǎn)2上共享文章的顯示處理結(jié)果為{O1,O3,02}。同理,站點(diǎn)1和站點(diǎn)3的運(yùn)行歷史記錄HB={O1,O3,02}。
2 案例分析
為驗(yàn)證本文提出的共享同步控制方法(SSCM)的可行性和高效性,以SSCM為基礎(chǔ)設(shè)計(jì)了一個(gè)原型系統(tǒng),對(duì)本文提出的方法進(jìn)行測(cè)試。團(tuán)隊(duì)共7組學(xué)生參與協(xié)同工作,這7組學(xué)生可根據(jù)自己的偏好對(duì)編輯樣本進(jìn)行修改,并通過(guò)協(xié)商達(dá)成一致。實(shí)驗(yàn)用的編輯樣本為《團(tuán)隊(duì)簡(jiǎn)介》,編輯前樣本界面如圖7所示。
各站點(diǎn)操作為:
站點(diǎn)1:{添加,(“事跡得到新華社、人民網(wǎng)、新華網(wǎng)及中國(guó)青年報(bào)等多家主流媒體的報(bào)道”)};
站點(diǎn)2:{刪除,(“新華網(wǎng)”)};
站點(diǎn)3:{修改,(“得到”,“獲得”)};
站點(diǎn)2:{添加,(“深入引導(dǎo)青年學(xué)生踐行社會(huì)主義核心價(jià)值觀、增強(qiáng)青年學(xué)子對(duì)‘中國(guó)夢(mèng)的認(rèn)知、理解和實(shí)踐?!保﹠;
站點(diǎn)4:{修改,(“中國(guó)青年報(bào)”,“中青網(wǎng)”)}
各站點(diǎn)操作順序?yàn)椋涸赱T1]時(shí)間段內(nèi),[U1→eP3]、[U1→][T1,UQ3][{U1→(T1,UQ3)}];在[T2]時(shí)間段內(nèi),[U3,U2,U4][→T2,UQ3]的同時(shí)[U2→T2,UQ2]。
即在[T2]時(shí)間段內(nèi),[U2]、[U3]、[U4] 三個(gè)操作主體想要編輯第三段[P3],[(U3,U2,U4)→inUQ3]。與此同時(shí),操作主體[U2]想要編輯第二段[P2],[U2→inUQ2]。若按傳統(tǒng)的加鎖控制方法,則一個(gè)操作主體在一個(gè)時(shí)間段內(nèi)只能排在一個(gè)隊(duì)列里,即[U2]無(wú)法在[(U1→eP3)∧(U2→wP3)]時(shí)間段內(nèi)執(zhí)行操作[U2→eP2],操作效率會(huì)大大降低。但采用SSCM方法后,[U2]在[U2→wP3]時(shí)間段內(nèi)可直接執(zhí)行操作[U2→eP2],若此時(shí)[(U1→fP3)∧(U2→eP2)],則會(huì)對(duì)操作主體[U2]進(jìn)行提醒,若[U2]不放棄操作[U2→eP1],則[U3→eP3],反之[U2→eP3],即操作主體可在等待時(shí)間內(nèi)對(duì)另一段落進(jìn)行操作。利用此類處理機(jī)制,SSCM不僅可以保存操作主體對(duì)將要編輯樣本段落的操作,也可觸發(fā)操作主體想要編輯的樣本段落操作,從而實(shí)現(xiàn)協(xié)同工作的高效性。
在現(xiàn)有協(xié)同編輯中,若[T1]時(shí)間內(nèi)操作主體U1編輯完后,[U2]、[U3]、[U4]同時(shí)對(duì)某段進(jìn)行編輯會(huì)產(chǎn)生3個(gè)沖突點(diǎn)。即[U3]、[U4]無(wú)法看到[U2]編輯的結(jié)果、[U2]、[U4]無(wú)法看到[U3]編輯的結(jié)果,[U2]、[U3]無(wú)法看到[U4]編輯的結(jié)果。在這種搶占式控制下,無(wú)疑會(huì)擾亂操作主體的思考方向,不利于在動(dòng)態(tài)編輯中保持所有操作主體的操作意圖一致性。SSCM利用上述共享同步方法可很好地避免此類問(wèn)題出現(xiàn),以實(shí)現(xiàn)在靜默和動(dòng)態(tài)下共享編輯樣本的一致性,見(jiàn)圖8、圖9、圖10。
最終得到的一致性編輯樣本見(jiàn)圖10。
同時(shí)將多組實(shí)驗(yàn)數(shù)據(jù)與現(xiàn)有協(xié)同編輯在站點(diǎn)數(shù)、沖突數(shù)相同條件下進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果如表1所示。
從圖11可以看到,當(dāng)站點(diǎn)數(shù)相同時(shí),沖突數(shù)越大,SCCM方法處理的效果越好。
從以上結(jié)果分析可以看出,本文提出的共享同步控制方法(SSCM)具有較高的可行性和高效性。
3 結(jié)語(yǔ)
本文對(duì)協(xié)同工作中并發(fā)控制方法進(jìn)行了研究,提出了一種基于WebSocket協(xié)議及隱藏/恢復(fù)機(jī)制的共享同步控制方法(SSCM),并將協(xié)同編輯過(guò)程進(jìn)行了可視化展示,能夠較好地滿足協(xié)同過(guò)程中的因果、結(jié)果及操作意圖的一致性,同時(shí)有較強(qiáng)的交互性。該方法是在WebSocket基本原理和3種狀態(tài)間相互轉(zhuǎn)換前提下得到正在執(zhí)行的線性表,可保證不同段并發(fā)操作的獨(dú)立性。從另一個(gè)角度來(lái)說(shuō),客戶端上的顯示是通過(guò)服務(wù)端不斷廣播數(shù)據(jù)和SSCM方法中操作主體的隊(duì)列轉(zhuǎn)換,實(shí)現(xiàn)編輯樣本的實(shí)時(shí)把控和主觀評(píng)判,為進(jìn)一步的協(xié)同作業(yè)提供參考。利用WebSocket的優(yōu)點(diǎn)可以輕松解決客戶端和服務(wù)端之間通道重復(fù)建立問(wèn)題,使消息傳遞的速度提高,提升各操作主體間的交互性。另外, SSCM中操作主體可對(duì)編輯樣本進(jìn)行選擇操作,從而更好地集結(jié)協(xié)同工作用戶的群體智慧,促進(jìn)一致性達(dá)成,在采用全復(fù)制式體系結(jié)構(gòu)的基礎(chǔ)上實(shí)現(xiàn)一致性維護(hù),為協(xié)同工作用戶提供良好的響應(yīng)性。
本文方法存在一些不足:由于方法以段落為節(jié)點(diǎn),對(duì)于段間的操作存在一定的局限性。此外,由于集合本身的限制,使得部分用戶無(wú)法立刻對(duì)文章段落進(jìn)行操作,離協(xié)同的完全高效仍有一定距離,這是下一步研究的方向。
參考文獻(xiàn):
[1] SUN C, ELLIS C. Operational transformation in real-time group editors: issues, algorithms, and achievements[C]. Proceedings of the 1998 ACM conference on Computer supported cooperative work. Seattle,1998:59-68.
[2] GU N, YANG J, ZHANG Q. Consistency maintenance based on the mark retrace technique in groupware systems[C]. 2005 International ACM SIGGROUP Conference on Supporting Group Work, Sanibel Island,2005:264-273.
[3] 何發(fā)智,呂曉,蔡維緯,等. 支持操作意圖一致性的實(shí)時(shí)協(xié)同編輯算法綜述[J]. 計(jì)算機(jī)學(xué)報(bào),2017,41(4):1-28.
[4] MARTIN S,URSO P,WEISS S. Scalable xml collaborative editing with undo (short paper)[C]. 9th Confederated International Conferences on On the Move to Meaningful Internet Systems,2010: 507-514.
[5] LV X,HE F Z,CAI W W,et al. Supporting selective undo of string- wise operations for collaborative editing systems[J]. Futur Gener Comp Syst. 2018 May,82: 41-62.
[6] LV X, HE F, CAI W,et al. A string-wise crdt algorithm for smart and large-scale collaborative editing systems[J]. Advanced Engineering Informatics,2017(33): 397-409.
[7] 毛啟容,王進(jìn)峰,詹永照. 相對(duì)位置樂(lè)觀鎖機(jī)制及在協(xié)同編輯中的應(yīng)用[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2004,16(9):1307-1312.
[8] LIU J H,WEI G Y,WANG C. Research on concurrency control algorithm for real-time collaborative editing systems[J]. Journal of China Universities of Posts and Telecommunications,2014,21(SUPPL. 1): 6-11.
[9] SUN D, SUN C, XIA S,et al. Creative conflict resolution in realtime collaborative editing systems[C]. ACM 2012 Conference on Computer Supported Cooperative Work,2012: 1411-1420.
[10] QIU J, WANG C, CUI M. The influence of cognitive conflict on the result of collaborative editing in Wikipedia[J]. Behaviour & Information Technology,2014, 33(12): 1361-1370.
[11] LV X, LI Y, ANG C. An improved commutative replicated data type for peer to peer collaborative editing. 3rd International conference on machinery[C]. Materials and Information Technology Applications, 2015:390-395.