当前位置: 首页 > 专利查询>武汉大学专利>正文

一种基于操作转换的文本编辑实时协同方法技术

技术编号:10489846 阅读:201 留言:0更新日期:2014-10-03 17:52
本发明专利技术提出了一种基于操作转换的文本编辑实时协同方法,本发明专利技术首先通过产生的本地操作发送到其他站点,然后通过因果接受找出与该操作具有并发关系的操作;对其进行转换得到该操作在该站点的执行形式,并将该操作加入到执行队列,完成协同编辑;本发明专利技术能够支持在网络环境下多用户实时对同一文本进行协同编辑;本发明专利技术能够支持实时协同编辑工作,即所有的用户最终得到一致的结果的,并且结果是用户想要的;本发明专利技术应用到实时协同编辑中不需要全序控制;不仅能够做到结果一致,而且能够保证意图维护。

【技术实现步骤摘要】
一种基于操作转换的文本编辑实时协同方法
本专利技术涉及计算机支持的协同领域,尤其涉及一种基于操作转换的文本编辑实时协同方法。
技术介绍
公知,协同编辑是计算机支持的协同工作中的一个重要应用领域。协同编辑作为一种分布式系统,允许地理位置上分散的用户共同编辑同一对象。为了实现实时协同编辑,每个站点都复制了一个相同的对象,以便达到最短的操作响应时间。然而在网络环境下,不同用户的操作必然会发生冲突,并发控制方法就是为了解决高并发情况下的冲突事件能够无冲突的执行,达成共同的目标。目前实时协同编辑工作中并发控制策略的主要使用的是操作转换(OperationalTransformatiopn,OT)的方法。OT是一种乐观的并发控制方法,允许冲突的发生,通过把操作转换成另一种执行形式得到一致的结果。具体来说,对本地操作立即执行,因此能够很好的满足实时性的要求;对接收到的远程操作,首先要将该操作对已执行的并发操作进行转换,然后才执行转换的结果。OT能够确保即使在不同站点执行的操作顺序不同,最终也能得到一致的结果。OT从协同编辑系统中抽象出两个元操作(插入操作,删除操作),并且认为操作的对象是线性排列结构。最初提出的OT算法被应用于协同文本编辑,即操作的对象是文本对象(字符)。实际上,由于OT转换的是操作对象的位置,OT可以支持任何线性排列的复杂对象。本专利技术提出的OT算法同样可以适用于其他复杂对象的协同。OT算法通常包含操作转换函数和控制过程。操作转换函数负责定义操作之间如何转换,控制过程主要负责定义某个该操作与哪些操作进行转换。基于Lamport定义的“happened-before”[1]理论定义操作之间的先后关系:定义1因果关系给定任意两个分别位于站点i和站点j上的操作OPa和OPb,称OPa和OPb存在因果关系(记作OPa→OPb),当且仅当OPa和OPb满足下列三个条件之一:(1)i=j并且操作OPa发生在OPb之前;(2)i≠j并且操作OPa在站点j的执行先于操作OPb的产生;(3)存在操作OPx,并且有OPa→OPx和OPx→OPb。定义2并发关系给定任意两个操作OPa和OPb,称OPa和OPb存在并发关系(记做OPa||OPb),当且仅当OPa和OPb既不满足OPa→OPb,又不满足OPb→OPa。OT的一致性模型要求能够保持操作之间的因果关系,结果的一致性以及意图保持。实际情况下,大多数OT算法利用控制过程对操作施加全序达到唯一的转换路径,从而实现结果一致,但是这种方法未能考虑操作之间的位置关系,并不能保证实现意图保持。图2描述了全序OT算法不能实现意图保持的实例。当出现Ins(p+1,c)操作,对并发的操作序列{Del(p),Ins(p)}进行转换的时候会出现两种结果,因此这是一种潜在的导致结果不一致和违背用户意图的因素。为了克服上述现有技术的不足,本专利技术提供了一种基于操作转换的文本编辑实时协同方法,能够实现结果一致和意图保持。其中,意图保持遵守Lidu[2]提出的保持操作之间的位置关系。参考文献:[1]LamportLeslie.Time,clocks,andtheorderingofeventsinadistributedsystem.CommunicationofACM,1978,21(7):558-565.[2]LiDu,LiRui.Anadmissibility-basedoperationaltransformationframeworkforcollaborativeeditingsystems.ComputerSupportedCooperativeWork(CSCW),2010,19(1):1-43.
技术实现思路
本专利技术的技术方案是:一种基于操作转换的文本编辑实时协同方法,包括如下步骤:所述协同编辑系统中的每个站点都包括接受队列,等待队列,执行队列;步骤1:每个站点产生的操作在该站点立即执行,并将该操作加入执行队列,同时将该操作发送到其他站点;步骤2:每个站点接收到的远程操作加入到接收队列,当该远程操作的所有因操作已经被加入到执行队列,进入步骤3,否则,将该操作加入到等待队列中;步骤3:每个站点根据操作规则在执行队列中找出与该操作具有并发关系的操作;步骤4:将找出的并发操作进行转换得到该操作在该站点的执行形式;步骤5:执行转换后的操作并将该操作加入到执行队列;步骤6:完成协同编辑。所述的找出与该操作具有并发关系的操作的规则为:包含转换用IT表示,排斥转换用ET表示;对于任何一个操作o,o.t表示操作的类型:插入记为Ins、删除记为Del,o.c表示操作的作用字符,o.p表示操作的位置,o.id表示产生该操作的站点标识,o.dn表示与之转换的删除操作位置小于o.p的操作数量;操作的包含转换或者排斥转换只会改变o.p的值,其他属性保持不变;每个站点维护一个字典Dic,用于查询o1在对o2进行包含转换IT(o1,o2)之前的位置,其中o1为插入操作,o2为删除操作,字典的关键字为<index1,index2>的二元组,值为o1在对o2进行包含转换之前的p;index1为操作o1在执行队列中的位置,index2为操作o2在执行队列中的位置;当o1.t=Ins,o2.t=Ins;如果o1.p<o2.p,则IT(o1,o2)=Ins(p1,c1,id1,dn1);如果o1.p=o2.p并且o1.dn<o2.dn,则IT(o1,o2)=Ins(p1,c1,id1,dn1);如果o1.p=o2.p并且o1.dn=o2.dn和o1.id<o2.id,则IT(o1,o2)=Ins(p1,c1,id1,dn1);如果o1.p>o2.p,则IT(o1,o2)=Ins(p1+1,c1,id1,dn1);如果o1.p=o2.p并且o1.dn>o2.dn,则IT(o1,o2)=Ins(p1+1,c1,id1,dn1);如果o1.p=o2.p并且o1.dn=o2.dn和o1.id>o2.id,则IT(o1,o2)=Ins(p1+1,c1,id1,dn1);当o1.t=Ins,o2.t=Del;如果o1.p≤o2.p,则IT(o1,o2)=Ins(p1,c1,id1,dn1);如果o1.p>o2.p,则IT(o1,o2)=Ins(p1-1,c1,id1,dn1+1);Dic<index1,index2>=o1.p;当o1.t=Del,o2.t=Ins;如果o1.p<o2.p,则IT(o1,o2)=Del(p1);如果o1.p≥o2.p,则IT(o1,o2)=Del(p1+1);当o1.t=Del,o2.t=Del;如果o1.p<o2.p,则IT(o1,o2)=Del(p1);如果o1.p>o2.p,则IT(o1,o2)=Del(p1-1);如果o1.p=o2.p,则IT(o1,o2)=Nop;其中Nop表示空操作;当o1.t=Ins,o2.t=Ins;如果o1.p≤o2.p,则ET(o1,o2)=Ins(p1,c1,id1,dn1);如果o1.p=o2.p,则ET(o1,o2)=Ins(p1-1,c1,id1,dn1);当o1本文档来自技高网
...
一种基于操作转换的文本编辑实时协同方法

