协同操作处理方法、装置、设备以及介质转让专利
申请号 : CN202110867959.5
文献号 : CN113312885B
文献日 : 2021-09-28
发明人 : 邓彪 , 李争
申请人 : 腾讯科技(深圳)有限公司
摘要 :
权利要求 :
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任一项所述的方法。
说明书 :
协同操作处理方法、装置、设备以及介质
技术领域
背景技术
个版本进行操作时,需要根据多个用户所对应的操作时间的先后顺序,依次对在线文档进
行修改;然而,当在线文档中用户A和用户B的操作无法从操作时间上进行区分时,容易造成
两个用户操作之间的逻辑混乱,进而导致在线文档的修改结果出现错误。
发明内容
突合并,得到针对第一编辑区域的第一合并结果;第二编辑区域属于目标文档,第二协同操
作为至少两个协同操作中除第一协同操作之外的协同操作,i和j均为小于或等于第一协同
操作对应的原子操作的数量的正整数;
到针对第二编辑区域的第二合并结果。
一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,第
二协同操作包括针对第一编辑区域的原子操作,第一编辑区域和第二编辑区域均属于目标
文档,i和j均为小于或等于第一协同操作对应的原子操作的数量的正整数;
是指原子操作i和第二协同操作对应的原子操作之间的冲突合并结果,第二合并结果是指
原子操作j和次原子操作之间的冲突合并结果,次原子操作是由原子操作i和第二协同操作
对应的原子操作中所丢失的操作内容确定的。
对应的原子操作进行冲突合并,得到针对第一编辑区域的第一合并结果;第二编辑区域属
于目标文档,第二协同操作为至少两个协同操作中除第一协同操作之外的协同操作,i和j
均为小于或等于第一协同操作对应的原子操作的数量的正整数;
操作进行冲突合并,得到针对第二编辑区域的第二合并结果。
制区域包含第一编辑区域的对象标识所对应的原始协同操作,确定为至少两个协同操作;M
为小于或等于对象标识集合中所包含的对象标识数量的正整数。
域和第二编辑区域。
并,得到针对第一编辑区域的第一合并结果为空操作;
合并,得到针对第一编辑区域的第一合并结果为修改内容;
一编辑区域中的原始内容。
两个协同操作的数量的正整数;
户终端,在目标文档中对预期操作结果和第二合并结果进行展示。
户终端所发送的,第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区
域的原子操作j,第二协同操作包括针对第一编辑区域的原子操作,第一编辑区域和第二编
辑区域均属于目标文档,i和j均为小于或等于第一协同操作对应的原子操作的数量的正整
数;
合并结果;第一合并结果是指原子操作i和第二协同操作对应的原子操作之间的冲突合并
结果,第二合并结果是指原子操作j和次原子操作之间的冲突合并结果,次原子操作是由原
子操作i和第二协同操作对应的原子操作中所丢失的操作内容确定的。
执行本申请实施例中上述一方面提供的方法。
执行本申请实施例中上述一方面提供的方法。
机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使
得该计算机设备执行上述一方面提供的方法。
第一编辑区域的原子操作i和针对第二编辑区域的原子操作j,则对原子操作i和第二协同
操作的原子操作进行冲突合并,得到针对第一编辑区域的第一合并结果,其中第二编辑区
域属于目标文档,第二协同操作为至少两个协同操作中除第一协同操作之外的协同操作,i
和j均为正整数;进而可以根据第一合并结果,从原子操作i和第二协同操作所对应的原子
操作中所丢失的操作内容,生成包含该操作内容的次原子操作,将原子操作j和次原子操作
进行冲突合并,可以得到针对第二编辑区域的第二合并结果,此时的第二合并结果可以为
上述至少两个协同操作之间的冲突合并处理结果。可见,在至少两个协同操作的处理场景
中,可以将每个协同操作均拆解为原子操作,执行原子操作之间的冲突合并处理,在原子操
作的执行过程中若存在丢失的操作内容,可以通过引入包含该操作内容的次原子操作,以
得到最终的冲突合并处理结果,这样得到的冲突处理结果可以同时保留至少两个协同操作
的更改,进而可以提高协同操作处理结果的准确性。
附图说明
申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
具体实施方式
本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本申请保护的范围。
式类型的文件)、表格(例如,.xls、.xlsx等格式类型的文件)、演示文稿(例如,.ppt、.pptx
等格式类型的文件)等文件,在线文档可以支持多人实时协同操作。
其中,同一个在线文档可以对应不同的版本,针对同一个版本的数据编辑操作都需要进行
冲突处理。
处的协同冲突处理也可以称为冲突合并处理;其中,OT算法可以是指一类技术,而不是具体
的算法,其思路为:将编辑进行操作(Operation)的拆分,并对这些操作进行转换
(transform);该转换是OT算法的核心,而转换(transform)的核心在于如何对多个对象的
编辑进行拆分,具体应该将编辑拆分成哪些操作以及转换算法都是可以自定义的,因此OT
算法可以灵活地支持各种协同编辑应用,比如非文本类的编辑(例如,图的编辑、表格的编
辑等)。
用户终端,这里不对用户终端的数量进行限制。如图1所示,该用户终端集群可以具体包括
用户终端10a、用户终端10b以及用户终端10c等。其中,服务器10d可以是独立的物理服务
器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云
数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、
以及大数据和人工智能平台等基础云计算服务的云服务器。用户终端10a、用户终端10b以
及用户终端10c等均可以包括:智能手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设
备(mobile internet device,MID)以及台式电脑等具有在线文档编辑功能的终端。如图1
所示,用户终端10a、用户终端10b以及用户终端10c等可以分别与服务器10d进行网络连接,
以便于每个用户终端可以通过该网络连接与服务器10d之间进行数据交互。
所对应的服务器10d可以获取多个用户终端的编辑,并对多个用户终端的编辑数据进行协
同冲突处理,以保留多个用户终端对同一个在线文档的修改。例如,若图1中的用户终端
10a、用户终端10b以及用户终端10c对在线文档的同一个版本进行编辑,则服务器10d在接
收到用户终端10a、用户终端10b以及用户终端10c的编辑数据后,需要对用户终端10a、用户
终端10b以及用户终端10c的编辑数据进行协同冲突处理,并在多个用户终端所编辑的区域
中输出协同冲突处理后的结果。
户终端20a和用户终端20b都可以是上述图1所示的用户终端集群中的任一个用户终端,用
户终端20a可以为用户A所使用的终端设备,用户终端20b可以为用户B所使用的终端设备。
用户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。
‘a1z9’”,即用户A的编辑操作可以在用户终端20a中产生一次编辑;同理,可以将用户B的编
辑操作拆解为“删除第1行第一列”和“在第5行第一列的位置插入原来第1行第一列的数据”
两个操作,即用户B的编辑操作可以在用户终端20b中产生两次编辑。
操作进行冲突合并,合并完成后的第一合并结果可以表示为:空操作;在上述冲突合并处理
过程中,可以发现丢失了用户A的编辑操作“修改第1行第一列的内容为‘a1z9’”,因此可以
根据丢失的操作内容和第一合并结果,生成一个次原子操作;随后,可以将次原子操作和用
户B的“在第5行第一列的位置插入原来第1行第一列的数据”操作进行冲突合并,合并完成
后的第二合并结果可以为:在第5行第一列的位置插入内容“a1z9”。服务器10d可以将第二
合并结果下发至用户终端20a和用户终端20b,用户终端20a和用户终端20b在接收到服务器
10d下发的第二合并结果后,在第1行第一列中显示第一合并结果(显示的内容为空),在第5
行第一列中插入内容“a1z9”。本申请实施例中,可以引入包含所丢失的操作内容的次原子
操作,以同时保留多个用户的编辑操作,进而可以提高协同操作处理结果的准确性。
10d)执行;如图3所示,该协同操作处理方法可以包括以下步骤:
服务器可以获取至少两个用户终端分别对应的协同操作。其中,目标文档可以为文本、表
格、演示文稿等类型的在线文档的同一个版本,每个用户终端都可以通过浏览器网页、应用
程序、小程序等方式查看和编辑目标文档,该目标文档可以包括一个或多个编辑区域,如编
辑区域可以为一张演示文稿、一个表格文件中的单元格、一个文本页面、一个文本编辑位置
(例如,文本文件中第一页第一行)、表格文件中的一个子表等。
时服务器可以根据该用户终端提交的编辑操作对目标文档进行修改,并将修改后的内容下
发至各个用户终端,以使各个用户终端展示修改后的目标文档。当多个用户终端的持有用
户都对目标文档中的第一编辑区域执行编辑操作时,多个用户终端都可以将各自用户的编
辑操作提交至服务器;由于多个用户终端的持有用户都是对第一编辑区域进行编辑的,因
此多个用户终端所提交的编辑操作之间可能存在冲突,需要服务器对接收到的所有编辑操
作进行冲突合并处理,以保留至少两个用户终端对目标文档的操作。在冲突合并处理场景
中,用户终端向服务器所提交的编辑操作可以称为协同操作,例如:多个用户同时编辑目标
文档时,每个用户对目标文档的编辑操作均可以称为协同操作。
个协同操作可以是至少两个用户终端通过不同的方式所提交的,例如:至少两个用户终端
中,有些用户终端通过浏览器进行提交,有些用户终端通过应用程序进行提交等。举例来
说,用户终端1在应用程序中查看并编辑目标文档时,监听到目标文档中的协同操作1,进而
可以将协同操作1提交至服务器;用户终端2在小程序中查看并编辑目标文档时,监听到目
标文档中的协同操作2,进而可以将协同操作2提交至服务器;用户终端3在浏览器中查看并
编辑目标文档时,监听到目标文档中的协同操作3,进而可以将协同操作3提交至服务器;用
户终端4在应用程序中查看并编辑目标文档时,监听到目标文档中的协同操作4,进而可以
将协同操作4提交至服务器;此时的服务器可以接收到各个用户终端所提交的协同操作(包
括协同操作1、协同操作2、协同操作3以及协同操作4),并对接收到的4个协同操作进行冲突
合并处理。
中的编辑区域3的权限,不具备编辑目标文档中的编辑区域1和编辑区域2的权限。服务器可
以获取目标文档对应的对象标识集合,在该目标文档中,可以为对象标识集合中的每个对
象标识分别分配文档控制区域;若服务器接收到M个对象标识所关联的用户终端分别上传
的针对第一编辑区域的原始协同操作,则可以在M个对象标识分别对应的原始协同操作中,
将文档控制区域包含第一编辑区域的对象标识所对应的原始协同操作,确定为至少两个协
同操作,其中M可以为小于或等于对象标识集合中所包含的对象标识数量的正整数。
如对象标识1具备对目标文档中的编辑区域1和编辑区域2的编辑权限时,可以将编辑区域1
和编辑区域2看成是对象标识1的文档控制区域;当服务器接收到针对第一编辑区域的所有
原始协同操作中,包括对象标识1对应的原始协同操作时,需要判断对象标识1是否具备编
辑第一编辑区域的权限,若第一编辑区域属于对象标识1对应的文档控制区域,则表示对象
标识1具备编辑第一编辑区域的权限,将对象标识1对应的原始协同操作确定为协同操作;
若第一编辑区域不属于对象标识1对应的文档控制区域,则标识对象标识1不具备编辑第一
编辑区域的权限,可以忽略对象标识1对应的原始协同操作。
标识集合中所包含的对象标识数量可以为企业群中的企业员工数量,此时的M可以为小于
或等于企业员工数量的正整数,如企业员工数量为100时,M可以为小于或等于100的正整
数,至少两个协同操作的数量小于或等于M;该目标文档可以包括企业群中每个员工的信息
栏(此处的信息栏可以为目标文档中的一行单元格),每个普通企业员工具备编辑自身信息
栏的权限,而不具备编辑其余企业员工的信息栏的权限,自身信息栏所覆盖的单元格可以
认为是普通企业员工的文档控制区域;每个组长具备编辑所有组员信息栏(包括组长自己)
的权限,所有组员信息栏所覆盖的单元格可以认为是该组长在目标文档中的文档控制区
域;每个部长具备编辑所有部门员工信息栏(包括部长自己)的权限,所有部门员工信息栏
所覆盖的单元格可以认为是该部长在目标文档中的文档控制区域;企业老板具备所有企业
员工信息栏的权限,所有企业员工信息栏所覆盖的单元格可以认为是该企业老板在目标文
档中的文档控制区域。
原子操作可以是指不能被更高等级中断抢夺优先的操作,原子操作可以是一个操作步骤,
也可以是多个操作步骤,但是多个操作步骤的顺序不可以被打乱,也不可以被切割而只执
行其中的一部分;原子操作是不可分割的,在执行完毕之前不会被任何其它任务或事件终
端;能够在单条指令中完成的操作都可以认为是“原子操作”。服务器可以分别对至少两个
协同操作进行拆解,得到每个协同操作分别对应的一个或多个协同子操作,根据一个或多
个协同子操作在所属的协同操作中的执行时间顺序,将上述一个或多个协同子操作均转换
为原子操作;一个协同操作可以被拆解为一个原子操作,或者可以被拆解为多个原子操作。
值的编辑区域集合所属的协同操作,确定为第一协同操作;其中,第一协同操作对应的编辑
区域集合中包括第一编辑区域和第二编辑区域,上述数量阈值可以根据实际需求进行设
置,如数量阈值可以设置为2。可以理解的是,一个协同操作可以被拆解为一个或多个原子
操作,一个原子操作都可以触发一个编辑区域,当一个协同操作所对应的一个或多个原子
操作所触发的编辑区域的数量大于或等于2(此时的数量阈值可以设置为2)时,可以将该协
同操作确定为第一协同操作;将至少两个协同操作中除第一协同操作之外的协同操作,确
定为第二协同操作;换言之,第二协同操作可以是指编辑区域集合中只包含一个编辑区域
的协同操作。如图2所示,用户A的编辑操作“修改第1行第一列的内容为‘a1z9’”所触发的编
辑区域为第1行第一列(单元格A1),该用户A的编辑操作可以认为是第二协同操作;用户B的
编辑操作“将第1行第一列(单元格A1)中的内容剪切到第5行第一列(单元格A5)”所触发的
编辑区域包括第1行第一列(单元格A1)和第5行第一列(单元格A5),该用户B的编辑操作可
以认为是第一协同操作。
原子操作进行协同冲突处理。其中,OT算法可以为双边OT,或者为单边OT。
作进行冲突合并,得到针对第一编辑区域的第一合并结果;第二编辑区域属于目标文档,第
二协同操作为至少两个协同操作中除第一协同操作之外的协同操作,i和j均为小于或等于
第一协同操作对应的原子操作的数量的正整数。
服务器可以对原子操作i和第二协同操作对应的原子操作进行冲突合并,得到针对第一编
辑区域的第一合并结果。其中,第一合并结果可以是指采用OT算法所得到合并结果,至少两
个协同操作可以划分为第一协同操作和第二协同操作,第一协同操作和第二协同操作均可
以被拆解为一个或多个原子操作;上述原子操作i和原子操作j为第一协同操作中不同的原
子操作,针对同一个编辑区域的所有原子操作都需要进行冲突合并处理。
(此处针对第一编辑区域的原子操作的数量可以为一个或多个),与第二协同操作所对应的
原子操作(此处第一编辑区域的原子操作的数量可以为一个或多个)进行冲突合并处理,以
得到针对第一编辑区域的第一合并结果。
原子操作进行冲突合并处理,可以得到针对第一编辑区域的第一合并结果。当然,当第一协
同操作的数量为一个,第二协同操作的数量为多个,或者第一协同操作和第二协同操作的
数量都是多个时,同样可以对第一协同操作和第二协同操作中所包含的针对第一编辑区域
的原子操作进行冲突合并处理,以得到针对第一编辑区域的第一合并结果。一个协同操作
所包含的原子操作可以包括但不限于:合并单元格、添加边框、去除边框、更改字体(例如,
将字体设置为斜体)、更改字体颜色(例如,将字体设置为红色)、删除、插入、复制、剪切、单
元格函数计算(例如,求取平均值、求和等)。
合并,得到针对第二编辑区域的第二合并结果。
作,随后,可以将原子操作j和次原子操作进行冲突合并处理,得到针对第二编辑区域的第
二合并结果,此时的第二合并结果可以认为是上述至少两个协同操作之间的协同操作处理
结果,服务器可以将第一合并结果和第二合并结果返回给至少两个用户终端,以使每个用
户终端都可以在目标文档中,对第一合并结果和第二合并结果进行展示。
以包括内容修改操作;若至少两个协同操作中的剪切移动操作包括针对第一编辑区域的内
容删除操作,以及针对第二编辑区域的内容插入操作,则服务器可以对内容删除操作和内
容修改操作进行冲突合并,得到针对第一编辑区域的第一合并结果为空操作;根据空操作,
可以确定内容删除操作和内容修改操作中所丢失的操作内容为内容修改操作,将内容修改
操作和空操作确定为次原子操作,进而可以对原子操作j和次原子操作进行冲突合并,得到
针对第二编辑区域的第二合并结果。
户B的内容修改操作,该用户A的剪切移动操作可以表示为:剪切编辑区域1(上述第一编辑
区域)至编辑区域2(上述第二编辑区域),用户B的内容修改操作可以表示为:修改编辑区域
1。服务器在接收到上述剪切移动操作和内容修改操作后,可以将剪切移动操作差分为两个
细粒度的原子操作,分别为原子操作i和原子操作j,该原子操作i可以表示为:删除编辑区
域1,原子操作j可以表示为:在编辑区域2的位置插入原来编辑区域1的数据;用户B的内容
修改操作所对应的原子操作t可以表示为:修改编辑区域1。
空(可以理解为编辑区域1的位置处的数据为空);与此同时,服务器可以得知原子操作i和
原子操作t冲突合并时丢失了原子操作t的修改数据,因此可以将原子操作的修改数据附加
到第一合并结果中,得到一个次原子操作,此时次原子操作可以是指上述原子操作i和原子
操作t进行冲突合并后的产物。进而可以将原子操作j和次原子操作进行冲突合并处理,可
以得到针对编辑区域2的冲突合并结果,即第二合并结果,该第二合并结果也可以是指用户
A的剪切移动操作和用户B的内容修改操作之间的协同冲突处理结果。
可以包括内容修改操作;若至少两个协同操作中的选择性复制操作包括针对第一编辑区域
的内容选择操作,以及针对第二编辑区域的内容插入操作,则服务器可以对内容选择操作
和内容修改操作进行冲突合并,得到针对第一编辑区域的第一合并结果为修改内容;根据
修改内容,可以确定内容选择操作和内容修改操作中所丢失的操作内容为原始操作内容,
将原始操作内容确定为次原子操作,进而可以对原子操作j和次原子操作进行冲突合并,得
到针对第二编辑区域的第二合并结果;其中,原始操作内容是指内容选择操作所触发的第
一编辑区域中的原始内容,选择性复制操作可以包括但不限于:复制第一编辑区域中的内
容、复制包含所有格式的第一编辑区域。
为“在第一编辑区域中写入内容2”,则用户A的协同操作可以包括原子操作i(“选中第一编
辑区域中的内容1”)和原子操作j(“在第二编辑区域中插入原来第一编辑区域中的内容
1”),用户B的协同操作所对应的原子操作为“修改第一编辑区域的为内容2”;通过对用户A
的协同操作和用户B的协同操作进行冲突合并处理后,所得到的第一合并结果可以为:修改
第一编辑区域中的内容为内容2,第二合并结果可以为:在第二编辑区域中写入内容2。
象标识所关联的预期操作结果;N为小于至少两个协同操作的数量的正整数,如N可以取值
为1,2,……;若第二合并结果和预期操作结果不一致时,将预期操作结果和第二合并结果
均返回至目标对象标识所关联的用户终端,以使目标对象标识所关联的用户终端,在目标
文档中对预期操作结果和第二合并结果进行展示。例如,若第一编辑区域可以用于输入用
户A的个人基本信息,那么与该第一编辑区域具有绑定关系的目标对象标识可以为用户A的
对象标识(例如,用户A的账号、姓名、昵称、编号等),若服务器同时接收到N个对象标识对应
的第二协同操作,且N个第二协同操作中包括用户A对应的第二协同操作,则可以将用户A对
应的第二协同操作的修改结果,确定为第一编辑区域的预期操作结果;当服务器对第一协
同操作与N个第二协同操作进行协同冲突处理后所得到的第二合并结果,与用户A的预期操
作结果不一致时,可以将第二合并结果和预期操作结果一同返回至用户A所使用的用户终
端,此时用户A所使用的用户终端可以在目标文档中,对预期操作结果和第二合并结果进行
展示。
存在丢失的操作内容,可以通过引入包含该操作内容的次原子操作,以得到最终的冲突合
并处理结果,这样得到的冲突处理结果可以同时保留至少两个协同操作的更改,使得协同
冲突处理的输出结果符合用户的预期,进而可以提高协同操作处理结果的准确性。
户终端10a)执行;如图5所示,该协同操作处理方法可以包括以下步骤:
发送的,第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子
操作j,第二协同操作包括针对第一编辑区域的原子操作,第一编辑区域和第二编辑区域均
属于目标文档。
具备访问目标文档的权限,则可以向该用户终端返回目标文档,以使用户终端可以对服务
器返回的目标文档进行展示;若该用户终端不具备访问目标文档的权限,则服务器可以向
用户终端返回访问失败提示信息。
时,该用户终端可以将用户所触发的两个或两个以上操作作为第一协同操作,上传至服务
器,此时该用户终端可以称为目标用户终端。当然,对于任何一个可以访问目标文档的用户
终端,在监听到目标文档中的编辑操作时,均可以将监听到的编辑操作上传至服务器。换言
之,服务器除了可以接收到目标用户终端上传的第一协同操作之外,还可以接收其余用户
终端上传的第二协同操作,随后可以将第一协同操作和第二协同操作都拆解为原子操作;
其中,第一协同操作的数量可以为一个或多个,第二协同操作的数量也可以为一个或多个,
每个协同操作都可以是用户对目标文档执行编辑触发操作时,用户终端所产生的编辑操
作;另外,服务器对第一协同操作和第二协同操作之间的协同冲突处理过程,可以参见上述
图3所对应实施例的步骤S101‑步骤S103中的描述,这里不再进行赘述。服务器在得到第一
协同操作和第二协同操作之间的协同冲突处理结果后,可以将协同冲突处理结果返回至目
标客户端,此处的协同冲突处理结果可以包括与第一编辑区域相关联的第一合并处理结
果,以及与第二编辑区域相关联的第二合并处理结果;其中,第一合并结果可以是指服务器
对原子操作i和第二协同操作对应的原子操作进行冲突合并处理后所得到的结果,第二合
并结果可以是指服务器对原子操作j和次原子操作进行冲突合并处理后所得到的结果,次
原子操作可以包括原子操作i和第二协同操作对应的原子操作在冲突合并处理中所丢失的
操作内容,其中,i和j都是小于或等于第一协同操作对应的原子操作的数量的正整数。
一合并结果是指原子操作i和第二协同操作对应的原子操作之间的冲突合并结果,第二合
并结果是指原子操作j和次原子操作之间的冲突合并结果,次原子操作是由原子操作i和第
二协同操作对应的原子操作中所丢失的操作内容确定的。
果,如上述图2所示的单元格A1中可以插入第一合并结果(数据为空),在单元格A5中可以插
入第二合并结果“a1z9”。
插入第一合并结果;显示与第二编辑区域相关联的第一候选内容列表,该第一候选内容列
表包括第二合并结果和第一协同操作所触发的原始操作内容;当用户选择第一候选内容列
表中的原始操作内容时,目标用户终端可以响应针对第一候选内容列表的选取操作,在第
二编辑区域中插入选取操作所触发的原始操作内容。换言之,在剪切移动场景中,若用户实
际想要剪切的内容为第一编辑区域中原来的数据,则可以选择将原始操作内容插入至第二
编辑区域;若用户实际想要剪切的内容为第一编辑区域中的数据,则可以选择将第二合并
结果插入至第二编辑区域。用户可以根据实际需求来选择插入的数据,可以确保插入内容
的准确性。
10d返回的第一合并结果(数据为空)和第二合并结果(“a1z9”)后,可以将目标文档中的单
元格A1显示为空,并显示第一候选内容列表20c,该第一候选内容列表20c可以包括第二合
并结果和单元格A1的原始内容“a1a1”。当用户选择原始内容“a1a1”时,可以在单元格A5中
插入“a1a1”并进行展示;当用户选择第二合并结果“a1z9”时,可以在单元格A5中插入
“a1z9”并进行展示。
入第一合并结果;显示与第二编辑区域相关联的第二候选内容列表,该第二候选内容列表
包括第一合并结果和第二合并结果;当用户选择第一候选内容列表中的第一合并结果时,
目标用户终端可以响应针对第二候选内容列表的选取操作,在第二编辑区域中插入选取操
作所触发的第一合并结果。其中,此处的第一合并结果为基于第二协同操作对第一编辑区
域进行修改后的内容,第二合并结果为第一编辑区域未进行修改的原始内容,在目标文档
中的呈现方式可以如上述图6所示,这里不再进行赘述。
在编辑第一编辑区域的对象标识。请参见图7,图7是本申请实施例提供的一种目标文档的
编辑显示界面图。如图7所示,当目标用户终端监听到用户小A、小B以及小C同时编辑单元格
A5时,可以在目标文档的区域30b中显示小A、小B以及小C。
存在丢失的操作内容,可以通过引入包含该操作内容的次原子操作,以得到最终的冲突合
并处理结果,这样得到的冲突处理结果可以同时保留至少两个协同操作的更改,使得协同
冲突处理的输出结果符合用户的预期,进而可以提高协同操作处理结果的准确性;可以在
目标文档中为用户提供可选择的插入内容,使得用户可以根据用户意图选择正确的插入内
容,进而可以确保插入内容的准确性,增强针对目标文档的处理效率。
如图8所示,该协同操作处理装置1可以包括:拆解模块11,第一冲突合并模块12,第二冲突
合并模块13;
作对应的原子操作进行冲突合并,得到针对第一编辑区域的第一合并结果;第二编辑区域
属于目标文档,第二协同操作为至少两个协同操作中除第一协同操作之外的协同操作,i和
j均为小于或等于第一协同操作对应的原子操作的数量的正整数;
子操作进行冲突合并,得到针对第二编辑区域的第二合并结果。
控制区域包含第一编辑区域的对象标识所对应的原始协同操作,确定为至少两个协同操
作;M为小于或等于对象标识集合中所包含的对象标识数量的正整数。
述。
区域和第二编辑区域。
作;
并,得到针对第一编辑区域的第一合并结果为空操作;
作;
合并,得到针对第一编辑区域的第一合并结果为修改内容;
一编辑区域中的原始内容。
少两个协同操作的数量的正整数;
用户终端,在目标文档中对预期操作结果和第二合并结果进行展示。
存在丢失的操作内容,可以通过引入包含该操作内容的次原子操作,以得到最终的冲突合
并处理结果,这样得到的冲突处理结果可以同时保留至少两个协同操作的更改,使得协同
冲突处理的输出结果符合用户的预期,进而可以提高协同操作处理结果的准确性。
10a;如图9所示,该协同操作处理装置2可以包括:操作发送模块21,合并结果接收模块22;
用户终端所发送的,第一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑
区域的原子操作j,第二协同操作包括针对第一编辑区域的原子操作,第一编辑区域和第二
编辑区域均属于目标文档,i和j均为小于或等于第一协同操作对应的原子操作的数量的正
整数;
二合并结果;第一合并结果是指原子操作i和第二协同操作对应的原子操作之间的冲突合
并结果,第二合并结果是指原子操作j和次原子操作之间的冲突合并结果,次原子操作是由
原子操作i和第二协同操作对应的原子操作中所丢失的操作内容确定的。
施例中的步骤S202,这里不再进行赘述。
存在丢失的操作内容,可以通过引入包含该操作内容的次原子操作,以得到最终的冲突合
并处理结果,这样得到的冲突处理结果可以同时保留至少两个协同操作的更改,使得协同
冲突处理的输出结果符合用户的预期,进而可以提高协同操作处理结果的准确性;可以在
目标文档中为用户提供可选择的插入内容,使得用户可以根据用户意图选择正确的插入内
容,进而可以确保插入内容的准确性,增强针对目标文档的处理效率。
还可以为服务器,例如,上述图1所对应实施例中的服务器10d,这里将不对其进行限制。为
便于理解,本申请以计算机设备为用户终端为例,该计算机设备1000可以包括:处理器
1001,网络接口1004和存储器1005,此外,该计算机设备1000还可以包括:用户接口1003,和
至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用
户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的
有线接口、无线接口(如WI‑FI接口)。存储器1004可以是高速RAM存储器,也可以是非不稳定
的存储器(non‑volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是
至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机可读存储介
质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程
序。
中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;
而处理器1001可以用于调用存储器1005中存储的设备控制应用程序。
一协同操作包括针对第一编辑区域的原子操作i,以及针对第二编辑区域的原子操作j,第
二协同操作包括针对第一编辑区域的原子操作,第一编辑区域和第二编辑区域均属于目标
文档,i和j均为小于或等于第一协同操作对应的原子操作的数量的正整数;
是指原子操作i和第二协同操作对应的原子操作之间的冲突合并结果,第二合并结果是指
原子操作j和次原子操作之间的冲突合并结果,次原子操作是由原子操作i和第二协同操作
对应的原子操作中所丢失的操作内容确定的。
机设备可以通过处理器1001来实现:
突合并,得到针对第一编辑区域的第一合并结果;第二编辑区域属于目标文档,第二协同操
作为至少两个协同操作中除第一协同操作之外的协同操作,i和j均为小于或等于第一协同
操作对应的原子操作的数量的正整数;
到针对第二编辑区域的第二合并结果。
作处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘
述。
机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3和图5任一个所对应实
施例中对协同操作处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的
有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披
露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署在一个计算
设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通
过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算
设备可以组成区块链系统。
可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器
可以执行该计算机指令,使得该计算机设备执行前文图3和图5任一个所对应实施例中对协
同操作处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描
述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披
露的技术细节,请参照本申请方法实施例的描述。
为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该
知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申
请所必须的。
中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光
盘、只读存储器(Read‑Only Memory,ROM)或随机存储器(Random Access Memory,RAM)等。