首页 / 专利库 / 人工智能 / 因果图 / 一种基于操作转换的文本编辑实时协同方法

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

阅读:1018发布:2020-09-18

专利汇可以提供一种基于操作转换的文本编辑实时协同方法专利检索,专利查询,专利分析的服务。并且本 发明 提出了一种基于操作转换的文本编辑实时协同方法,本发明首先通过产生的本地操作发送到其他 站点 ,然后通过因果接受找出与该操作具有并发关系的操作;对其进行转换得到该操作在该站点的执行形式,并将该操作加入到执行队列,完成协同编辑;本发明能够支持在网络环境下多用户实时对同一文本进行协同编辑;本发明能够支持实时协同编辑工作,即所有的用户最终得到一致的结果的,并且结果是用户想要的;本发明应用到实时协同编辑中不需要全序控制;不仅能够做到结果一致,而且能够保证意图维护。,下面是一种基于操作转换的文本编辑实时协同方法专利的具体信息内容。

1.一种基于操作转换的文本编辑实时协同方法,其特征在于:包括如下步骤:所述协同编辑系统中的每个站点都包括接受队列,等待队列,执行队列;
步骤1:每个站点产生的操作在该站点立即执行,并将该操作加入执行队列,同时将该操作发送到其他站点;
步骤2:每个站点接收到的远程操作加入到接收队列,当该远程操作的所有因操作已经被加入到执行队列,进入步骤3,否则,将该操作加入到等待队列中;
步骤3:每个站点根据操作规则在执行队列中找出与该操作具有并发关系的操作;
步骤4:将找出的并发操作进行转换得到该操作在该站点的执行形式;
步骤5:执行转换后的操作并将该操作加入到执行队列;
步骤6:完成协同编辑。
2.根据权利要求1所述的一种基于操作转换的文本编辑实时协同方法,其特征在于:
所述的找出与该操作具有并发关系的操作的规则为:
包含转换用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为删除操作,字典的关键字为的二元组,值为o1在对o2进行包含转换之前的p;idnex1为操作o1在执行队列中的位置,idnex2为操作o2在执行队列中的位置;
当o1.t=Ins,o2.t=Ins; 如 果o1.po2.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=o1.p;
当o1.t=Del,o2.t=Ins; 如果o1.p当o1.t=Del,o2.t=Del; 如果o1.po2.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.t=Ins,o2.t=Del; 如 果 o1.p如 果 o1.p>o2.p, 则 ET(o1,o2)=Ins(p1’,c1,id1,dn1-1),p1’=Dic; 如 果 o1.p=o2.p, 则 p1’=Dic; 假 如 p1’>o2.p, 则ET(o1,o2)=Ins(p1’,c1,id1,dn1-1);否则ET(o1,o2)=Ins(p1’,c1,id1,dn1);
当o1.t=Del,o2.t=Ins; 如果o1.p当o1.t=Del,o2.t=Del; 如果o1.p3.根据权利要求2所述的一种基于操作转换的文本编辑实时协同方法,其特征在于:
所述的步骤3中在执行队列中找出与该操作具有并发关系的操作包括如下步骤:
将站点历史记录划分成因操作序列caList,并发操作序列coList两部分;从左到右扫描历史记录H[k],k∈{0,1,.....L},L为H的长度,并且记录与操作o具有因果关系的操作的位置n, n初始为-1;如果操作o与H[k]是并发关系,则继续判断第k+1个操作;如果操作o与H[k]的操作是因果关系,则对第k到n+2的操作交换H[k]和H[k-1]的位置,然后将n加1;
3.1当k-n<3时,记o1=H[k],o2=H[k-1];根据o1=H[k],o2=H[k-1]的操作类型,按照转换规则5-8,调用ET(o1,o2)的到o1’,然后根据o2.t和o1.t的操作类型,按照转换规则
1-4,调用IT(o2,o1’)的到o2’;分别赋值H[k]=o2’,H[k-1]=o1’,实现了交换H[k],H[k-1],交换之后执行效果相同;
3.2当k-n≥3时,判断k-1到n+2的操作中是否存在{Ins(p,c),Del(p)}和
{Del(p),Ins(p,c)的连续序列;
如果不存在,则根据op1=H[k],op2=H[k-1]的操作类型,按照转换规则5-8,调用ET(op1,op2)的到op1’,然后根据op2.t和op1.t的操作类型,按照转换规则1-4,调用IT(op2,op1’)的到op2’;分别赋值H[k]=op2’,H[k-1]=op1’,实现交换H[k]和H[k-1]的执行顺序,交换之后执行的效果相同;将k减1,继续上面的判断;如果存在,则按照如下两种情况进行处理:
存在{Ins(p,c),Del(p)},其中H[k]=o1,H[k-1]=Ins(p,c,dn,id)=o2,H[k-2]=Del(p)=o3;查询Dic的值得到p1’,o1.p=p’;按照规则1调用IT(o3,o1)得到o3’,IT(o2,o1)=o2’;将三个操作的位置互换得到,H[k]=o3,H[k-1]=o2,H[k]=o1;
存在{Del(p),Ins(p,c)},其中H[k]=o1,H[k-1]=Ins(p,c,dn,id)=o2,H[k-2]=Del(p)=o3;如果o.p>o2.p,则o.dn加1;o.p≤o2.p,则o2.p加1,o1.p加1;将三个操作的位置互换得到,H[k]=o3,H[k-1]=o2,H[k]=o1。
4.根据权利要求3所述的一种基于操作转换的文本编辑实时协同方法,其特征在于:
所述的步骤5包括如下步骤:
5.1当L-k≤2时,记op1=H[k],k∈{n+1,....,L};根据op和op1的操作类型,按照转换规则1-4,调用IT(op,op1)得到op1’;将k加1,继续进行判断并调用IT进行转换;
5.2当 L-k>2时,判 断n+1 到L 的 操 作 中 是 否 存 在{Ins(p,c),Del(p)} 和{Del(p),Ins(p,c)的连续序列;
存在{Ins(p,c),Del(p)},其中op1=H[k]=Ins(p,c,dn,id),op2=H[k+1]==Del(p);如果op.p>op1.p,则将op.dn加1,然后返回op’=op;如果op.p≤op1.p,则返回op’=op;
存在{Del(p),Ins(p,c)},其中op1=H[k]=Del(p),op2=H[k+1]==Ins(p,c,dn,id);如果op.t=Ins,则将op.p存入Dic,其中index1等于L,index2为k;然后根据转换规则2调用IT(op,op1)得到op’,然后根据转换规则1调用IT(op’,op)得到op”;op”为操作op在该站点的执行形式;如果op.t=Del,op.p=op1.p,则操作op在该站点的执行形式为空操作, op.p不等于op1.p,则操作op为该站点的执行形式。

说明书全文

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

技术领域

[0001] 本发明涉及计算机支持的协同领域,尤其涉及一种基于操作转换的文本编辑实时协同方法。

背景技术

[0002] 公知,协同编辑是计算机支持的协同工作中的一个重要应用领域。协同编辑作为一种分布式系统,允许地理位置上分散的用户共同编辑同一对象。为了实现实时协同编辑,每个站点都复制了一个相同的对象,以便达到最短的操作响应时间。然而在网络环境下,不同用户的操作必然会发生冲突,并发控制方法就是为了解决高并发情况下的冲突事件能够无冲突的执行,达成共同的目标。
[0003] 目前实时协同编辑工作中并发控制策略的主要使用的是操作转换(Operational Transformatiopn,OT)的方法。OT是一种乐观的并发控制方法,允许冲突的发生,通过把操作转换成另一种执行形式得到一致的结果。具体来说,对本地操作立即执行,因此能够很好的满足实时性的要求;对接收到的远程操作,首先要将该操作对已执行的并发操作进行转换,然后才执行转换的结果。OT能够确保即使在不同站点执行的操作顺序不同,最终也能得到一致的结果。
[0004] OT从协同编辑系统中抽象出两个元操作(插入操作,删除操作),并且认为操作的对象是线性排列结构。最初提出的OT算法被应用于协同文本编辑,即操作的对象是文本对象(字符)。实际上,由于OT转换的是操作对象的位置,OT可以支持任何线性排列的复杂对象。本发明提出的OT算法同样可以适用于其他复杂对象的协同。
[0005] OT算法通常包含操作转换函数和控制过程。操作转换函数负责定义操作之间如何转换,控制过程主要负责定义某个该操作与哪些操作进行转换。
[0006] 基于Lamport定义的“happened-before”[1]理论定义操作之间的先后关系:
[0007] 定义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。
[0008] 定义2并发关系给定任意两个操作OPa和OPb,称OPa和OPb存在并发关系(记做OPa||OPb),当且仅当OPa和OPb既不满足OPa→OPb,又不满足OPb→OPa。
[0009] OT的一致性模型要求能够保持操作之间的因果关系,结果的一致性以及意图保持。实际情况下,大多数OT算法利用控制过程对操作施加全序达到唯一的转换路径,从而实现结果一致,但是这种方法未能考虑操作之间的位置关系,并不能保证实现意图保持。图2描述了全序OT算法不能实现意图保持的实例。
[0010] 当出现Ins(p+1,c)操作,对并发的操作序列{Del(p),Ins(p)}进行转换的时候会出现两种结果,因此这是一种潜在的导致结果不一致和违背用户意图的因素。为了克服上述现有技术的不足,本发明提供了一种基于操作转换的文本编辑实时协同方法,能够实现结果一致和意图保持。其中,意图保持遵守Lidu[2]提出的保持操作之间的位置关系。
[0011] 参考文献:
[0012] [1]Lamport Leslie.Time,clocks,and the ordering of events in a distributed system.Communication of ACM,1978,21(7):558-565.
[0013] [2]Li Du,Li Rui.An admissibility-based operational transformation framework for collaborative editing systems.Computer Supported Cooperative Work(CSCW),2010,19(1):1-43.

发明内容

[0014] 本发明的技术方案是:一种基于操作转换的文本编辑实时协同方法,包括如下步骤:所述协同编辑系统中的每个站点都包括接受队列,等待队列,执行队列;
[0015] 步骤1:每个站点产生的操作在该站点立即执行,并将该操作加入执行队列,同时将该操作发送到其他站点;
[0016] 步骤2:每个站点接收到的远程操作加入到接收队列,当该远程操作的所有因操作已经被加入到执行队列,进入步骤3,否则,将该操作加入到等待队列中;
[0017] 步骤3:每个站点根据操作规则在执行队列中找出与该操作具有并发关系的操作;
[0018] 步骤4:将找出的并发操作进行转换得到该操作在该站点的执行形式;
[0019] 步骤5:执行转换后的操作并将该操作加入到执行队列;
[0020] 步骤6:完成协同编辑。
[0021] 根据权利要求1所述的一种基于操作转换的文本编辑实时协同方法,其特征在于:所述的找出与该操作具有并发关系的操作的规则为:
[0022] 包含转换用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为删除操作,字典的关键字为的二元组,值为o1在对o2进行包含转换之前的p;index1为操作o1在执行队列中的位置,index2为操作o2在执行队列中的位置;
[0023] 当 o1.t = Ins,o2.t = Ins; 如 果 o1.po2.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);
[0024] 当 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=o1.p;
[0025] 当o1.t=Del,o2.t=Ins;如果o1.p
[0026] 当o1.t=Del,o2.t=Del;如果o1.po2.p,则IT(o1,o2)=Del(p1-1);如果o1.p=o2.p,则IT(o1,o2)=Nop;其中Nop表示空操作;
[0027] 当 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);
[0028] 当 o1.t = Ins,o2.t = Del; 如 果 o1.po2.p,则ET(o1,o2)=Ins(p1’,c1,id1,dn1-1),p1’=Dic,如果o1.p=o2.p,则p1’=Dic;假如p1’>o2.p,则ET(o1,o2)=Ins(p1’,c1,id1,dn1-1);否则ET(o1,o2)=Ins(p1’,c1,id1,dn1);
[0029] 当o1.t=Del,o2.t=Ins;如果o1.p
[0030] 当o1.t=Del,o2.t=Del;如果o1.p
[0031] 所述的步骤3中在执行队列中找出与该操作具有并发关系的操作包括如下步骤:
[0032] 将站点历史记录划分成因操作序列,并发操作序列两部分;从左到右扫描历史记录H[k],k∈{0,1,.....L},L为H的长度,并且记录与操作o具有因果关系的操作的位置ha,ha初始为-1;如果操作o与H[k]是并发关系,则继续判断第k+1个操作;如果操作o与H[k]的操作是因果关系,则对第k到n+2的操作交换H[k]和H[k-1]的位置,然后将ha加1;
[0033] 3.1当k-ha<3时,记o1=H[k],o2=H[k-1];根据o1=H[k],o2=H[k-1]的操作类型,按照转换规则5-8,调用ET(o1,o2)的到o1’,然后根据o2.t和o1.t的操作类型,按照转换规则1-4,调用IT(o2,o1’)的到o2’;分别赋值H[k]=o2’,H[k-1]=o1’,实现了交换H[k],H[k-1],交换之后执行效果相同;
[0034] 3.2当k-ha≥3时,判断k-1到n+2的操作中是否存在{Ins(p,c),Del(p)}和{Del(p),Ins(p,c)的连续序列;
[0035] 如果不存在,则根据op1=H[k],op2=H[k-1]的操作类型,按照转换规则5-8,调用ET(op1,op2)的到op1’,然后根据op2.t和op1.t的操作类型,按照转换规则1-4,调用IT(op2,op1’)的到op2’;分别赋值H[k]=op2’,H[k-1]=op1’,实现交换H[k]和H[k-1]的执行顺序,交换之后执行的效果相同;将k减1,继续上面的判断;如果存在,则按照如下两种情况进行处理:
[0036] 存 在 {Ins(p,c),Del(p)}, 其 中 H[k] = o1,H[k-1] = Ins(p,c,dn,id) =o2,H[k-2]=Del(p)=o3;查询Dic的值得到p1’,o1.p=p’;按照规则1调用IT(o3,o1)得到o3’,IT(o2,o1)=o2’;将三个操作的位置互换得到,H[k]=o3,H[k-1]=o2,H[k]=o1;
[0037] 存 在 {Del(p),Ins(p,c)},其 中 H[k] = o1,H[k-1] = Ins(p,c,dn,id) =o2,H[k-2]=Del(p)=o3;如果o.p>o2.p,则o.dn加1;o.p≤o2.p,则o2.p加1,o1.p加1;将三个操作的位置互换得到,H[k]=o3,H[k-1]=o2,H[k]=o1。
[0038] 根据权利要求4所述的一种基于操作转换的文本编辑实时协同方法,其特征在于:所述的步骤5包括如下步骤:
[0039] 5.1当L-k≤2时,记op1=H[k],k∈{ha+1,....,L};根据op和op1的操作类型,按照转换规则1-4,调用IT(op,op1)得到op1’;将k加1,继续进行判断并调用IT进行转换;
[0040] 5.2当L-k>2时,判断ha+1到L的操作中是否存在{Ins(p,c),Del(p)}和{Del(p),Ins(p,c)的连续序列;
[0041] 存在{Ins(p,c),Del(p)},其中op1=H[k]=Ins(p,c,dn,id),op2=H[k+1]==Del(p);如果op.p>op1.p,则将op.dn加1,然后返回op’=op;如果op.p≤op1.p,则返回op’=op;
[0042] 存 在{Del(p),Ins(p,c)}, 其 中op1 =H[k] =Del(p),op2 =H[k+1] = =Ins(p,c,dn,id);如果op.t=Ins,则将op.p存入Dic,其中index1等于L,index2为k;然后根据转换规则2调用IT(op,op1)得到op’,然后根据转换规则1调用IT(op’,op)得到op”;op”为操作op在该站点的执行形式;如果op.t=Del,op.p=op1.p,则操作op在该站点的执行形式为空操作,op.p不等于op1.p,则操作op为该站点的执行形式。
[0043] 本发明的有益效果是:本发明应用到实时协同编辑中不需要全序控制;不仅能够做到结果一致,而且能够保证意图维护。附图说明
[0044] 图1是本发明的流程图
[0045] 图2.1是本发明的合并包含转换示意图;
[0046] 图2.2是本发明的依次包含转换示意图;
[0047] 图3.1是本发明的合并后向转换示意图;
[0048] 图3.2是本发明的依次后向转换示意图。

具体实施方式

[0049] 对本发明的核心步骤作进一步详细的描述,但本发明的实施方式不限于此。
[0050] 首先,定义若干操作转换规则。其中包含转换用IT(Inclusive Transformation)表示,排斥转换用ET(Exclusive Transformation)表示。对于任何一个操作op,op.t表示操作的类型(插入记为Ins、删除记为Del),op.c表示操作的作用字符,op.p表示操作的位置,op.id表示产生该操作的站点标识,op.dn表示与之转换的删除操作位置小于op.p的数目。操作的包含转换或者排斥转换只会改变op.p的值,其他属性保持不变。每个站点维护一个字典Dic,便于查询op1在对op2进行包含转换IT(op1,op2)之前的位置,其中op1为插入操作,op2为删除操作,字典的关键字为的二元组,值为op1在对op2进行包含转换之前的p。index1为操作op1在执行队列中的位置,index2为操作op2在执行队列中的位置。
[0051] 1. 当 op1.t = Ins,op2.t = Ins;如 果 op1.pop2.p, 则 IT(op1,op2) =Ins(p1+1,c1,id1,dn1);如果op1.p=op2.p并且op1.dn>op2.dn,则IT(op1,op2)=Ins(p1+1,c1,id1,dn1);如果op1.p=op2.p并且op1.dn=op2.dn和op1.id>op2.id,则IT(op1,op2)=Ins(p1+1,c1,id1,dn1);
[0052] 2.当 op1.t= Ins,op2.t =Del;如 果 op1.p≤ op2.p,则 IT(op1,op2) =Ins(p1,c1,id1,dn1);如果op1.p>op2.p,则IT(op1,op2)=Ins(p1-1,c1,id1,dn1+1);Dic=op1.p;
[0053] 3.当op1.t=Del,op2.t=Ins;如果op1.p
[0054] 4.当op1.t=Del,op2.t=Del;如果op1.pop2.p,则IT(op1,op2)=Del(p1-1);如果op1.p=op2.p,则IT(op1,op2)=Nop;其中Nop表示空操作,不产生任何效果;
[0055] 5.当 op1.t= Ins,op2.t =Ins;如 果 op1.p≤ op2.p,则 ET(op1,op2) =Ins(p1,c1,id1,dn1);如果op1.p=op2.p,则ET(op1,op2)=Ins(p1-1,c1,id1,dn1);
[0056] 6. 当 op1.t = Ins,op2.t = Del;如 果 op1.pop2.p,则ET(op1,op2)=Ins(p1’,c1,id1,dn1-1),p1’=Dic,即p1’是 字 典 中 的 词;如 果 op1.p=op2.p,则 p1’=Dic;假如p1’>op2.p,则ET(op1,op2)=Ins(p1’,c1,id1,dn1-1);否则ET(op1,op2)=Ins(p1’,c1,id1,dn1);
[0057] 7.当op1.t=Del,op2.t=Ins;如果op1.p
[0058] 8.当op1.t=Del,op2.t=Del;如果op1.p
[0059] 1-8的转换规则都是按照操作类型自动选择的,其中1-4规则对应于IT,5-8规则对应于ET。比如op1.t=Ins,op2.t=Del,则自动按照规则2调用IT(op1,op2),按照规则5调用ET(op1,op2)。
[0060] 一种基于合并操作的操作转换系统框架,包括下述步骤:
[0061] 步骤1:每个站点上都有3个队列:接收队列,等待队列,执行队列。每个站点产生的操作都会在该站点立即执行,并将该操作加入执行队列。每个站点需要状态向量SV(State Vector),向量的长度等于协同的站点数,SV的第i个分量等于第i个站点执行的操作数。
[0062] 接收队列用于保存从其他协同站点发送到该站点的操作;所述等待队列中操作的排列顺序基于接收到的操作的时间顺序;所述执行队列保存该站点执行过的操作,其中操作的排列顺序基于执行顺序。
[0063] 广播本地操作到其他协同站点。发送的操作包括如下信息:站点标识(id),操作的类型(Ins,Del),操作的位置(p),操作的目标(c),站点的状态向量SV。SV[i]代笔第i个站点执行的操作数目。假设当前站点为j,由于本地执行了一个操作则将SV[j]加1。
[0064] 步骤2:每个站点接收到的远程操作加入到接收队列,当该远程操作的所有因操作已经被加入到执行队列,进入步骤3,否则,将该操作加入到等待队列中.每当有远程操作被加入到执行队列,则立即检查等待队列是否有满足因果关系的操作,有则被后续步骤处理并且加入到执行队列,没有则转到接收队列进行判断。
[0065] 每个站点接收到的远程操作都加入到接收队列。按照因果顺序集成远程操作。只有当一个操作的所有因操作已经被加入到执行队列,该操作才能被后续步骤处理。假如接收到的操作来自站点j,接收到的SV为SVj,当前的站点为i;如果满足SVi[j]+1=SVj[j],该远程操作才会被后续步骤处理并加入到执行队列,同时将SVi[j]加1。否则,将该操作加入到等待队列中。
[0066] 步骤3:每个站点在执行队列中找出与该操作具有并发关系的操作。记被比较的两个操作状态向量分别为SV1、SV2,k∈{0,1,2,3.....n},其中n是站点的数量,遍历SV1和SV2。如果SV1[k]
[0067] 将站点历史记录划分成因操作序列,并发操作序列两部分,记录它们的分界位置为ha。从左到右扫描历史记录H[k],k∈{0,1,.....L},L为H的长度,ha初始为-1。如果操作op与H[k]是并发关系,则继续判断第k+1个操作;如果操作op与H[k]的操作是因果关系,则对第k到ha+2的操作交换H[k]和H[k-1]的位置,然后将ha加1。
[0068] ①当k-ha<3时,记op1=H[k],op2=H[k-1]。根据op1=H[k],op2=H[k-1]的操作类型,按照转换规则5-8,调用ET(op1,op2)的到op1’,然后根据op2.t和op1.t的操作类型,按照转换规则1-4,调用IT(op2,op1’)的到op2’。分别赋值H[k]=op2’,H[k-1]=op1’,实现了交换H[k],H[k-1]的目的,并且交换之后执行的效果一样。
[0069] ②当k-ha≥3时,判断k-1到记录与操作op具有因果关系的操作的位置ha+2的操作中是否存在{Ins(p,c),Del(p)}和{Del(p),Ins(p,c)的连续序列,即在同一个位置进行插入删除(或者删除插入)的连续操作。
[0070] ③如果不存在,则根据op1=H[k],op2=H[k-1]的操作类型,按照转换规则5-8,调用ET(op1,op2)得到op1’,然后根据op2.t和op1.t的操作类型,按照转换规则1-4,调用IT(op2,op1’)得到op2’。
[0071] 分别赋值H[k]=op2’,H[k-1]=op1’,实现了交换H[k],H[k-1]的目的,并且交换之后执行的效果一样。将k减1,继续利用上面的过程交换H[k]和H[k-1]位置的操作。如果存在,但是op1.t=Del,则同样按照上面的过程处理。
[0072] ④存在{Ins(p,c),Del(p)},其中H[k]=op1,H[k-1]= Ins(p,c,dn,id)=op2,H[k-2]=Del(p)=op3;查询Dic的值得到p1’,op1.p=p’;按照规则1调用IT(op3,op1)得到op3’,IT(op2,op1)=op2’;将三个操作的位置互换得到,H[k]=op3,H[k-1]=op2,H[k]=op1。
[0073] ⑤存在{Del(p),Ins(p,c)},其中H[k]=op1,H[k-1] =Ins(p,c,dn,id)=op2,H[k-2]=Del(p)=op3;如果op.p>op2.p,则op.dn加1;op.p≤op2.p,则op2.p加1,op1.p加1;将三个操作的位置互换得到,H[k]=op3,H[k-1]=op2,H[k]=op1。
[0074] 步骤4:将找出的并发操作进行转换得到该操作在该站点的执行形式。经过上一个步骤之后,可以得知H[1,...,ha]为因操作,H[ha+1,....,L]为并发操作。将操作op对并发操作进行包含转换得到op’,op’即为操作op在该站点的执行形式。
[0075] ①当L-ha≤2时,记op1=H[k],k∈{ha+1,....,L}。根据op和op1的操作类型,按照转换规则1-4,调用IT(op,op1)得到op’。将k加1,重复上述过程。
[0076] ②当L-ha>2时,判断ha+1到L的操作中是否存在{Ins(p,c),Del(p)}和{Del(p),Ins(p,c)的连续序列,即在同一个位置进行插入删除(或者删除插入)的连续操作。
[0077] ③存在{Ins(p,c),Del(p)},其中op1=H[k]=Ins(p,c,dn,id),op2=H[k+1]==Del(p);如果op.p>op1.p,则将op.dn加1,然后返回op’=op;如果op.p≤op1.p,则返回op’=op;
[0078] ④存在{Del(p),Ins(p,c)},其中op1=H[k]=Del(p),op2=H[k+1]==Ins(p,c,dn,id);如果op.t=Ins,则将op.p存入Dic,其中index1等于L,index2为k。然后根据转换规则2调用IT(op,op1)得到op’,然后根据转换规则1调用IT(op’,op)得到op”。op”即为操作op在该站点的执行形式。如果op.t=Del,op.p=op1.p,则操作op在该站点的执行形式为空操作,没有实际效果,也不会加入到执行队列。op.p不等于op1.p,则操作op就是在该站点的执行形式。
[0079] 步骤5:执行转换后的操作并将该操作加入到执行队列;
[0080] 步骤6:完成协同编辑。
[0081] 下面利用一个实例来对本发明作进一步说明:
[0082] 如表1所示,4个站点的协同文本编辑系统,初始化文档状态为”abCd”,每个站点的本地操作如表1所示,站点操作的编号从0开始。在图2中描述站点2执行本地操作以及接收远程操作的顺序。表2给出了每个站点接收到的远程操作的顺序,可以看出每个站点接收的操作顺序不一样。从表3可以看出,采用上面提出的OT算法来支持这种协同,尽管执行的操作顺序不同,但是最终每个站点都得到了一致的结果并且实现了实时协同文本编辑。因为在定义包含转换的时候,规定了如果在同一个位置插入字符,那么站点小的插入的位置在后面;所以,字符u、v的位置会在字符l、m之前,其他同理。显然,最终的结果符合用户操作的实时协同。
[0083] 综上所述,一种基于操作转换的文本编辑实时协同方法,能够实现多个站点协同的结果一致性与意图维护。
[0084] 表1站点的本地操作
[0085]
[0086] 表2各站点接收远程操作顺序
[0087]Site1 Site2 Site3 Site4
Site3-op0 Site1-op0 Site1-op0 Site1-op0
Site3-op1 Site1-op1 Site2-op0 Site2-op0
Site2-op0 Site1-op2 Site1-op1 Site1-op1
Site2-op1 Site3-op0 Site2-op1 Site2-op1
Site2-op2 Site3-op1 Site2-op2 Site2-op2
Site4-op0 Site4-op0 Site4-op0 Site1-op2
Site3-op2 Site3-op2 Site1-op2 Site3-op0
Site4-op1 Site4-op1 Site4-op1 Site3-op1
Site4-op2 Site4-op2 Site4-op2 Site3-op2
[0088] 表3每个站点执行的操作以及最终文档状态
[0089]
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