协同操作处理方法、装置、设备以及介质转让专利

申请号 : CN202110867959.5

文献号 : CN113312885B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邓彪李争

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请提供了一种协同操作处理方法、装置、设备以及介质,该方法包括:将与目标文档中的第一编辑区域相关联的至少两个协同操作拆解为原子操作;若第一协同操作包括针对第一编辑区域的原子操作i,以及针对目标文档中的第二编辑区域的原子操作j,则对原子操作i与第二协同操作的原子操作进行冲突合并,得到针对第一编辑区域的第一合并结果;至少两个协同操作包括第一协同操作和第二协同操作,i和j均为正整数;根据原子操作i和第二协同操作对应的原子操作中除第一合并结果之外的操作内容,生成次原子操作,对原子操作j和次原子操作进行冲突合并,得到针对第二编辑区域的第二合并结果。采用本申请,可以提高协同操作处理结果的准确性。

权利要求 :

1.一种协同操作处理方法,其特征在于,包括:获取与目标文档中的第一编辑区域相关联的至少两个协同操作,对所述至少两个协同操作进行拆解,得到所述至少两个协同操作分别对应的原子操作;

若所述至少两个协同操作中的第一协同操作包括针对所述第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,则对所述原子操作i与第二协同操作对应的原子操作进行冲突合并,得到针对所述第一编辑区域的第一合并结果;所述第二编辑区域属于所述目标文档,所述第二协同操作为所述至少两个协同操作中除所述第一协同操作之外的协同操作,i和j均为小于或等于所述第一协同操作对应的原子操作的数量的正整数;

根据所述第一合并结果,获取所述原子操作i和第二协同操作对应的原子操作中所丢失的操作内容,生成包含所述操作内容的次原子操作,对所述原子操作j和所述次原子操作进行冲突合并,得到针对所述第二编辑区域的第二合并结果。

2.根据权利要求1所述的方法,其特征在于,所述获取与目标文档中的第一编辑区域相关联的至少两个协同操作,包括:

获取所述目标文档对应的对象标识集合,在所述目标文档中,为所述对象标识集合中的每个对象标识分别分配文档控制区域;

若接收到M个对象标识所关联的用户终端分别上传的针对所述第一编辑区域的原始协同操作,则在所述M个对象标识分别对应的原始协同操作中,将文档控制区域包含所述第一编辑区域的对象标识所对应的原始协同操作,确定为所述至少两个协同操作;M为小于或等于所述对象标识集合中所包含的对象标识数量的正整数。

3.根据权利要求1所述的方法,其特征在于,还包括:获取所述至少两个协同操作分别在所述目标文档中所触发的编辑区域集合,统计至少两个编辑区域集合分别对应的编辑区域数量;

将所述编辑区域数量大于数量阈值的编辑区域集合所属的协同操作,确定为所述第一协同操作;所述第一协同操作对应的编辑区域集合中包括所述第一编辑区域和所述第二编辑区域。

4.根据权利要求1所述的方法,其特征在于,所述对所述至少两个协同操作进行拆解,得到所述至少两个协同操作分别对应的原子操作,包括:分别对所述至少两个协同操作进行拆解,得到每个协同操作分别对应的一个或多个协同子操作;

根据所述一个或多个协同子操作在所属的协同操作中的执行时间顺序,将所述一个或多个协同子操作均转换为原子操作。

5.根据权利要求1所述的方法,其特征在于,所述第一协同操作包括剪切移动操作,所述原子操作i包括内容删除操作,所述原子操作j包括内容插入操作,所述第二协同操作对应的原子操作包括内容修改操作;

所述若所述至少两个协同操作中的第一协同操作包括针对所述第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,则对所述原子操作i与第二协同操作对应的原子操作进行冲突合并,得到针对所述第一编辑区域的第一合并结果,包括:若所述至少两个协同操作中的剪切移动操作包括针对所述第一编辑区域的所述内容删除操作,以及针对所述第二编辑区域的所述内容插入操作,则对所述内容删除操作和所述内容修改操作进行冲突合并,得到针对所述第一编辑区域的第一合并结果为空操作;

则所述根据所述第一合并结果,获取所述原子操作i和第二协同操作对应的原子操作中所丢失的操作内容,生成包含所述操作内容的次原子操作,包括:根据所述空操作,确定所述内容删除操作和所述内容修改操作中所丢失的操作内容为所述内容修改操作,将所述内容修改操作和所述空操作确定为所述次原子操作。

6.根据权利要求1所述的方法,其特征在于,所述第一协同操作包括选择性复制操作,所述原子操作i包括内容选择操作,所述原子操作j包括内容插入操作,所述第二协同操作对应的原子操作包括内容修改操作;

所述若所述至少两个协同操作中的第一协同操作包括针对所述第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,则对所述原子操作i与第二协同操作对应的原子操作进行冲突合并,得到针对所述第一编辑区域的第一合并结果,包括:若所述至少两个协同操作中的选择性复制操作包括针对所述第一编辑区域的所述内容选择操作,以及针对所述第二编辑区域的所述内容插入操作,则对所述内容选择操作和所述内容修改操作进行冲突合并,得到针对所述第一编辑区域的第一合并结果为修改内容;

则所述根据所述第一合并结果,获取所述原子操作i和第二协同操作对应的原子操作中所丢失的操作内容,生成包含所述操作内容的次原子操作,包括:根据所述修改内容,确定所述内容选择操作和所述内容修改操作中所丢失的操作内容为原始操作内容,将所述原始操作内容确定为所述次原子操作;所述原始操作内容是指所述内容选择操作所触发的所述第一编辑区域中的原始内容。

7.根据权利要求1所述的方法,其特征在于,还包括:获取所述第一编辑区域具有绑定关系的目标对象标识;

若接收到N个对象标识对应的第二协同操作中包含所述目标对象标识对应的第二协同操作,则获取所述目标对象标识所关联的预期操作结果;N为小于所述至少两个协同操作的数量的正整数;

若所述第二合并结果和所述预期操作结果不一致时,将所述预期操作结果和所述第二合并结果均返回至所述目标对象标识所关联的用户终端,以使所述目标对象标识所关联的用户终端,在所述目标文档中对所述预期操作结果和所述第二合并结果进行展示。

8.一种协同操作处理方法,其特征在于,包括:向服务器发送针对目标文档的第一协同操作,以使所述服务器将所述第一协同操作和第二协同操作拆解为原子操作;所述第一协同操作和所述第二协同操作为不同的用户终端所发送的,所述第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,所述第二协同操作包括针对所述第一编辑区域的原子操作,所述第一编辑区域和所述第二编辑区域均属于所述目标文档,i和j均为小于或等于所述第一协同操作对应的原子操作的数量的正整数;

接收所述服务器返回的第一合并结果和第二合并结果,在所述目标文档中显示与所述第一编辑区域相关联的第一合并结果,以及与所述第二编辑区域相关联的第二合并结果;

所述第一合并结果是指所述原子操作i和所述第二协同操作对应的原子操作之间的冲突合并结果,所述第二合并结果是指所述原子操作j和次原子操作之间的冲突合并结果,所述次原子操作是由所述原子操作i和所述第二协同操作对应的原子操作中所丢失的操作内容确定的。

9.根据权利要求8所述的方法,其特征在于,所述接收所述服务器返回的第一合并结果和第二合并结果,在所述目标文档中显示与所述第一编辑区域相关联的第一合并结果,以及与所述第二编辑区域相关联的第二合并结果,包括:接收所述服务器返回的第一合并结果和第二合并结果,在所述目标文档的所述第一编辑区域中插入所述第一合并结果,在所述第二编辑区域中插入所述第二合并结果。

10.根据权利要求8所述的方法,其特征在于,所述第一协同操作包括剪切移动操作;

所述接收所述服务器返回的第一合并结果和第二合并结果,在所述目标文档中显示与所述第一编辑区域相关联的第一合并结果,以及与所述第二编辑区域相关联的第二合并结果,包括:

接收所述服务器返回的第一合并结果和第二合并结果,在所述目标文档的所述第一编辑区域中插入所述第一合并结果;

显示与所述第二编辑区域相关联的第一候选内容列表;所述第一候选内容列表包括所述第二合并结果和所述第一协同操作所触发的原始操作内容;

响应针对所述第一候选内容列表的选取操作,在所述第二编辑区域中插入所述选取操作所触发的原始操作内容。

11.根据权利要求8所述的方法,其特征在于,所述第一协同操作包括选择性复制操作;

所述接收所述服务器返回的第一合并结果和第二合并结果,在所述目标文档中显示与所述第一编辑区域相关联的第一合并结果,以及与所述第二编辑区域相关联的第二合并结果,包括:

接收所述服务器返回的第一合并结果和第二合并结果,在所述目标文档的所述第一编辑区域中插入所述第一合并结果;

显示与所述第二编辑区域相关联的第二候选内容列表;所述第二候选内容列表包括所述第一合并结果和所述第二合并结果;

响应针对所述第二候选内容列表的选取操作,在所述第二编辑区域中插入所述选取操作所触发的所述第一合并结果。

12.根据权利要求8所述的方法,其特征在于,还包括:当监听到所述第一编辑区域被操作时,获取针对所述第一编辑区域的编辑对象标识,在所述第一编辑区域对应的关联区域中显示所述编辑对象标识。

13.一种协同操作处理装置,其特征在于,包括:拆解模块,用于获取与目标文档中的第一编辑区域相关联的至少两个协同操作,对所述至少两个协同操作进行拆解,得到所述至少两个协同操作分别对应的原子操作;

第一冲突合并模块,用于若所述至少两个协同操作中的第一协同操作包括针对所述第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,则对所述原子操作i与第二协同操作对应的原子操作进行冲突合并,得到针对所述第一编辑区域的第一合并结果;所述第二编辑区域属于所述目标文档,所述第二协同操作为所述至少两个协同操作中除所述第一协同操作之外的协同操作,i和j均为小于或等于所述第一协同操作对应的原子操作的数量的正整数;

第二冲突合并模块,用于根据所述第一合并结果,获取所述原子操作i和第二协同操作对应的原子操作中所丢失的操作内容,生成包含所述操作内容的次原子操作,对所述原子操作j和所述次原子操作进行冲突合并,得到针对所述第二编辑区域的第二合并结果。

14.一种计算机设备,其特征在于,包括存储器和处理器;

所述存储器与所述处理器相连,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1‑12任一项所述的方法。

15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1‑12任一项所述的方法。

说明书 :

协同操作处理方法、装置、设备以及介质

技术领域

[0001] 本申请涉及互联网技术领域,尤其涉及一种协同操作处理方法、装置、设备以及介质。

背景技术

[0002] 在线文档作为支持多个用户进行实时浏览和编辑的共享文档,可以为用户节省大量的时间和精力,因此受到了用户的广泛关注。目前,当多个用户对同一个在线文档的同一
个版本进行操作时,需要根据多个用户所对应的操作时间的先后顺序,依次对在线文档进
行修改;然而,当在线文档中用户A和用户B的操作无法从操作时间上进行区分时,容易造成
两个用户操作之间的逻辑混乱,进而导致在线文档的修改结果出现错误。

发明内容

[0003] 本申请实施例提供一种协同操作处理方法、装置、设备以及介质,可以提高协同操作处理结果的准确性。
[0004] 本申请实施例一方面提供了一种协同操作处理方法,包括:
[0005] 获取与目标文档中的第一编辑区域相关联的至少两个协同操作,对至少两个协同操作进行拆解,得到至少两个协同操作分别对应的原子操作;
[0006] 若至少两个协同操作中的第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,则对原子操作i与第二协同操作对应的原子操作进行冲
突合并,得到针对第一编辑区域的第一合并结果;第二编辑区域属于目标文档,第二协同操
作为至少两个协同操作中除第一协同操作之外的协同操作,i和j均为小于或等于第一协同
操作对应的原子操作的数量的正整数;
[0007] 根据第一合并结果,获取原子操作i和第二协同操作对应的原子操作中所丢失的操作内容,生成包含操作内容的次原子操作,对原子操作j和次原子操作进行冲突合并,得
到针对第二编辑区域的第二合并结果。
[0008] 本申请实施例一方面提供了一种协同操作处理方法,包括:
[0009] 向服务器发送针对目标文档的第一协同操作,以使服务器将第一协同操作和第二协同操作拆解为原子操作;第一协同操作和第二协同操作为不同的用户终端所发送的,第
一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,第
二协同操作包括针对第一编辑区域的原子操作,第一编辑区域和第二编辑区域均属于目标
文档,i和j均为小于或等于第一协同操作对应的原子操作的数量的正整数;
[0010] 接收服务器返回的第一合并结果和第二合并结果,在目标文档中显示与第一编辑区域相关联的第一合并结果,以及与第二编辑区域相关联的第二合并结果;第一合并结果
是指原子操作i和第二协同操作对应的原子操作之间的冲突合并结果,第二合并结果是指
原子操作j和次原子操作之间的冲突合并结果,次原子操作是由原子操作i和第二协同操作
对应的原子操作中所丢失的操作内容确定的。
[0011] 本申请实施例一方面提供了一种协同操作处理装置,包括:
[0012] 拆解模块,用于获取与目标文档中的第一编辑区域相关联的至少两个协同操作,对至少两个协同操作进行拆解,得到至少两个协同操作分别对应的原子操作;
[0013] 第一冲突合并模块,用于若至少两个协同操作中的第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,则对原子操作i与第二协同操作
对应的原子操作进行冲突合并,得到针对第一编辑区域的第一合并结果;第二编辑区域属
于目标文档,第二协同操作为至少两个协同操作中除第一协同操作之外的协同操作,i和j
均为小于或等于第一协同操作对应的原子操作的数量的正整数;
[0014] 第二冲突合并模块,用于根据第一合并结果,获取原子操作i和第二协同操作对应的原子操作中所丢失的操作内容,生成包含操作内容的次原子操作,对原子操作j和次原子
操作进行冲突合并,得到针对第二编辑区域的第二合并结果。
[0015] 其中,拆解模块包括:
[0016] 区域分配单元,用于获取目标文档对应的对象标识集合,在目标文档中,为对象标识集合中的每个对象标识分别分配文档控制区域;
[0017] 操作权限确定单元,用于若接收到M个对象标识所关联的用户终端分别上传的针对第一编辑区域的原始协同操作,则在M个对象标识分别对应的原始协同操作中,将文档控
制区域包含第一编辑区域的对象标识所对应的原始协同操作,确定为至少两个协同操作;M
为小于或等于对象标识集合中所包含的对象标识数量的正整数。
[0018] 其中,该装置还包括:
[0019] 编辑区域数量统计模块,用于获取至少两个协同操作分别在目标文档中所触发的编辑区域集合,统计至少两个编辑区域集合分别对应的编辑区域数量;
[0020] 第一协同操作确定模块,用于将编辑区域数量大于数量阈值的编辑区域集合所属的协同操作,确定为第一协同操作;第一协同操作对应的编辑区域集合中包括第一编辑区
域和第二编辑区域。
[0021] 其中,拆解模块包括:
[0022] 操作拆解单元,用于分别对至少两个协同操作进行拆解,得到每个协同操作分别对应的一个或多个协同子操作;
[0023] 操作转换单元,用于根据一个或多个协同子操作在所属的协同操作中的执行时间顺序,将一个或多个协同子操作均转换为原子操作。
[0024] 其中,第一协同操作包括剪切移动操作,原子操作i包括内容删除操作,原子操作j包括内容插入操作,第二协同操作对应的原子操作包括内容修改操作;
[0025] 第一冲突合并模块具体用于:
[0026] 若至少两个协同操作中的剪切移动操作包括针对第一编辑区域的内容删除操作,以及针对第二编辑区域的内容插入操作,则对内容删除操作和内容修改操作进行冲突合
并,得到针对第一编辑区域的第一合并结果为空操作;
[0027] 则第二冲突合并模块用于:
[0028] 根据空操作,确定内容删除操作和内容修改操作中所丢失的操作内容为内容修改操作,将内容修改操作和空操作确定为次原子操作。
[0029] 其中,第一协同操作包括选择性复制操作,原子操作i包括内容选择操作,原子操作j包括内容插入操作,第二协同操作对应的原子操作包括内容修改操作;
[0030] 第一冲突合并模块具体用于:
[0031] 若至少两个协同操作中的选择性复制操作包括针对第一编辑区域的内容选择操作,以及针对第二编辑区域的内容插入操作,则对内容选择操作和内容修改操作进行冲突
合并,得到针对第一编辑区域的第一合并结果为修改内容;
[0032] 则第二冲突合并模块用于:
[0033] 根据修改内容,确定内容选择操作和内容修改操作中所丢失的操作内容为原始操作内容,将原始操作内容确定为次原子操作;原始操作内容是指内容选择操作所触发的第
一编辑区域中的原始内容。
[0034] 其中,该装置还包括:
[0035] 标识获取模块,用于获取第一编辑区域具有绑定关系的目标对象标识;
[0036] 预期结果获取模块,用于若接收到N个对象标识对应的第二协同操作中包含目标对象标识对应的第二协同操作,则获取目标对象标识所关联的预期操作结果;N为小于至少
两个协同操作的数量的正整数;
[0037] 结果返回模块,用于若第二合并结果和预期操作结果不一致时,将预期操作结果和第二合并结果均返回至目标对象标识所关联的用户终端,以使目标对象标识所关联的用
户终端,在目标文档中对预期操作结果和第二合并结果进行展示。
[0038] 本申请实施例一方面提供了一种协同操作处理装置,包括:
[0039] 操作发送模块,用于向服务器发送针对目标文档的第一协同操作,以使服务器将第一协同操作和第二协同操作拆解为原子操作;第一协同操作和第二协同操作为不同的用
户终端所发送的,第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区
域的原子操作j,第二协同操作包括针对第一编辑区域的原子操作,第一编辑区域和第二编
辑区域均属于目标文档,i和j均为小于或等于第一协同操作对应的原子操作的数量的正整
数;
[0040] 合并结果接收模块,用于接收服务器返回的第一合并结果和第二合并结果,在目标文档中显示与第一编辑区域相关联的第一合并结果,以及与第二编辑区域相关联的第二
合并结果;第一合并结果是指原子操作i和第二协同操作对应的原子操作之间的冲突合并
结果,第二合并结果是指原子操作j和次原子操作之间的冲突合并结果,次原子操作是由原
子操作i和第二协同操作对应的原子操作中所丢失的操作内容确定的。
[0041] 其中,合并结果接收模块具体用于:
[0042] 接收服务器返回的第一合并结果和第二合并结果,在目标文档的第一编辑区域中插入第一合并结果,在第二编辑区域中插入第二合并结果。
[0043] 其中,第一协同操作包括剪切移动操作;
[0044] 合并结果接收模块包括:
[0045] 第一内容插入单元,用于接收服务器返回的第一合并结果和第二合并结果,在目标文档的第一编辑区域中插入第一合并结果;
[0046] 第一列表显示单元,用于显示与第二编辑区域相关联的第一候选内容列表;第一候选内容列表包括第二合并结果和第一协同操作所触发的原始操作内容;
[0047] 第二内容插入单元,用于响应针对第一候选内容列表的选取操作,在第二编辑区域中插入选取操作所触发的原始操作内容。
[0048] 其中,第一协同操作包括选择性复制操作;
[0049] 合并结果接收模块包括:
[0050] 第一内容插入单元,用于接收服务器返回的第一合并结果和第二合并结果,在目标文档的第一编辑区域中插入第一合并结果;
[0051] 第二列表显示单元,用于显示与第二编辑区域相关联的第二候选内容列表;第二候选内容列表包括第一合并结果和第二合并结果;
[0052] 第三内容插入单元,用于响应针对第二候选内容列表的选取操作,在第二编辑区域中插入选取操作所触发的第一合并结果。
[0053] 其中,该装置还包括:
[0054] 对象标识显示模块,用于当监听到第一编辑区域被操作时,获取针对第一编辑区域的编辑对象标识,在第一编辑区域对应的关联区域中显示编辑对象标识。
[0055] 本申请实施例一方面提供了一种计算机设备,包括存储器和处理器,存储器与处理器相连,存储器用于存储计算机程序,处理器用于调用计算机程序,以使得该计算机设备
执行本申请实施例中上述一方面提供的方法。
[0056] 本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序适于由处理器加载并执行,以使得具有处理器的计算机设备
执行本申请实施例中上述一方面提供的方法。
[0057] 根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算
机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使
得该计算机设备执行上述一方面提供的方法。
[0058] 本申请实施例可以获取与目标文档中的第一编辑区域相关联的至少两个协同操作,将每个协同操作都拆解为原子操作,若至少两个协同操作中的第一协同操作包括针对
第一编辑区域的原子操作i和针对第二编辑区域的原子操作j,则对原子操作i和第二协同
操作的原子操作进行冲突合并,得到针对第一编辑区域的第一合并结果,其中第二编辑区
域属于目标文档,第二协同操作为至少两个协同操作中除第一协同操作之外的协同操作,i
和j均为正整数;进而可以根据第一合并结果,从原子操作i和第二协同操作所对应的原子
操作中所丢失的操作内容,生成包含该操作内容的次原子操作,将原子操作j和次原子操作
进行冲突合并,可以得到针对第二编辑区域的第二合并结果,此时的第二合并结果可以为
上述至少两个协同操作之间的冲突合并处理结果。可见,在至少两个协同操作的处理场景
中,可以将每个协同操作均拆解为原子操作,执行原子操作之间的冲突合并处理,在原子操
作的执行过程中若存在丢失的操作内容,可以通过引入包含该操作内容的次原子操作,以
得到最终的冲突合并处理结果,这样得到的冲突处理结果可以同时保留至少两个协同操作
的更改,进而可以提高协同操作处理结果的准确性。