【技术保护点】
一种基于操作转换的文本编辑实时协同方法,其特征在于:包括如下步骤:所述协同编辑系统中的每个站点都包括接受队列,等待队列,执行队列;步骤1:每个站点产生的操作在该站点立即执行,并将该操作加入执行队列,同时将该操作发送到其他站点;步骤2:每个站点接收到的远程操作加入到接收队列,当该远程操作的所有因操作已经被加入到执行队列,进入步骤3,否则,将该操作加入到等待队列中;步骤3:每个站点根据操作规则在执行队列中找出与该操作具有并发关系的操作;步骤4:将找出的并发操作进行转换得到该操作在该站点的执行形式;步骤5:执行转换后的操作并将该操作加入到执行队列;步骤6:完成协同编辑。

【技术特征摘要】
1.一种基于操作转换的文本编辑实时协同方法,其特征在于:包括如下步骤:所述协同编辑系统中的每个站点都包括接受队列,等待队列,执行队列;步骤1:每个站点产生的操作在该站点立即执行,并将该操作加入执行队列,同时将该操作发送到其他站点;步骤2:每个站点接收到的远程操作加入到接收队列,当该远程操作的所有因操作已经被加入到执行队列,进入步骤3,否则,将该操作加入到等待队列中;步骤3:每个站点根据操作规则在执行队列中找出与该操作具有并发关系的操作;步骤4:将找出的并发操作进行转换得到该操作在该站点的执行形式;步骤5:执行转换后的操作并将该操作加入到执行队列;步骤6:完成协同编辑;所述的找出与该操作具有并发关系的操作的规则为:包含转换用IT表示,排斥转换用ET表示;对于任何一个操作o,o.t表示操作的类型:插入记为Ins、删除记为Del,o.c表示操作的作用字符,o.p表示操作的位置,o.id表示产生该操作的站点标识,o.dn表示与之转换的删除操作位置小于p的数目;操作的包含转换或者排斥转换只会改变o.p的值,其他属性保持不变;每个站点维护一个字典Dic,用于查询o1在对o2进行包含转换IT(o1,o2)之前的位置,其中o1为插入操作,o2为删除操作,字典的关键字为<idnex1,idnex2>的二元组,值为o1在对o2进行包含转换之前的p;idnex1为操作o1在执行队列中的位置,idnex2为操作o2在执行队列中的位置;1.当o1.t=Ins,o2.t=Ins;如果o1.p<o2.p,则IT(o1,o2)=Ins(p1,c1,id1,dn1);如果o1.p=o2.p并且o1.dn<o2.dn,则IT(o1,o2)=Ins(p1,c1,id1,dn1);如果o1.p=o2.p并且o1.dn=o2.dn和o1.id<o2.id,则IT(o1,o2)=Ins(p1,c1,id1,dn1);如果o1.p>o2.p,则IT(o1,o2)=Ins(p1+1,c1,id1,dn1);如果o1.p=o2.p并且o1.dn>o2.dn,则IT(o1,o2)=Ins(p1+1,c1,id1,dn1);如果o1.p=o2.p并且o1.dn=o2.dn和o1.id>o2.id,则IT(o1,o2)=Ins(p1+1,c1,id1,dn1);2.当o1.t=Ins,o2.t=Del;如果o1.p≤o2.p,则IT(o1,o2)=Ins(p1,c1,id1,dn1);如果o1.p>o2.p,则IT(o1,o2)=Ins(p1-1,c1,id1,dn1+1);Dic<index1,index2>=o1.p;3.当o1.t=Del,o2.t=Ins;如果o1.p<o2.p,则IT(o1,o2)=Del(p1);如果o1.p≥o2.p,则IT(o1,o2)=Del(p1+1);4.当o1.t=Del,o2.t=Del;如果o1.p<o2.p,则IT(o1,o2)=Del(p1);如果o1.p>o2.p,则IT(o1,o2)=Del(p1-1);如果o1.p=o2.p,则IT(o1,o2)=Nop;其中Nop表示空操作;5.当o1.t=Ins,o2.t=Ins;如果o1.p≤o2.p,则ET(o1,o2)=Ins(p1,c1,id1,dn1);如果o1.p=o2.p,则ET(o1,o2)=Ins(p1-1,c1,id1,dn1);6.当o1.t=Ins,o2.t=Del;如果o1.p<o2.p,则ET(o1,o2)=Ins(p1,c1,id1,dn1);如果o1.p>o2.p,则ET(o1,o2)=Ins(p1’,c1,id1,dn1-1),p1’=Dic<index1,index2>;如果o1.p=o2.p,则p1’=Dic<index1,index2>;假如p1’>o2.p,则ET(o1,o2)=Ins(p1’,c1,id1,dn1-1);否则ET(o1,o2)=Ins(p1’,c1,id1,dn1);7.当o1.t=Del,o2.t=Ins;如果o1.p<o2.p,则ET(o1,o2)=Del(p1);如果o1.p>o2.p,则ET(o1,...

【专利技术属性】
技术研发人员:何发智蔡维纬吕晓
申请(专利权)人:武汉大学
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1