附图说明

[0059] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0060] 图1是本申请实施例提供的一种网络架构的结构示意图;
[0061] 图2是本申请实施例提供的一种协同冲突处理场景示意图;
[0062] 图3是本申请实施例提供的一种协同操作处理方法的流程示意图;
[0063] 图4是本申请实施例提供的一种协同操作的处理流程图;
[0064] 图5是本申请实施例提供的一种协同操作处理方法的流程示意图;
[0065] 图6是本申请实施例提供的一种目标文档中的剪切移动场景示意图;
[0066] 图7是本申请实施例提供的一种目标文档的编辑显示界面图;
[0067] 图8是本申请实施例提供的一种协同操作处理装置的结构示意图;
[0068] 图9是本申请实施例提供的一种协同操作处理装置的结构示意图;
[0069] 图10是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

[0070] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于
本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本申请保护的范围。
[0071] 本申请一个或多个实施例涉及以下概念:
[0072] 在线文档:在线文档可以是指允许用户通过浏览器网页(web)、应用程序(Application,APP)、小程序等方式,查看和编辑的文本(例如,.doc、.docx、.txt、.rtf等格
式类型的文件)、表格(例如,.xls、.xlsx等格式类型的文件)、演示文稿(例如,.ppt、.pptx
等格式类型的文件)等文件,在线文档可以支持多人实时协同操作。
[0073] 协同:不同对象之间进行数据交互,对象可以包括但不限于:用户、终端、设备组件、设备模块。
[0074] 冲突处理:当多个对象对在线文档的同一个版本进行数据编辑时,在线文档可以对多个对象的数据编辑操作进行处理,能够尽可能地保留多个对象对该在线文档的修改。
其中,同一个在线文档可以对应不同的版本,针对同一个版本的数据编辑操作都需要进行
冲突处理。
[0075] 协同冲突处理:通过操作转换(Operational transformation,OT)算法,对多个对象产生的操作数据进行冲突处理,以同时保留多个对象对同一个在线文档的修改操作,此
处的协同冲突处理也可以称为冲突合并处理;其中,OT算法可以是指一类技术,而不是具体
的算法,其思路为:将编辑进行操作(Operation)的拆分,并对这些操作进行转换
(transform);该转换是OT算法的核心,而转换(transform)的核心在于如何对多个对象的
编辑进行拆分,具体应该将编辑拆分成哪些操作以及转换算法都是可以自定义的,因此OT
算法可以灵活地支持各种协同编辑应用,比如非文本类的编辑(例如,图的编辑、表格的编
辑等)。
[0076] 请参见图1,图1是本申请实施例提供的一种网络架构的结构示意图。如图1所示,该网络架构可以包括服务器10d和用户终端集群,该用户终端集群可以包括一个或者多个
用户终端,这里不对用户终端的数量进行限制。如图1所示,该用户终端集群可以具体包括
用户终端10a、用户终端10b以及用户终端10c等。其中,服务器10d可以是独立的物理服务
器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云
数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、
以及大数据和人工智能平台等基础云计算服务的云服务器。用户终端10a、用户终端10b以
及用户终端10c等均可以包括:智能手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设
备(mobile internet device,MID)以及台式电脑等具有在线文档编辑功能的终端。如图1
所示,用户终端10a、用户终端10b以及用户终端10c等可以分别与服务器10d进行网络连接,
以便于每个用户终端可以通过该网络连接与服务器10d之间进行数据交互。
[0077] 如图1所示,用户终端集群中的每个用户终端均可以通过网页查看和编辑在线文档,当用户终端集群中的多个用户终端对在线文档的同一个版本进行编辑时,该在线文档
所对应的服务器10d可以获取多个用户终端的编辑,并对多个用户终端的编辑数据进行协
同冲突处理,以保留多个用户终端对同一个在线文档的修改。例如,若图1中的用户终端
10a、用户终端10b以及用户终端10c对在线文档的同一个版本进行编辑,则服务器10d在接
收到用户终端10a、用户终端10b以及用户终端10c的编辑数据后,需要对用户终端10a、用户
终端10b以及用户终端10c的编辑数据进行协同冲突处理,并在多个用户终端所编辑的区域
中输出协同冲突处理后的结果。
[0078] 下面以在线文档是表格文件为例,对多个用户终端的协同冲突处理进行详细描述。请参见图2,图2是本申请实施例提供的一种协同冲突处理场景示意图;如图2所示的用
户终端20a和用户终端20b都可以是上述图1所示的用户终端集群中的任一个用户终端,用
户终端20a可以为用户A所使用的终端设备,用户终端20b可以为用户B所使用的终端设备。
[0079] 如图2所示,表格文件的第1行第一列(可以称为表格文件中的单元格A1)的当前显示内容为“a1a1”,若用户A和用户B基于表格文件的同一个版本进行操作,则需要对用户A和
用户B的操作进行协同冲突处理。当用户A对表格文件的编辑操作为:在第1行第一列(单元
格A1)中写入内容“a1z9”时,用户终端20a可以监听到用户A对表格文件的编辑操作,将第1
行第一列中的内容“a1a1”修改为“a1z9”,并将用户A的编辑操作上传至服务器10d(也可以
是指在线文档的后台服务器);同理,当用户B对表格文件的编辑操作为:将第1行第一列(单
元格A1)中的内容剪切到第5行第一列(单元格A5)时,用户终端20b可以监听到用户B对表格
文件的编辑操作,剪切第1行第一列中的内容“a1a1”,在第5行第一列中写入第1行第一列中
的内容,并将该用户B的编辑操作上传至服务器10d。
[0080] 服务器10d可以接收到用户终端20a提交的用户A的编辑操作,以及用户终端20b提交的用户B的编辑操作,可以将用户A的编辑操作拆解为“修改第1行第一列的内容为
‘a1z9’”,即用户A的编辑操作可以在用户终端20a中产生一次编辑;同理,可以将用户B的编
辑操作拆解为“删除第1行第一列”和“在第5行第一列的位置插入原来第1行第一列的数据”
两个操作,即用户B的编辑操作可以在用户终端20b中产生两次编辑。
[0081] 在对用户A的编辑操作和用户B的编辑操作进行协同冲突处理的过程中,服务器10d可以将用户A的“修改第1行第一列的内容为‘a1z9’”操作与用户B的“删除第1行第一列”
操作进行冲突合并,合并完成后的第一合并结果可以表示为:空操作;在上述冲突合并处理
过程中,可以发现丢失了用户A的编辑操作“修改第1行第一列的内容为‘a1z9’”,因此可以
根据丢失的操作内容和第一合并结果,生成一个次原子操作;随后,可以将次原子操作和用
户B的“在第5行第一列的位置插入原来第1行第一列的数据”操作进行冲突合并,合并完成
后的第二合并结果可以为:在第5行第一列的位置插入内容“a1z9”。服务器10d可以将第二
合并结果下发至用户终端20a和用户终端20b,用户终端20a和用户终端20b在接收到服务器
10d下发的第二合并结果后,在第1行第一列中显示第一合并结果(显示的内容为空),在第5
行第一列中插入内容“a1z9”。本申请实施例中,可以引入包含所丢失的操作内容的次原子
操作,以同时保留多个用户的编辑操作,进而可以提高协同操作处理结果的准确性。
[0082] 请参见图3,图3是本申请实施例提供的一种协同操作处理方法的流程示意图。可以理解地,该协同操作处理方法可以由服务器(例如,上述图1所对应实施例中的服务器
10d)执行;如图3所示,该协同操作处理方法可以包括以下步骤:
[0083] 步骤S101,获取与目标文档中的第一编辑区域相关联的至少两个协同操作,对至少两个协同操作进行拆解,得到至少两个协同操作分别对应的原子操作。
[0084] 具体的,当至少两个用户终端监听到用户针对目标文档中的第一编辑区域的协同操作,并将各自监听到的协同操作提交至目标文档的后台服务器(下述简称为服务器)时,
服务器可以获取至少两个用户终端分别对应的协同操作。其中,目标文档可以为文本、表
格、演示文稿等类型的在线文档的同一个版本,每个用户终端都可以通过浏览器网页、应用
程序、小程序等方式查看和编辑目标文档,该目标文档可以包括一个或多个编辑区域,如编
辑区域可以为一张演示文稿、一个表格文件中的单元格、一个文本页面、一个文本编辑位置
(例如,文本文件中第一页第一行)、表格文件中的一个子表等。
[0085] 当一个用户终端的持有用户对目标文档中的第一编辑区域(例如,如图2所对应实施例中的单元格A1)执行编辑操作时,该用户终端可以将用户的编辑操作提交至服务器,此
时服务器可以根据该用户终端提交的编辑操作对目标文档进行修改,并将修改后的内容下
发至各个用户终端,以使各个用户终端展示修改后的目标文档。当多个用户终端的持有用
户都对目标文档中的第一编辑区域执行编辑操作时,多个用户终端都可以将各自用户的编
辑操作提交至服务器;由于多个用户终端的持有用户都是对第一编辑区域进行编辑的,因
此多个用户终端所提交的编辑操作之间可能存在冲突,需要服务器对接收到的所有编辑操
作进行冲突合并处理,以保留至少两个用户终端对目标文档的操作。在冲突合并处理场景
中,用户终端向服务器所提交的编辑操作可以称为协同操作,例如:多个用户同时编辑目标
文档时,每个用户对目标文档的编辑操作均可以称为协同操作。
[0086] 需要说明的是,服务器所接收到的至少两个协同操作可以是至少两个用户终端通过相同的方式所提交的,例如:至少两个协同操作都是通过浏览器所提交的;或者,至少两
个协同操作可以是至少两个用户终端通过不同的方式所提交的,例如:至少两个用户终端
中,有些用户终端通过浏览器进行提交,有些用户终端通过应用程序进行提交等。举例来
说,用户终端1在应用程序中查看并编辑目标文档时,监听到目标文档中的协同操作1,进而
可以将协同操作1提交至服务器;用户终端2在小程序中查看并编辑目标文档时,监听到目
标文档中的协同操作2,进而可以将协同操作2提交至服务器;用户终端3在浏览器中查看并
编辑目标文档时,监听到目标文档中的协同操作3,进而可以将协同操作3提交至服务器;用
户终端4在应用程序中查看并编辑目标文档时,监听到目标文档中的协同操作4,进而可以
将协同操作4提交至服务器;此时的服务器可以接收到各个用户终端所提交的协同操作(包
括协同操作1、协同操作2、协同操作3以及协同操作4),并对接收到的4个协同操作进行冲突
合并处理。
[0087] 可选的,服务器可以为目标文档设置编辑权限,例如:用户A具备编辑目标文档中的编辑区域1的权限,不具备编辑目标文档中的编辑区域2的权限,用户B具备编辑目标文档
中的编辑区域3的权限,不具备编辑目标文档中的编辑区域1和编辑区域2的权限。服务器可
以获取目标文档对应的对象标识集合,在该目标文档中,可以为对象标识集合中的每个对
象标识分别分配文档控制区域;若服务器接收到M个对象标识所关联的用户终端分别上传
的针对第一编辑区域的原始协同操作,则可以在M个对象标识分别对应的原始协同操作中,
将文档控制区域包含第一编辑区域的对象标识所对应的原始协同操作,确定为至少两个协
同操作,其中M可以为小于或等于对象标识集合中所包含的对象标识数量的正整数。
[0088] 其中,对象标识集合中的对象标识可以包括但不限于:用户账号、用户姓名、用户编号、用户昵称,文档控制区域可以是指每个对象标识在目标文档中具备编辑权限的区域,
如对象标识1具备对目标文档中的编辑区域1和编辑区域2的编辑权限时,可以将编辑区域1
和编辑区域2看成是对象标识1的文档控制区域;当服务器接收到针对第一编辑区域的所有
原始协同操作中,包括对象标识1对应的原始协同操作时,需要判断对象标识1是否具备编
辑第一编辑区域的权限,若第一编辑区域属于对象标识1对应的文档控制区域,则表示对象
标识1具备编辑第一编辑区域的权限,将对象标识1对应的原始协同操作确定为协同操作;
若第一编辑区域不属于对象标识1对应的文档控制区域,则标识对象标识1不具备编辑第一
编辑区域的权限,可以忽略对象标识1对应的原始协同操作。
[0089] 举例来说,假设目标文档为用于收集员工信息的表格文件,若将目标文档分享至企业群中,则该目标文档对应的对象标识集合可以包括企业群中的所有员工标识,该对象
标识集合中所包含的对象标识数量可以为企业群中的企业员工数量,此时的M可以为小于
或等于企业员工数量的正整数,如企业员工数量为100时,M可以为小于或等于100的正整
数,至少两个协同操作的数量小于或等于M;该目标文档可以包括企业群中每个员工的信息
栏(此处的信息栏可以为目标文档中的一行单元格),每个普通企业员工具备编辑自身信息
栏的权限,而不具备编辑其余企业员工的信息栏的权限,自身信息栏所覆盖的单元格可以
认为是普通企业员工的文档控制区域;每个组长具备编辑所有组员信息栏(包括组长自己)
的权限,所有组员信息栏所覆盖的单元格可以认为是该组长在目标文档中的文档控制区
域;每个部长具备编辑所有部门员工信息栏(包括部长自己)的权限,所有部门员工信息栏
所覆盖的单元格可以认为是该部长在目标文档中的文档控制区域;企业老板具备所有企业
员工信息栏的权限,所有企业员工信息栏所覆盖的单元格可以认为是该企业老板在目标文
档中的文档控制区域。
[0090] 可选的,服务器在获取到针对第一编辑区域的至少两个协同操作后,可以对每个协同操作均进行拆解,得到每个协同操作分别对应的原子操作(atomic operation);其中,
原子操作可以是指不能被更高等级中断抢夺优先的操作,原子操作可以是一个操作步骤,
也可以是多个操作步骤,但是多个操作步骤的顺序不可以被打乱,也不可以被切割而只执
行其中的一部分;原子操作是不可分割的,在执行完毕之前不会被任何其它任务或事件终
端;能够在单条指令中完成的操作都可以认为是“原子操作”。服务器可以分别对至少两个
协同操作进行拆解,得到每个协同操作分别对应的一个或多个协同子操作,根据一个或多
个协同子操作在所属的协同操作中的执行时间顺序,将上述一个或多个协同子操作均转换
为原子操作;一个协同操作可以被拆解为一个原子操作,或者可以被拆解为多个原子操作。
[0091] 可选的,服务器可以获取至少两个协同操作分别在目标文档中所触发的编辑区域集合,统计至少两个编辑区域集合分别对应的编辑区域数量;将编辑区域数量大于数量阈
值的编辑区域集合所属的协同操作,确定为第一协同操作;其中,第一协同操作对应的编辑
区域集合中包括第一编辑区域和第二编辑区域,上述数量阈值可以根据实际需求进行设
置,如数量阈值可以设置为2。可以理解的是,一个协同操作可以被拆解为一个或多个原子
操作,一个原子操作都可以触发一个编辑区域,当一个协同操作所对应的一个或多个原子
操作所触发的编辑区域的数量大于或等于2(此时的数量阈值可以设置为2)时,可以将该协
同操作确定为第一协同操作;将至少两个协同操作中除第一协同操作之外的协同操作,确
定为第二协同操作;换言之,第二协同操作可以是指编辑区域集合中只包含一个编辑区域
的协同操作。如图2所示,用户A的编辑操作“修改第1行第一列的内容为‘a1z9’”所触发的编
辑区域为第1行第一列(单元格A1),该用户A的编辑操作可以认为是第二协同操作;用户B的
编辑操作“将第1行第一列(单元格A1)中的内容剪切到第5行第一列(单元格A5)”所触发的
编辑区域包括第1行第一列(单元格A1)和第5行第一列(单元格A5),该用户B的编辑操作可
以认为是第一协同操作。
[0092] 需要说明的是,本申请实施例可以采用OT算法对至少两个协同操作进行协同冲突处理,在协同冲突处理过程中,首先需要将每个协同操作都转换为原子操作,进而可以基于
原子操作进行协同冲突处理。其中,OT算法可以为双边OT,或者为单边OT。
[0093] 步骤S102,若至少两个协同操作中的第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,则对原子操作i与第二协同操作对应的原子操
作进行冲突合并,得到针对第一编辑区域的第一合并结果;第二编辑区域属于目标文档,第
二协同操作为至少两个协同操作中除第一协同操作之外的协同操作,i和j均为小于或等于
第一协同操作对应的原子操作的数量的正整数。
[0094] 具体的,若至少两个协同操作中的第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域(例如,上述图2所对应实施例中的单元格A5)的原子操作j,则
服务器可以对原子操作i和第二协同操作对应的原子操作进行冲突合并,得到针对第一编
辑区域的第一合并结果。其中,第一合并结果可以是指采用OT算法所得到合并结果,至少两
个协同操作可以划分为第一协同操作和第二协同操作,第一协同操作和第二协同操作均可
以被拆解为一个或多个原子操作;上述原子操作i和原子操作j为第一协同操作中不同的原
子操作,针对同一个编辑区域的所有原子操作都需要进行冲突合并处理。
[0095] 其中,当至少两个协同操作的数量为2,且至少两个协同操作包括一个第一协同操作和一个第二协同操作时,可以将第一协同操作中所包含的针对第一编辑区域的原子操作
(此处针对第一编辑区域的原子操作的数量可以为一个或多个),与第二协同操作所对应的
原子操作(此处第一编辑区域的原子操作的数量可以为一个或多个)进行冲突合并处理,以
得到针对第一编辑区域的第一合并结果。
[0096] 可选的,当第一协同操作的数量为多个,第二协同操作的数量为一个时,可以将多个第一协同操作中针对第一编辑区域的所有原子操作,与一个第二协同操作所对应的所有
原子操作进行冲突合并处理,可以得到针对第一编辑区域的第一合并结果。当然,当第一协
同操作的数量为一个,第二协同操作的数量为多个,或者第一协同操作和第二协同操作的
数量都是多个时,同样可以对第一协同操作和第二协同操作中所包含的针对第一编辑区域
的原子操作进行冲突合并处理,以得到针对第一编辑区域的第一合并结果。一个协同操作
所包含的原子操作可以包括但不限于:合并单元格、添加边框、去除边框、更改字体(例如,
将字体设置为斜体)、更改字体颜色(例如,将字体设置为红色)、删除、插入、复制、剪切、单
元格函数计算(例如,求取平均值、求和等)。
[0097] 步骤S103,根据第一合并结果,获取原子操作i和第二协同操作对应的原子操作中所丢失的操作内容,生成包含操作内容的次原子操作,对原子操作j和次原子操作进行冲突
合并,得到针对第二编辑区域的第二合并结果。
[0098] 具体的,服务器可以将原子操作i和第二协同操作对应的原子操作中,除第一合并结果之外的操作数据确定为丢失的操作内容,进而可以根据丢失的操作内容生成次原子操
作,随后,可以将原子操作j和次原子操作进行冲突合并处理,得到针对第二编辑区域的第
二合并结果,此时的第二合并结果可以认为是上述至少两个协同操作之间的协同操作处理
结果,服务器可以将第一合并结果和第二合并结果返回给至少两个用户终端,以使每个用
户终端都可以在目标文档中,对第一合并结果和第二合并结果进行展示。
[0099] 可选的,在剪切移动场景中,第一协同操作可以包括剪切移动操作,原子操作i可以包括内容删除操作,原子操作j可以包括内容插入操作,第二协同操作对应的原子操作可
以包括内容修改操作;若至少两个协同操作中的剪切移动操作包括针对第一编辑区域的内
容删除操作,以及针对第二编辑区域的内容插入操作,则服务器可以对内容删除操作和内
容修改操作进行冲突合并,得到针对第一编辑区域的第一合并结果为空操作;根据空操作,
可以确定内容删除操作和内容修改操作中所丢失的操作内容为内容修改操作,将内容修改
操作和空操作确定为次原子操作,进而可以对原子操作j和次原子操作进行冲突合并,得到
针对第二编辑区域的第二合并结果。
[0100] 请参见图4,图4是本申请实施例提供的一种协同操作的处理流程图。如图4所示,假设至少两个协同操作的数量为2,且这2个协同操作可以包括用户A的剪切移动操作和用
户B的内容修改操作,该用户A的剪切移动操作可以表示为:剪切编辑区域1(上述第一编辑
区域)至编辑区域2(上述第二编辑区域),用户B的内容修改操作可以表示为:修改编辑区域
1。服务器在接收到上述剪切移动操作和内容修改操作后,可以将剪切移动操作差分为两个
细粒度的原子操作,分别为原子操作i和原子操作j,该原子操作i可以表示为:删除编辑区
域1,原子操作j可以表示为:在编辑区域2的位置插入原来编辑区域1的数据;用户B的内容
修改操作所对应的原子操作t可以表示为:修改编辑区域1。
[0101] 服务器在对剪切用操作和内容修改操作进行冲突合并处理时,首先对原子操作i和原子操作t进行冲突合并,得到针对编辑区域1的第一合并结果,此时的第一合并结果为
空(可以理解为编辑区域1的位置处的数据为空);与此同时,服务器可以得知原子操作i和
原子操作t冲突合并时丢失了原子操作t的修改数据,因此可以将原子操作的修改数据附加
到第一合并结果中,得到一个次原子操作,此时次原子操作可以是指上述原子操作i和原子
操作t进行冲突合并后的产物。进而可以将原子操作j和次原子操作进行冲突合并处理,可
以得到针对编辑区域2的冲突合并结果,即第二合并结果,该第二合并结果也可以是指用户
A的剪切移动操作和用户B的内容修改操作之间的协同冲突处理结果。
[0102] 可选的,在内容复制场景中,第一协同操作可以包括选择性复制操作,原子操作i可以包括内容选择操作,原子操作j可以包括内容插入操作,第二协同操作对应的原子操作
可以包括内容修改操作;若至少两个协同操作中的选择性复制操作包括针对第一编辑区域
的内容选择操作,以及针对第二编辑区域的内容插入操作,则服务器可以对内容选择操作
和内容修改操作进行冲突合并,得到针对第一编辑区域的第一合并结果为修改内容;根据
修改内容,可以确定内容选择操作和内容修改操作中所丢失的操作内容为原始操作内容,
将原始操作内容确定为次原子操作,进而可以对原子操作j和次原子操作进行冲突合并,得
到针对第二编辑区域的第二合并结果;其中,原始操作内容是指内容选择操作所触发的第
一编辑区域中的原始内容,选择性复制操作可以包括但不限于:复制第一编辑区域中的内
容、复制包含所有格式的第一编辑区域。
[0103] 例如,若用户A和用户B同时对目标文档进行操作,用户A对第一编辑区域的协同操作为“将第一编辑区域中的内容1复制到第二编辑区域”,用户B对第一编辑区域的协同操作
为“在第一编辑区域中写入内容2”,则用户A的协同操作可以包括原子操作i(“选中第一编
辑区域中的内容1”)和原子操作j(“在第二编辑区域中插入原来第一编辑区域中的内容
1”),用户B的协同操作所对应的原子操作为“修改第一编辑区域的为内容2”;通过对用户A
的协同操作和用户B的协同操作进行冲突合并处理后,所得到的第一合并结果可以为:修改
第一编辑区域中的内容为内容2,第二合并结果可以为:在第二编辑区域中写入内容2。
[0104] 可选的,服务器可以获取第一编辑区域具有绑定关系的目标对象标识;若接收到N个对象标识对应的第二协同操作中包含目标对象标识对应的第二协同操作,则获取目标对
象标识所关联的预期操作结果;N为小于至少两个协同操作的数量的正整数,如N可以取值
为1,2,……;若第二合并结果和预期操作结果不一致时,将预期操作结果和第二合并结果
均返回至目标对象标识所关联的用户终端,以使目标对象标识所关联的用户终端,在目标
文档中对预期操作结果和第二合并结果进行展示。例如,若第一编辑区域可以用于输入用
户A的个人基本信息,那么与该第一编辑区域具有绑定关系的目标对象标识可以为用户A的
对象标识(例如,用户A的账号、姓名、昵称、编号等),若服务器同时接收到N个对象标识对应
的第二协同操作,且N个第二协同操作中包括用户A对应的第二协同操作,则可以将用户A对
应的第二协同操作的修改结果,确定为第一编辑区域的预期操作结果;当服务器对第一协
同操作与N个第二协同操作进行协同冲突处理后所得到的第二合并结果,与用户A的预期操
作结果不一致时,可以将第二合并结果和预期操作结果一同返回至用户A所使用的用户终
端,此时用户A所使用的用户终端可以在目标文档中,对预期操作结果和第二合并结果进行
展示。
[0105] 本申请实施例中,对于至少两个协同操作的冲突合并处理场景,可以将每个协同操作均拆解为原子操作,执行原子操作之间的冲突合并处理,在原子操作的执行过程中若
存在丢失的操作内容,可以通过引入包含该操作内容的次原子操作,以得到最终的冲突合
并处理结果,这样得到的冲突处理结果可以同时保留至少两个协同操作的更改,使得协同
冲突处理的输出结果符合用户的预期,进而可以提高协同操作处理结果的准确性。
[0106] 请参见图5,图5是本申请实施例提供的一种协同操作处理方法的流程示意图。可以理解地,该协同操作处理方法可以由目标用户终端(例如,上述图1所对应实施例中的用
户终端10a)执行;如图5所示,该协同操作处理方法可以包括以下步骤:
[0107] 步骤S201,向服务器发送针对目标文档的第一协同操作,以使服务器将第一协同操作和第二协同操作拆解为原子操作;第一协同操作和第二协同操作为不同的用户终端所
发送的,第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子
操作j,第二协同操作包括针对第一编辑区域的原子操作,第一编辑区域和第二编辑区域均
属于目标文档。
[0108] 具体的,用户终端通过网页访问目标文档时,可以向目标文档的服务器发送访问请求,服务器在接收到访问请求后,可以对该用户终端的访问权限进行验证,若该用户终端
具备访问目标文档的权限,则可以向该用户终端返回目标文档,以使用户终端可以对服务
器返回的目标文档进行展示;若该用户终端不具备访问目标文档的权限,则服务器可以向
用户终端返回访问失败提示信息。
[0109] 用户可以对用户终端所展示的目标文档进行查看和编辑,当用户在目标文档中触发了两个或两个以上操作,且两个或两个以上操作是针对目标文档中的至少两个编辑区域
时,该用户终端可以将用户所触发的两个或两个以上操作作为第一协同操作,上传至服务
器,此时该用户终端可以称为目标用户终端。当然,对于任何一个可以访问目标文档的用户
终端,在监听到目标文档中的编辑操作时,均可以将监听到的编辑操作上传至服务器。换言
之,服务器除了可以接收到目标用户终端上传的第一协同操作之外,还可以接收其余用户
终端上传的第二协同操作,随后可以将第一协同操作和第二协同操作都拆解为原子操作;
其中,第一协同操作的数量可以为一个或多个,第二协同操作的数量也可以为一个或多个,
每个协同操作都可以是用户对目标文档执行编辑触发操作时,用户终端所产生的编辑操
作;另外,服务器对第一协同操作和第二协同操作之间的协同冲突处理过程,可以参见上述
图3所对应实施例的步骤S101‑步骤S103中的描述,这里不再进行赘述。服务器在得到第一
协同操作和第二协同操作之间的协同冲突处理结果后,可以将协同冲突处理结果返回至目
标客户端,此处的协同冲突处理结果可以包括与第一编辑区域相关联的第一合并处理结
果,以及与第二编辑区域相关联的第二合并处理结果;其中,第一合并结果可以是指服务器
对原子操作i和第二协同操作对应的原子操作进行冲突合并处理后所得到的结果,第二合
并结果可以是指服务器对原子操作j和次原子操作进行冲突合并处理后所得到的结果,次
原子操作可以包括原子操作i和第二协同操作对应的原子操作在冲突合并处理中所丢失的
操作内容,其中,i和j都是小于或等于第一协同操作对应的原子操作的数量的正整数。
[0110] 步骤S202,接收服务器返回的第一合并结果和第二合并结果,在目标文档中显示与第一编辑区域相关联的第一合并结果,以及与第二编辑区域相关联的第二合并结果;第
一合并结果是指原子操作i和第二协同操作对应的原子操作之间的冲突合并结果,第二合
并结果是指原子操作j和次原子操作之间的冲突合并结果,次原子操作是由原子操作i和第
二协同操作对应的原子操作中所丢失的操作内容确定的。
[0111] 具体的,目标用户终端可以接收服务器返回的第一合并结果和第二合并结果,可以在目标文档的第一编辑区域中插入第一合并结果,在第二编辑区域中插入第二合并结
果,如上述图2所示的单元格A1中可以插入第一合并结果(数据为空),在单元格A5中可以插
入第二合并结果“a1z9”。
[0112] 可选的,在剪切移动场景中,第一协同操作可以包括剪切移动操作;目标用户终端接收到服务器返回的第一合并结果和第二合并结果后,可以在目标文档的第一编辑区域中
插入第一合并结果;显示与第二编辑区域相关联的第一候选内容列表,该第一候选内容列
表包括第二合并结果和第一协同操作所触发的原始操作内容;当用户选择第一候选内容列
表中的原始操作内容时,目标用户终端可以响应针对第一候选内容列表的选取操作,在第
二编辑区域中插入选取操作所触发的原始操作内容。换言之,在剪切移动场景中,若用户实
际想要剪切的内容为第一编辑区域中原来的数据,则可以选择将原始操作内容插入至第二
编辑区域;若用户实际想要剪切的内容为第一编辑区域中的数据,则可以选择将第二合并
结果插入至第二编辑区域。用户可以根据实际需求来选择插入的数据,可以确保插入内容
的准确性。
[0113] 请参见图6,图6是本申请实施例提供的一种目标文档中的剪切移动场景示意图。如图6所示,基于前述图2所对应的实施例,用户终端20b(即目标用户终端)在接收到服务器
10d返回的第一合并结果(数据为空)和第二合并结果(“a1z9”)后,可以将目标文档中的单
元格A1显示为空,并显示第一候选内容列表20c,该第一候选内容列表20c可以包括第二合
并结果和单元格A1的原始内容“a1a1”。当用户选择原始内容“a1a1”时,可以在单元格A5中
插入“a1a1”并进行展示;当用户选择第二合并结果“a1z9”时,可以在单元格A5中插入
“a1z9”并进行展示。
[0114] 可选的,在内容复制场景中,第一协同操作包括选择性复制操作;目标用户终端接收到服务器返回的第一合并结果和第二合并结果后,可以在目标文档的第一编辑区域中插
入第一合并结果;显示与第二编辑区域相关联的第二候选内容列表,该第二候选内容列表
包括第一合并结果和第二合并结果;当用户选择第一候选内容列表中的第一合并结果时,
目标用户终端可以响应针对第二候选内容列表的选取操作,在第二编辑区域中插入选取操
作所触发的第一合并结果。其中,此处的第一合并结果为基于第二协同操作对第一编辑区
域进行修改后的内容,第二合并结果为第一编辑区域未进行修改的原始内容,在目标文档
中的呈现方式可以如上述图6所示,这里不再进行赘述。
[0115] 可选的,当监听到第一编辑区域被操作时,获取针对第一编辑区域的编辑对象标识,在第一编辑区域对应的关联区域中显示编辑对象标识,其中,编辑对象标识可以是指正
在编辑第一编辑区域的对象标识。请参见图7,图7是本申请实施例提供的一种目标文档的
编辑显示界面图。如图7所示,当目标用户终端监听到用户小A、小B以及小C同时编辑单元格
A5时,可以在目标文档的区域30b中显示小A、小B以及小C。
[0116] 本申请实施例中,对于至少两个协同操作的冲突合并处理场景,可以将每个协同操作均拆解为原子操作,执行原子操作之间的冲突合并处理,在原子操作的执行过程中若
存在丢失的操作内容,可以通过引入包含该操作内容的次原子操作,以得到最终的冲突合
并处理结果,这样得到的冲突处理结果可以同时保留至少两个协同操作的更改,使得协同
冲突处理的输出结果符合用户的预期,进而可以提高协同操作处理结果的准确性;可以在
目标文档中为用户提供可选择的插入内容,使得用户可以根据用户意图选择正确的插入内
容,进而可以确保插入内容的准确性,增强针对目标文档的处理效率。
[0117] 请参见图8,图8是本申请实施例提供的一种协同操作处理装置的结构示意图。可以理解地,该协同操作处理装置可以应用在服务器中,如图1所对应实施例中的服务器10d;
如图8所示,该协同操作处理装置1可以包括:拆解模块11,第一冲突合并模块12,第二冲突
合并模块13;
[0118] 拆解模块11,用于获取与目标文档中的第一编辑区域相关联的至少两个协同操作,对至少两个协同操作进行拆解,得到至少两个协同操作分别对应的原子操作;
[0119] 第一冲突合并模块12,用于若至少两个协同操作中的第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,则对原子操作i与第二协同操
作对应的原子操作进行冲突合并,得到针对第一编辑区域的第一合并结果;第二编辑区域
属于目标文档,第二协同操作为至少两个协同操作中除第一协同操作之外的协同操作,i和
j均为小于或等于第一协同操作对应的原子操作的数量的正整数;
[0120] 第二冲突合并模块13,用于根据第一合并结果,获取原子操作i和第二协同操作对应的原子操作中所丢失的操作内容,生成包含操作内容的次原子操作,对原子操作j和次原
子操作进行冲突合并,得到针对第二编辑区域的第二合并结果。
[0121] 其中,拆解模块11,第一冲突合并模块12,第二冲突合并模块13的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101‑步骤S103,这里不再进行赘述。
[0122] 在一个或多个实施方式中,拆解模块11可以包括:区域分配单元111,操作权限确定单元112,操作拆解单元113,操作转换单元114;
[0123] 区域分配单元111,用于获取目标文档对应的对象标识集合,在目标文档中,为对象标识集合中的每个对象标识分别分配文档控制区域;
[0124] 操作权限确定单元112,用于若接收到M个对象标识所关联的用户终端分别上传的针对第一编辑区域的原始协同操作,则在M个对象标识分别对应的原始协同操作中,将文档
控制区域包含第一编辑区域的对象标识所对应的原始协同操作,确定为至少两个协同操
作;M为小于或等于对象标识集合中所包含的对象标识数量的正整数。
[0125] 操作拆解单元113,用于分别对至少两个协同操作进行拆解,得到每个协同操作分别对应的一个或多个协同子操作;
[0126] 操作转换单元114,用于根据一个或多个协同子操作在所属的协同操作中的执行时间顺序,将一个或多个协同子操作均转换为原子操作。
[0127] 其中,区域分配单元111,操作权限确定单元112,操作拆解单元113,操作转换单元114的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘
述。
[0128] 在一个或多个实施方式中,该协同操作处理装置1可以包括:编辑区域数量统计模块14,第一协同操作确定模块15;
[0129] 编辑区域数量统计模块14,用于获取至少两个协同操作分别在目标文档中所触发的编辑区域集合,统计至少两个编辑区域集合分别对应的编辑区域数量;
[0130] 第一协同操作确定模块15,用于将编辑区域数量大于数量阈值的编辑区域集合所属的协同操作,确定为第一协同操作;第一协同操作对应的编辑区域集合中包括第一编辑
区域和第二编辑区域。
[0131] 其中,编辑区域数量统计模块14,第一协同操作确定模块15的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘述。
[0132] 在一个或多个实施方式中,第一协同操作包括剪切移动操作,原子操作i包括内容删除操作,原子操作j包括内容插入操作,第二协同操作对应的原子操作包括内容修改操
作;
[0133] 第一冲突合并模块12具体用于:
[0134] 若至少两个协同操作中的剪切移动操作包括针对第一编辑区域的内容删除操作,以及针对第二编辑区域的内容插入操作,则对内容删除操作和内容修改操作进行冲突合
并,得到针对第一编辑区域的第一合并结果为空操作;
[0135] 则第二冲突合并模块13用于:
[0136] 根据空操作,确定内容删除操作和内容修改操作中所丢失的操作内容为内容修改操作,将内容修改操作和空操作确定为次原子操作。
[0137] 在一个或多个实施方式中,第一协同操作包括选择性复制操作,原子操作i包括内容选择操作,原子操作j包括内容插入操作,第二协同操作对应的原子操作包括内容修改操
作;
[0138] 第一冲突合并模块12具体用于:
[0139] 若至少两个协同操作中的选择性复制操作包括针对第一编辑区域的内容选择操作,以及针对第二编辑区域的内容插入操作,则对内容选择操作和内容修改操作进行冲突
合并,得到针对第一编辑区域的第一合并结果为修改内容;
[0140] 则第二冲突合并模块13用于:
[0141] 根据修改内容,确定内容选择操作和内容修改操作中所丢失的操作内容为原始操作内容,将原始操作内容确定为次原子操作;原始操作内容是指内容选择操作所触发的第
一编辑区域中的原始内容。
[0142] 其中,第一冲突合并模块12,第二冲突合并模块13的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
[0143] 在一个或多个实施方式中,该协同操作处理装置1可以包括:标识获取模块16,预期结果获取模块17,结果返回模块18;
[0144] 标识获取模块16,用于获取第一编辑区域具有绑定关系的目标对象标识;
[0145] 预期结果获取模块17,用于若接收到N个对象标识对应的第二协同操作中包含目标对象标识对应的第二协同操作,则获取目标对象标识所关联的预期操作结果;N为小于至
少两个协同操作的数量的正整数;
[0146] 结果返回模块18,用于若第二合并结果和预期操作结果不一致时,将预期操作结果和第二合并结果均返回至目标对象标识所关联的用户终端,以使目标对象标识所关联的
用户终端,在目标文档中对预期操作结果和第二合并结果进行展示。
[0147] 其中,标识获取模块16,预期结果获取模块17,结果返回模块18的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
[0148] 本申请实施例中,对于至少两个协同操作的冲突合并处理场景,可以将每个协同操作均拆解为原子操作,执行原子操作之间的冲突合并处理,在原子操作的执行过程中若
存在丢失的操作内容,可以通过引入包含该操作内容的次原子操作,以得到最终的冲突合
并处理结果,这样得到的冲突处理结果可以同时保留至少两个协同操作的更改,使得协同
冲突处理的输出结果符合用户的预期,进而可以提高协同操作处理结果的准确性。
[0149] 请参见图9,图9是本申请实施例提供的一种协同操作处理装置的结构示意图。可以理解地,该协同操作处理装置可以应用在用户终端中,如图1所对应实施例中的用户终端
10a;如图9所示,该协同操作处理装置2可以包括:操作发送模块21,合并结果接收模块22;
[0150] 操作发送模块21,用于向服务器发送针对目标文档的第一协同操作,以使服务器将第一协同操作和第二协同操作拆解为原子操作;第一协同操作和第二协同操作为不同的
用户终端所发送的,第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑
区域的原子操作j,第二协同操作包括针对第一编辑区域的原子操作,第一编辑区域和第二
编辑区域均属于目标文档,i和j均为小于或等于第一协同操作对应的原子操作的数量的正
整数;
[0151] 合并结果接收模块22,用于接收服务器返回的第一合并结果和第二合并结果,在目标文档中显示与第一编辑区域相关联的第一合并结果,以及与第二编辑区域相关联的第
二合并结果;第一合并结果是指原子操作i和第二协同操作对应的原子操作之间的冲突合
并结果,第二合并结果是指原子操作j和次原子操作之间的冲突合并结果,次原子操作是由
原子操作i和第二协同操作对应的原子操作中所丢失的操作内容确定的。
[0152] 其中,操作发送模块21,合并结果接收模块22的具体功能实现方式可以参见上述图5所对应实施例中的步骤S201‑步骤S202,这里不再进行赘述。
[0153] 在一个或多个实施方式中,合并结果接收模块22具体用于:
[0154] 接收服务器返回的第一合并结果和第二合并结果,在目标文档的第一编辑区域中插入第一合并结果,在第二编辑区域中插入第二合并结果。
[0155] 在一个或多个实施方式中,第一协同操作包括剪切移动操作;
[0156] 合并结果接收模块22包括:第一内容插入单元221,第一列表显示单元222,第二内容插入单元223;
[0157] 第一内容插入单元221,用于接收服务器返回的第一合并结果和第二合并结果,在目标文档的第一编辑区域中插入第一合并结果;
[0158] 第一列表显示单元222,用于显示与第二编辑区域相关联的第一候选内容列表;第一候选内容列表包括第二合并结果和第一协同操作所触发的原始操作内容;
[0159] 第二内容插入单元223,用于响应针对第一候选内容列表的选取操作,在第二编辑区域中插入选取操作所触发的原始操作内容。
[0160] 在一个或多个实施方式中,第一协同操作包括选择性复制操作;
[0161] 合并结果接收模块22包括:第一内容插入单元221,第二列表显示单元224,第三内容插入单元225;
[0162] 第一内容插入单元221,用于接收服务器返回的第一合并结果和第二合并结果,在目标文档的第一编辑区域中插入第一合并结果;
[0163] 第二列表显示单元224,用于显示与第二编辑区域相关联的第二候选内容列表;第二候选内容列表包括第一合并结果和第二合并结果;
[0164] 第三内容插入单元225,用于响应针对第二候选内容列表的选取操作,在第二编辑区域中插入选取操作所触发的第一合并结果。
[0165] 其中,第一内容插入单元221,第一列表显示单元222,第二内容插入单元223,第二列表显示单元224,第三内容插入单元225的具体功能实现方式可以参见上述图5所对应实
施例中的步骤S202,这里不再进行赘述。
[0166] 在一个或多个实施方式中,该协同操作处理装置2还可以包括:对象标识显示模块23;
[0167] 对象标识显示模块23,用于当监听到第一编辑区域被操作时,获取针对第一编辑区域的编辑对象标识,在第一编辑区域对应的关联区域中显示编辑对象标识。
[0168] 其中,对象标识显示模块23的具体功能实现方式可以参见上述图5所对应实施例中的步骤S202,这里不再进行赘述。
[0169] 本申请实施例中,对于至少两个协同操作的冲突合并处理场景,可以将每个协同操作均拆解为原子操作,执行原子操作之间的冲突合并处理,在原子操作的执行过程中若
存在丢失的操作内容,可以通过引入包含该操作内容的次原子操作,以得到最终的冲突合
并处理结果,这样得到的冲突处理结果可以同时保留至少两个协同操作的更改,使得协同
冲突处理的输出结果符合用户的预期,进而可以提高协同操作处理结果的准确性;可以在
目标文档中为用户提供可选择的插入内容,使得用户可以根据用户意图选择正确的插入内
容,进而可以确保插入内容的准确性,增强针对目标文档的处理效率。
[0170] 请参见图10,图10是本申请实施例提供的一种计算机设备的结构示意图。如图10所示,该计算机设备1000可以为用户终端,例如,上述图1所对应实施例中的用户终端10a,
还可以为服务器,例如,上述图1所对应实施例中的服务器10d,这里将不对其进行限制。为
便于理解,本申请以计算机设备为用户终端为例,该计算机设备1000可以包括:处理器
1001,网络接口1004和存储器1005,此外,该计算机设备1000还可以包括:用户接口1003,和
至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用
户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的
有线接口、无线接口(如WI‑FI接口)。存储器1004可以是高速RAM存储器,也可以是非不稳定
的存储器(non‑volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是
至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机可读存储介
质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程
序。
[0171] 其中,该计算机设备1000中的网络接口1004还可以提供网络通讯功能,且可选用户接口1003还可以包括显示屏(Display)、键盘(Keyboard)。在图10所示的计算机设备1000
中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;
而处理器1001可以用于调用存储器1005中存储的设备控制应用程序。
[0172] 在一个或多个实施例中,计算机设备1000可以是图1所示的用户终端10a;该计算机设备可以通过处理器1001来实现:
[0173] 向服务器发送针对目标文档的第一协同操作,以使服务器将第一协同操作和第二协同操作拆解为原子操作;第一协同操作和第二协同操作为不同的用户终端所发送的,第
一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,第
二协同操作包括针对第一编辑区域的原子操作,第一编辑区域和第二编辑区域均属于目标
文档,i和j均为小于或等于第一协同操作对应的原子操作的数量的正整数;
[0174] 接收服务器返回的第一合并结果和第二合并结果,在目标文档中显示与第一编辑区域相关联的第一合并结果,以及与第二编辑区域相关联的第二合并结果;第一合并结果
是指原子操作i和第二协同操作对应的原子操作之间的冲突合并结果,第二合并结果是指
原子操作j和次原子操作之间的冲突合并结果,次原子操作是由原子操作i和第二协同操作
对应的原子操作中所丢失的操作内容确定的。
[0175] 在一个或多个实施例中,计算机设备1000可以是图1所示的服务器10d,此时的计算机设备所包含的用户接口1003中可以不包含显示屏(Display)、键盘(Keyboard);该计算
机设备可以通过处理器1001来实现:
[0176] 获取与目标文档中的第一编辑区域相关联的至少两个协同操作,对至少两个协同操作进行拆解,得到至少两个协同操作分别对应的原子操作;
[0177] 若至少两个协同操作中的第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,则对原子操作i与第二协同操作对应的原子操作进行冲
突合并,得到针对第一编辑区域的第一合并结果;第二编辑区域属于目标文档,第二协同操
作为至少两个协同操作中除第一协同操作之外的协同操作,i和j均为小于或等于第一协同
操作对应的原子操作的数量的正整数;
[0178] 根据第一合并结果,获取原子操作i和第二协同操作对应的原子操作中所丢失的操作内容,生成包含操作内容的次原子操作,对原子操作j和次原子操作进行冲突合并,得
到针对第二编辑区域的第二合并结果。
[0179] 应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3和图5任一个所对应实施例中对协同操作处理方法的描述,也可执行前文图7所对应实施例中对协同操
作处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘
述。
[0180] 此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的协同操作处理装置1所执行的计算机程序,且计算
机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3和图5任一个所对应实
施例中对协同操作处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的
有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披
露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署在一个计算
设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通
过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算
设备可以组成区块链系统。
[0181] 此外,需要说明的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或者计算机程序可以包括计算机指令,该计算机指令可以存储在计算机
可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器
可以执行该计算机指令,使得该计算机设备执行前文图3和图5任一个所对应实施例中对协
同操作处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描
述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披
露的技术细节,请参照本申请方法实施例的描述。
[0182] 需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因
为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该
知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申
请所必须的。
[0183] 本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0184] 本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
[0185] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质
中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光
盘、只读存储器(Read‑Only Memory,ROM)或随机存储器(Random Access Memory,RAM)等。
[0186] 以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。