CN107943777A - 一种协同编辑、协同处理方法、装置、设备及存储介质 - Google Patents
一种协同编辑、协同处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN107943777A CN107943777A CN201711336937.6A CN201711336937A CN107943777A CN 107943777 A CN107943777 A CN 107943777A CN 201711336937 A CN201711336937 A CN 201711336937A CN 107943777 A CN107943777 A CN 107943777A
- Authority
- CN
- China
- Prior art keywords
- edit
- edit operation
- client
- content
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/101—Collaborative creation, e.g. joint development of products or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Strategic Management (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Marketing (AREA)
- Databases & Information Systems (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Economics (AREA)
- General Health & Medical Sciences (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Document Processing Apparatus (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种协同编辑、协同处理方法、装置、设备及存储介质,协同编辑方法包括:服务器接收第一客户端发送的针对目标编辑内容副本的第一编辑操作,服务器如果确定第一编辑操作与已接收的至少一个目标编辑操作构成并发操作,则根据与目标编辑操作匹配的编辑操作序列中各编辑操作以及第一编辑操作的编辑属性信息,对第一编辑操作进行转换,得到第一转换编辑操作;服务器使用第一转换编辑操作对本地存储的目标编辑内容副本进行编辑后,将第一转换编辑操作加入编辑操作序列的尾部,并将第一转换编辑操作发送至各协同客户端,以实现完整的支持文档的协同一致性、用户意图保持以及协同撤销功能,并降低算法复杂度,提高算法性能。
Description
技术领域
本发明实施例涉及计算机应用软件技术领域,尤其涉及一种协同编辑、协同处理方法、装置、设备及存储介质。
背景技术
协同编辑软件允许多个用户通过计算机网络共同审阅、编辑同一份文档,能够有效提高使用者的生产力。协同编辑软件需要像单机软件一样迅速响应,并且在多个用户共同编辑时不会互相阻塞,其中,OT(Operational Transformation,操作转换)算法为协同编辑软件的并发控制功能提供了坚实的基础。协同编辑算法可以抽象为两部分内容,即OT控制算法和OT转换算法。OT控制算法为可以重用的算法,不同的控制算法,定义了对应的OT转换算法所需要满足的约束条件;OT转换算法需要具体的应用根据自身文档特性做具体实现,实际应用中,OT转换算法需要开发者自己定制,因此通过OT转换算法需要满足的约束条件的多少,可以客观的评价算法的实现难易。
利用OT算法实现协同编辑的过程中,算法中的转换函数必须实现两个强一致性约束,即因果性和一致性约束,要求任意操作和任意两个操作队列进行转换,最终总能得到等效的操作结果。随着算法的不断更新发展,“用户意图保持”成为扩展的新的约束。而现有的算法难以做到用户意图保持,经常需要在发现某些边界错误之后,重新修正算法实现用户意图保持,无法单纯通过理论论证证明算法完全正确。另外,协同编辑还有一个非常关键的特性,即撤销功能,是目前协同编辑算法领域一直难以有效解决的难题。
虽然早期的一些协同编辑算法一直在尝试解决撤销功能的问题,但是由于缺少对限制条件的考虑导致用户意图的缺失,很多情况下撤销操作无法实现撤销应有的效果,当不同用户撤销相同操作时,可能导致文档进入错误状态或者撤销效果错误。GOTO算法是一种基于逆转换的思路设计的算法,理论上比早期的协同编辑算法中的撤销功能严谨,在理论上能避免协同撤销的所有逻辑错误。但是GOTO算法在某些条件下无法保持并发操作时用户意图的正确性(撤销操作是普通操作的一种特殊情况,会有普通操作可能有的所有错误),在有撤销操作时该算法的复杂度为O(N^2)。COT(Context,上下文)算法用一种基于上下文的控制算法,算法复杂度很高,在存在撤销操作的情况下,或者存在多终端共同编辑的情况下,转换算法复杂度为O(M^N)(M和N为不同终端并发的操作数量),其指数级的复杂度性能成本过高,并且COT算法也无法解决某些破坏用户意图的转换操作。另外,上述协同编辑算法中的撤销算法都只涉及到纯文本文档的转换算法及论证,并不保证适用于其他类型文档。还有部分协同编辑算法针对特定文档类型进行设计,不能保证扩展到其它类型的文档时算法同样有效。针对表格类型文档,目前并没有能够对表格进行并发插入合并单元格、插入行列、插入公式等复杂操作的协同编辑算法,而且目前的协同编辑算法也不能针对表格类型文档实现协同撤销。
发明内容
本发明提供一种协同编辑方法、装置、协同编辑设备及存储介质,以实现完整的支持文档的协同一致性、用户意图保持以及协同撤销功能。
第一方面,本发明实施例提供了一种协同编辑方法,包括:
服务器接收第一客户端发送的针对目标编辑内容副本的第一编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息;
所述服务器如果确定所述第一编辑操作与已接收的至少一个目标编辑操作构成并发操作,则根据与所述目标编辑操作匹配的编辑操作序列中各编辑操作以及所述第一编辑操作的编辑属性信息,对所述第一编辑操作进行转换,得到第一转换编辑操作;
其中,所述编辑属性信息包括:编辑操作的编辑类型,或者编辑操作的编辑类型以及编辑操作的所述编辑内容地址信息;
所述服务器使用所述第一转换编辑操作对本地存储的所述目标编辑内容副本进行编辑后,将所述第一转换编辑操作加入所述编辑操作序列的尾部,并将所述第一转换编辑操作发送至各协同客户端,所述协同客户端包括发送所述目标编辑操作的至少一个并发客户端;
其中,所述第一转换编辑操作用于各所述协同客户端采用预设的协同转换算法对自身存储的所述目标编辑内容的副本进行处理,以保持与所述服务器以及其他协同客户端中的所述目标编辑内容中的数据一致性。
第二方面,本发明实施例还提供了一种协同处理方法,包括:
客户端接收服务器发送的针对目标编辑内容副本的待协同编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息;
所述客户端如果确定所述待协同编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与所述待协同编辑操作匹配的转换编辑操作;
所述客户端使用所述转换编辑操作,对所述目标编辑内容副本进行处理,以使所述客户端中的所述目标编辑内容副本与服务器以及其他协同客户端中的所述目标编辑内容中的数据保持一致。
第三方面,本发明实施例提供了一种协同编辑装置,应用于服务器,包括:
操作接收模块,用于接收第一客户端发送的针对目标编辑内容副本的第一编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息;
操作转换模块,用于如果确定所述第一编辑操作与已接收的至少一个目标编辑操作构成并发操作,则根据与所述目标编辑操作匹配的编辑操作序列中各编辑操作以及所述第一编辑操作的编辑属性信息,对所述第一编辑操作进行转换,得到第一转换编辑操作;
其中,所述编辑属性信息包括:编辑操作的编辑类型,或者编辑操作的编辑类型以及编辑操作的所述编辑内容地址信息;
操作发送模块,用于使用所述第一转换编辑操作对本地存储的所述目标编辑内容副本进行编辑后,将所述第一转换编辑操作加入所述编辑操作序列的尾部,并将所述第一转换编辑操作发送至各协同客户端,所述协同客户端包括发送所述目标编辑操作的至少一个并发客户端;
其中,所述第一转换编辑操作用于各所述协同客户端采用预设的协同转换算法对自身存储的所述目标编辑内容的副本进行处理,以保持与所述服务器以及其他协同客户端中的所述目标编辑内容中的数据一致性。
第四方面,本发明实施例提供了一种协同处理装置,应用于客户端,包括:
操作接收模块,用于接收服务器发送的针对目标编辑内容副本的待协同编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息;
操作转换模块,用于如果确定所述待协同编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与所述待协同编辑操作匹配的转换编辑操作;
副本处理模块,用于使用所述转换编辑操作,对所述目标编辑内容副本进行处理,以使所述客户端中的所述目标编辑内容副本与服务器以及其他协同客户端中的所述目标编辑内容中的数据保持一致。
第五方面,本发明实施例还提供了一种协同编辑设备,所述协同编辑设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述所涉及的任一所述的协同编辑方法。
第六方面,本发明实施例还提供了一种协同处理设备,所述协同处理设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述所涉及的任一所述的协同处理方法。
第七方面,本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述所涉及的任一所述的协同编辑方法。
第八方面,本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述所涉及的任一所述的协同处理方法。
本发明实施例通过服务器接收第一客户端发送的针对目标编辑内容副本的第一编辑操作,在确定第一编辑操作与已接收的至少一个目标编辑操作构成并发操作后,对第一编辑操作进行转换得到第一转换编辑操作;使用第一转换编辑操作对本地存储的目标编辑内容副本进行编辑后,将第一转换编辑操作加入编辑操作序列的尾部,并将第一转换编辑操作发送至各协同客户端;解决现有技术中难以支持文档协同一致性、用户意图保持及协同撤销功能的问题,实现同时有效支持文档的协同一致性、用户意图保持以及协同撤销功能,并降低算法复杂度,提高算法性能。
附图说明
图1a是本发明实施例一提供的一种协同编辑方法的流程图;
图1b是本发明实施例一提供的一种文件系统的示意图;
图1c是本发明实施例一提供的一种目录文件列表的示意图;
图2是本发明实施例二提供的一种协同编辑方法的流程图;
图3a是本发明实施例三提供的一种协同编辑方法的流程图;
图3b是本发明实施例三提供的一种表格文档的示意图;
图3c是本发明实施例三提供的一种表格和正文混排文档的示意图;
图3d是本发明实施例三提供的一种表格中包括公式功能的示意图;
图3e是本发明实施例三提供的一种文档操作历史的示意图;
图4是本发明实施例四提供的一种协同处理方法的流程图;
图5是本发明实施例五提供的一种协同编辑方法的流程图;
图6是本发明实施例六提供的一种协同编辑装置的示意图;
图7是本发明实施例七提供的一种协同处理装置的示意图;
图8为本发明实施例八提供的一种协同编辑设备的结构示意图;
图9为本发明实施例九提供的一种协同处理设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。
另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1a是本发明实施例一提供的一种协同编辑方法的流程图,本实施例可适用于对文档进行协同编辑的情况,该方法可以由协同编辑装置来执行,该装置可以由软件和/或硬件的方式来实现,并一般可集成在协同编辑设备中,该方法包括如下操作:
S110、服务器接收第一客户端发送的针对目标编辑内容副本的第一编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息。
其中,目标编辑内容可以是多种类型的文档,如纯文本文档、表格文档等,可以将文档的内容、执行过的全部操作的集合定义为文档状态。文档状态相同的两个文档,内容一定相同,执行过的操作集合一定等价(操作的等价指一个操作在不同客户端可能执行过转换,在实际执行时的效果不同,但是都源于同一个相同的操作)。目标编辑内容以文档副本的形式存储在服务器和各客户端中。服务器的数量只有一个,客户端的数量可以是2个、3个或者多个,本发明实施例对此并不进行限制。编辑操作可以是对文档副本的编辑操作,例如插入字符、删除字符、插入行、删除行等。编辑操作的产生是在客户端完成的,服务器并不产生编辑操作,只负责对接收到的编辑操作进行处理和分发。第一编辑操作指的是服务器当前接收到的编辑操作。编辑操作的编辑类型指的是编辑操作所要产生的效果,例如:插入、删除、移动、合并单元格等,编辑内容指的是编辑操作所要执行的内容,例如字符、单元格等,编辑内容位置信息指的是在可见文档内从0位置开始算起的序号,例如,“abc”对应的位置为“0,1,2,3”,对应在文本中具体是“0a1b2c3”。编辑内容地址信息指的是在只增不减的空间中从0点开始算起的序号,例如,“abc”对应的地址为“0,1,2”,其中,“a”对应地址号0,“b”对应地址号1,“c”对应地址号2。
在本发明实施例中,服务器和各客户端组成一个中心化的协同编辑体系,即客户端/服务器架构,服务器端负责接收客户端产生的编辑操作,其中,编辑操作可以是并发操作,也可以是非并发操作。并发操作指的是在相同文档状态下产生的两个操作,例如,客户端A针对文档“abc”执行在“a”的前方插入字符“1”的操作,客户端B针对文档“abc”执行在“c”的后方插入字符“2”的操作,则客户端A和客户端B产生的两个插入操作即为并发操作。相应的,与并发操作相对应的是因果操作,指的是相同客户端连续发送的编辑操作。例如,客户端连续发送的编辑操作a,b,其中,b是a执行之后产生的操作。也即b依赖于a。因此,服务端所接收的第一编辑操作针对服务器已经接收的编辑操作来说,可以是并发操作,也可以是因果操作。
S120、所述服务器如果确定所述第一编辑操作与已接收的至少一个目标编辑操作构成并发操作,则根据与所述目标编辑操作匹配的编辑操作序列中各编辑操作以及所述第一编辑操作的编辑属性信息,对所述第一编辑操作进行转换,得到第一转换编辑操作,其中,所述编辑属性信息包括:编辑操作的编辑类型,或者编辑操作的编辑类型以及编辑操作的所述编辑内容地址信息。
其中,目标编辑操作是服务器在接收第一编辑操作之前已经接收到的编辑操作,目标编辑操作可以是1个、2个或多个,相应的编辑操作序列中可以包括1个或多个编辑操作。同时,编辑操作序列中的编辑操作包括未转换的和已经转换的编辑操作,可以采用预设的协同转换算法根据编辑属性信息对编辑操作进行转换。编辑属性信息具体可以包括编辑类型,或者编辑类型以及编辑内容地址信息,不同的并发操作需要依据各编辑操作的编辑类型或者编辑类型以及编辑内容地址信息采用预设的协同转换算法对编辑操作进行转换。
在本发明实施例中,服务器如果确定第一编辑操作与已接收的至少一个目标编辑操作构成并发操作,则对第一编辑操作进行转换得到第一转换编辑操作。
在本发明的一个可选实施例中,所述编辑属性信息还包括:各所述编辑操作的撤销删除标识。
在本发明实施例中,为了实现协同撤销功能,在编辑操作的编辑属性信息中加入了撤销删除标识。其中,撤销删除标识可以采用两种标识来标识编辑操作是否为一个撤销操作。例如用“true(或1)”表示该编辑操作是一个撤销操作,用“false(或0)”表示该编辑操作不是一个撤销操作。撤销操作的含义,是撤销这个操作对文档产生的全部影响,这个影响既包含对文档状态的影响,也包括对后续协同转换可能产生的任何影响。引入撤销操作后,预设的协同转换算法的复杂度为O(N),而现有技术中GOTO算法、COT算法的复杂度分别为O(N^2)和O(M^N),其中M和N为不同客户端并发的操作数量。因此,本发明实施例中预设的协同转换算法的性能更加优越。
S130、所述服务器使用所述第一转换编辑操作对本地存储的所述目标编辑内容副本进行编辑后,将所述第一转换编辑操作加入所述编辑操作序列的尾部,并将所述第一转换编辑操作发送至各协同客户端,所述协同客户端包括发送所述目标编辑操作的至少一个并发客户端;其中,所述第一转换编辑操作用于各所述协同客户端采用预设的协同转换算法对自身存储的所述目标编辑内容的副本进行处理,以保持与所述服务器以及其他协同客户端中的所述目标编辑内容中的数据一致性。
其中,服务器以及其他协同客户端中的目标编辑内容中的数据一致性指的是服务器与其他协同客户端中的文档副本中的数据一致性,即实现支持文档的协同一致性。文档的协同一致性具体指服务器和各客户端中的文档副本分别执行并发操作以后,最终得到的文档状态相同,也即文档状态收敛一致。
在本发明实施例中,当服务器对第一编辑操作进行转换得到第一转换编辑操作后,使用第一转换编辑操作对本地存储的文档副本进行编辑,同时将第一转换编辑操作加入编辑操作序列的尾部,并将第一转换编辑操作发送至各协同客户端,使得各协同客户端能够根据第一转换编辑操作同样采用预设的协同转换算法对自身存储的文档副本进行处理。这样以来,能够实现保持服务器与其他协同客户端中的文档副本中的数据一致性,同时保持用户意图。其中,用户意图指的是文档经过编辑操作以后得到的新的文档状态是用户想要的文档状态,例如,原始文档状态为“abc”,用户1想在a后插入1,用户2想在c后插入2,则正确的用户意图为“a1bc2”,如果原始文档状态经过并发操作最终收敛的文档状态是“a1b2c”,则是错误的用户意图,即破坏用户意图。
在针对文档进行协同编辑时,为了避免并发操作导致文档状态收敛不一致和破坏用户意图,本发明实施例设计文档内容时,既记录文档内容,也记录文档的每个级别(如表格文档可以分三个级别:表格、行、列)的内容(如表格、行、列)在空间中的地址(如表格地址、行地址、列地址);文档有n个级别的内容,就对应一个n维地址空间。在设计针对文档的编辑操作时,对插入、删除、移动等对编辑内容位置信息有影响的编辑操作,不仅设置编辑内容位置信息,还设置编辑内容地址信息。编辑操作执行的效果不仅考虑对文档内容的影响,也考虑对地址空间的影响。非撤销的插入、移动等编辑操作会扩展地址空间,并且使所有在插入点之后的地址号全部加1。设计预设的协同转换算法时,编辑操作的位置信息先后判断以地址信息为准,转换时不仅改变编辑操作的编辑内容位置信息,非撤销的插入、移动操作在操作转换过程中也会改变其它并发操作的编辑内容地址信息。
如图1b所示为本发明实施例提供的一种文件系统的示意图,是本发明实施例中服务器和客户端对文档进行协同编辑时的可视化界面。由图1b可知,在文件系统中可以包括目录(My Documents)以及共享文档(Shared Folders)等部分组成,在目录和共享文档下包括私有文件(Private)以及研发等各个子文档,可以根据实际需求进行设置,从而支持各个客户端的协同编辑。
如图1c所示为本发明实施例提供的一种目录文件列表的示意图,由图1b可知,在文件系统中的目录内部的文件列表上可以缩略展示文档内容,从而提高用户体验。
本发明实施例通过服务器接收第一客户端发送的针对目标编辑内容副本的第一编辑操作,在确定第一编辑操作与已接收的至少一个目标编辑操作构成并发操作后,对第一编辑操作进行转换得到第一转换编辑操作;使用第一转换编辑操作对本地存储的目标编辑内容副本进行编辑后,将第一转换编辑操作加入编辑操作序列的尾部,并将第一转换编辑操作发送至各协同客户端;解决现有技术中难以支持文档协同一致性、用户意图保持及协同撤销功能的问题,实现同时有效支持文档的协同一致性、用户意图保持以及协同撤销功能,并降低算法复杂度,提高算法性能。
在上述技术方案的基础上,可选的,所述服务器如果确定所述第一编辑操作与已接收的至少一个目标编辑操作构成并发操作,具体包括:所述服务器获取所述第一编辑操作中包括的第一版本号,其中,所述版本号用于指示所述第一编辑操作所编辑的目标编辑内容副本的文档版本号;所述服务器如果确定所述第一版本号,与已经接收到的至少一个目标编辑操作的版本号相同,则确定所述第一编辑操作与所述目标编辑操作构成并发操作;
其中,版本号是一种用来指示文档状态的一种顺序递增的序号。例如,文档的初始状态为“abc”,其对应的版本号为2,当在版本号为2的文档状态的基础上执行一个插入“d”编辑操作以后,文档状态变为“abcd”,其对应的版本号为3。服务器接收到的每个编辑操作中都会包括编辑操作对应的文档的当前版本号。例如,第一编辑操作包括第一版本号,第一版本号则是第一编辑操作对应文档的当前版本号。优选的,本发明实施例可以以版本号为依据,服务器通过判断接收的第一编辑操作对应的第一版本号是否与已经接收到的目标编辑操作的版本号相同,来确定第一编辑操作与目标编辑操作是否构成并发操作。
举例而言,服务器接收到第一编辑操作后,根据第一编辑操作包括的版本号0,获取服务器文档版本号已有的0之后的操作作为目标编辑操作,目标编辑操作和第一编辑操作构成并发操作,则针对第一编辑操作执行预设的协同转换算法。
相应的,所述服务器使用所述第一转换编辑操作对本地存储的所述目标编辑内容副本进行编辑后,将所述第一转换编辑操作加入所述编辑操作序列的尾部,并将所述第一转换编辑操作发送至各协同客户端,进一步包括:所述服务器使用所述第一转换编辑操作对本地存储的所述目标编辑内容副本进行编辑后,更新本地的所述目标编辑内容副本的版本号,并将更新后的所述版本号加入所述第一转换编辑操作中。
在本发明实施例中,当服务器使用第一转换编辑操作对本地存储的文档副本编辑后,除了要将第一转换编辑操作加入编辑操作序列的尾部并发送至各协同客户端,还需要同时更新本地文档副本的版本号,并将更新的版本号加入第一转换编辑操作,使得各协同客户端能够通过第一转换编辑操作中包括的版本号来识别第一转换编辑操作与客户端本地已经完成的编辑操作是否是并发操作。其中,更新的规则是:在当前版本号序号的基础上依次加1。
实施例二
图2是本发明实施例二提供的一种协同编辑方法的流程图,本实施例可适用于对纯文本文档进行协同编辑的情况,该方法包括如下操作:
S210、服务器接收第一客户端发送的针对纯文本文档副本的第一编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息。所述服务器确定所述第一编辑操作与已接收的至少一个目标编辑操作构成并发操作。
在本发明一个可选实施例中,所述编辑类型具体包括:插入操作、删除操作以及空操作。
在本发明实施例中,纯文本文档记录两组内容,一组内容是文档的全部文本,如“abc”,另一组内容是每个现存文本字符对应空间中的地址号的地址数组,如[0,1,2],用表达式表示为Ds={content=“abc”,addresses=[0,1,2]}。
相应的,纯文本文档的插入操作有四个属性,用表达式表示为insert(i,c,a,r),其中,i为插入操作在文本中的位置,c为要插入的字符,a为插入操作在空间中的地址号,r为表示插入操作是否是一个恢复操作,恢复操作只出现在对删除操作的撤销中,从而实现协同撤销功能。插入操作的操作效果为,在纯文本文档文本的i位置插入字符c;在地址数组的i位置插入数字a;如果r为假,表明这不是一个恢复操作,则将地址数组i位置之后的全部地址号加1。
纯文本文档的删除操作有三个属性,用表达式表示为delete(i,c,a),其中,i为要删除的字符在文本中的位置,c为要插入的字符,a为删除操作在空间中的地址号。删除操作的操作效果为,将纯文本文档i位置的文本删除;将地址数组i位置的地址号删除。
纯文本文档的空操作不改变文档,用表达式表示为vacant(),任何操作和空操作进行操作转换得到操作本身。
S220、所述服务器按照从前到后的顺序,依次从所述编辑操作序列中获取一个编辑操作作为当前处理操作。
在本发明实施例中,当服务器确定第一编辑操作与已接收的至少一个目标编辑操作构成并发操作,则按照从前到后的顺序,从编辑操作序列中依次获取其中一个编辑操作,并将该编辑操作作为当前处理操作采用预设的协同转换算法对第一编辑操作进行转换。
S230、所述服务器根据所述当前处理操作与所述第一编辑操作的编辑类型、所述当前处理操作与所述第一编辑操作的编辑内容地址信息的大小关系、所述当前处理操作的撤销删除标识、所述第一编辑操作的撤销删除标识以及预设的协同转换算法,更新所述第一编辑操作中的编辑内容位置信息,和/或编辑内容地址信息。
在本发明实施例中,采用预设的协同转换算法对第一编辑操作进行转换时,需要以当前处理操作与第一编辑操作的编辑类型、当前处理操作与第一编辑操作的编辑内容地址信息的大小关系、当前处理操作的撤销删除标识、第一编辑操作的撤销删除标识为依据进行转换。
具体的,针对纯文本文档的预设的协同转换算法的定义如下:
两个并发操作A、B都为插入操作,A操作先抵达服务器,假设A=insert(i1,c1,a1,r1),B=insert(i2,c2,a2,r2),其表示A操作需要在纯文本文档文本的i1位置插入字符c1;在地址数组的i1位置插入数字a1,B操作需要在纯文本文档文本的i2位置插入字符c2;在地址数组的i2位置插入数字a2,r1、r2分别表示A、B两个操作是否是恢复操作,用伪代码的形式进行表述如下:
上述表达式的含义是:
当a1<a2,并且r1为真时,A’=A,B’=insert(i2+1,c2,a2,r2)
当a1<a2,并且r1为假时,A’=A,B’=insert(i2+1,c2,a2+1,r2)
当a1==a2,并且r1为假时,A’=A,B’=insert(i2+1,c2,a2+1,r2)
当a1==a2,并且r1为真、r2为假时,A’=insert(i1+1,c1,a1+1,r1),B’=B
当a1==a2,并且r1和r2都为真时,A’=vacant(),B’=vacant()
当a1>a2,并且r2为真时,A’=insert(i1+1,c1,a1,r1),B’=B
当a1>a2,并且r2为假时,A’=insert(i1+1,c1,a1+1,r1),B’=B
其中,A’表示A转换后的操作,B’表示B转换后的操作
两个并发操作A、B为插入操作和删除操作,转换方式和操作抵达服务器的顺序无关,假设A=insert(i1,c1,a1,r1),B=delete(i2,c2,a2),其表示B操作需要将纯文本文档i2位置的文本c2删除;将地址数组i2位置的地址号a2删除,用伪代码的形式进行表述如下:
上述表达式的含义是:
当a1<=a2,且r1为真时,A’=A,B’=delete(i2+1,c2,a2)
当a1<=a2,且r1为假时,A’=A,B’=delete(i2+1,c2,a2+1)
当a1>a2,A’=insert(i1-1,c1,a1,r1),B’=B
两个并发操作A、B都为删除操作,操作抵达服务器的顺序对操作转换无影响,假设A=delete(i1,c1,a1),B=delete(i2,c2,a2),用伪代码的形式进行表述如下:
上述表达式的含义是:
当a1<a2时,A’=A,B’=delete(i2-1,c2,a2)
当a1==a2时,A’=vacant(),B’=vacant()
当a1>a2时,A’=delete(i1-1,c1,a1),B’=B
需要说明的是,在预设的协同转换算法中的删除操作来说,文档只需要存储实际内容所对应的地址数组,已经删除的内容并不在文档内容中,有利于出现频繁修改的情况时节省文档占用的存储空间,避免因为频繁的删改导致文档的大小远超出实际内容的问题。
在上述针对纯文本文档定义的预设的协同转换算法中可以看出,通过编辑操作的编辑内容地址信息能够识别哪些编辑操作是作用于相同地址的操作,即相等的撤销操作。此外,预设的协同转换算法还定义了意向操作。意向操作本身并不对文档产生作用,只记录一个重复撤销操作的操作意图,当对同一个原始操作多次进行并发的撤销-重做时,根据后写优先的原则,会使用最后一个抵达服务器的编辑操作的操作意图,根据这个编辑操作是撤销还是重做决定最后执行的操作结果。
S240、判断是否完成对所述编辑操作序列中全部编辑操作的处理,若是,则执行S250;否则,返回S220。
在本发明实施例中,当编辑操作序列中的编辑操作是两个或两个以上时,服务器要按照编辑操作序列中各个编辑操作的先后顺序依次将各个编辑操作作为当前处理操作,并依次根据当前处理操作更新第一编辑操作中的编辑内容位置信息,和/或编辑内容地址信息。
S250、将处理结束时更新的所述第一编辑操作作为所述第一转换编辑操作。
具体的,以3个并发操作为例说明服务器如何实现协同编辑。假设服务器先接受到编辑操作A,执行编辑操作A后,将编辑操作A放入编辑操作序列中。然后,服务器接收到编辑操作B,通过版本号判断A、B属于并发操作,则将A作为当前处理操作,对B进行转换生成B’,服务器执行B’后,将B’放在编辑操作序列中A的后方。接着,服务器接收到编辑操作C,通过版本号判断A、C和B’、C分别属于两种并发操作,则将A作为当前处理操作,对C进行转换生成C’,然后将B’作为当前处理操作,对C’进行转换生成C”,服务器执行C”后,将C”放在编辑操作序列中B’的后方。
本发明实施例通过服务器接收第一客户端发送的针对纯文本文档副本的第一编辑操作,确定其与已接收的至少一个目标编辑操作构成并发操作,依次从编辑操作序列中获取一个编辑操作作为当前处理操作,并根据当前处理操作与第一编辑操作的编辑类型、当前处理操作与第一编辑操作的编辑内容地址信息的大小关系、当前处理操作的撤销删除标识、第一编辑操作的撤销删除标识以及预设的协同转换算法,更新第一编辑操作中的编辑内容位置信息,和/或编辑内容地址信息,在确定对编辑操作序列中全部编辑操作的处理后,将处理结束时更新的第一编辑操作作为第一转换编辑操作,从而实现对接收到的并发操作确定唯一的编辑操作序列,进而保持协同一致性和用户意图,同时支持协同撤销功能。
实施例三
图3a是本发明实施例三提供的一种协同编辑方法的流程图,本实施例可适用于对表格文档进行协同编辑的情况,该方法包括如下操作:
S310、服务器接收第一客户端发送的针对表格文档副本的第一编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息。所述服务器确定所述第一编辑操作与已接收的至少一个目标编辑操作构成并发操作。
在本发明一个可选实施例中,所述编辑类型具体包括:插入行、插入列、删除行、删除列、移动行、移动列、修改单元格内容、插入合并单元格、删除合并单元格、插入表格、删除表格。
需要说明的是,除了上述所列举11种编辑类型,在表格文档中还会涉及到编辑行属性、编辑列属性、冻结行、冻结列、修改sheet(表格)页名称、修改表格名称、移动表格以及空操作等8种编辑类型。因此,对于表格文档来说,可以包括19中不同的编辑操作。除去空操作之外,其它18种操作可能出现的并发操作转换情况有18×17/2=153种,根据并发操作之间相对位置的不同,有某些组合内部又会衍生出三四种情况的分支。如图3b所示为本发明实施例提供的一种表格文档的示意图,图3c是本发明实施例提供的一种表格和正文混排文档的示意图,基于上述19种编辑操作,表格文档支持的功能有:新增、移动行、列和表单,插入删除合并单元格,冻结行列,修改列宽,修改单元格内容,插入、删除公式,修改单元格内容,修改单元格字体大小、对齐方式等。
在本发明实施例中,表格文档由多个表格组成的表格数组sheets,以及每个表格对应的地址组成的表格地址数组sheetAddresses,可以用符号表述为Ds={sheets:[Sheet1,...,SheetN],sheetAddresses:[0,...,n]}。表格拥有唯一标识sheetId、行数组rows、列数组columns、行地址数组rowAddresses、列地址数组columnAddresses以及合并单元格数组mergeCells,可以符号表述为:Sheet={rows:[row1,...,rown],rowAddresses:[0,...,n],columns:[column1,...,coumnN],columnAddresses:[0,...,n],mergeCells:[mergeCell1,...,mergeCelln]}。其中,列拥有唯一标识columnId、名称columnName和列宽width属性。行拥有唯一标识rowId、单元格cells属性。单元格拥有类型cellType、值value、水平对齐方式horizontalAlign等属性。公式单元格上会存储一组引用数组references,如图3d所示是本发明实施例提供的一种表格中包括公式功能的示意图。合并单元格拥有行位置ri、列位置ci、行跨度rowSpan、列跨度columnSpan、最小行地址top、最大行地址bottom、最小列地址left以及最大列地址right等属性。
另外,本发明实施例还针对具有公式的单元格进行了建模,为公式的存储格式定义了关键性的结构:引用。引用包括跨表格引用和不跨表格引用两种类型。跨表格引用拥有表格最小位置sheetLi、表格跨度sheetSpan、表格地址最小值sheetLa、表格地址最大值sheetRa、表格内固定区域(该属性和协同转换算法无关)。不跨表格引用拥有引用类型referenceType、行位置ri、列位置ci、行跨度rowSpan、列跨度columnSpan、行地址最小值top、行地址最大值bottom、列地址最小值left以及列地址最大值bottom。如图3e所示是本发明实施例提供的一种文档操作历史的示意图。
在表格中应用地址空间的概念时,可以将整个表格都映射到一个三维空间上。其中,表格映射到垂直于z轴的一个平面,表格的地址是表格在z轴上的坐标。行和列分别映射到垂直x轴和z轴的直线,行、列的地址分别对应x轴和y轴上的坐标。单元格映射到行列交叉形成的点。合并单元格映射到某个垂直于z轴平面上的一个矩形,显示在文档内的是这个矩形里未被删除的部分。跨表格引用映射到一段z轴上的直线,不跨表格引用映射到某个垂直z轴直线上的平面。
S320、所述服务器按照从前到后的顺序,依次从所述编辑操作序列中获取一个编辑操作作为当前处理操作。
S330、所述服务器如果确定所述当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型满足第一并发处理条件,则根据所述处理编辑类型、所述第一编辑类型以及预设的协同转换算法,更新所述第一编辑操作中的编辑内容。
其中,第一并发处理条件用于表示编辑操作进行转换时,两个编辑操作的位置信息和地址信息彼此不受影响的条件。
在本发明的一个可选实施例中,所述第一并发处理条件包括:在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对行的编辑,另一个为针对列的编辑。
具体的,在表格文档的各种编辑操作中,当针对行的编辑和针对列的编辑形成并发操作时,两个并发操作的位置信息和地址信息彼此不受影响。因此,可以直接采用预设的协同转换算法更新第一编辑操作中的编辑内容。其中,在预设的协同转换算法中,表格文档编辑操作的编辑内容定义如下:
插入行IR,拥有行标识rowId、行位置ri、行地址ra、是否是还原操作recover、行内容row、行上所有单元格cells等属性。执行插入行操作时,会在表格的行数组和行地址数组内分别插入一行和一个地址,并根据是否还原增加后续地址。插入行操作还会对合并单元格和不跨表格引用产生影响。非恢复操作的插入行操作,相当于在平面中插入一条直线,直线下方的合并单元格位置和地址都需要加1,如果插入行穿过合并单元格,则合并单元格在文档和空间中都变高一个单位。插入行对不跨表格引用的作用和对合并单元格的作用一致。
插入列IC,拥有列标识columnId、列位置ci、列地址ca、是否是还原操作recover、列内容column、列上所有单元格cells等属性。插入列会给每行单元格数组的ci位置都加入一个单元格cells[ri],其中ri是这一行的位置。插入行也会给列数组ci位置插入一列,列地址数组ci位置插入地址ca,并根据是否是恢复操作,决定后续地址是否全部加1。
删除行Dr,拥有行标识rowId、行位置ri、行地址ra、行内容row、行上所有单元格cells。删除行操作效果和插入行相反,会删除行、行地址,会影响合并单元格的位置信息,但是删除行不会对地址空间产生修改。
删除列Dc,拥有列标识columnId、列位置ci、列地址ca、列内容column、列上所有单元格cells。删除列操作效果和插入列相反,会删除列、列地址,会影响合并单元格的位置信息,但是删除列不会对地址空间产生修改。
移动行和移动列可以看作对相同行列先删除后插入的编辑操作。
修改单元格内容MCE,拥有行标识rowId、列标识columnId、行位置ri、列位置ci、要修改的内容value等属性,如果是公式单元格,还有引用数组references。修改单元格内容的操作效果是修改目标单元格的value以及替换目标单元格的references。
插入合并单元格和删除合并单元格操作的属性是表格标识sheetId和合并单元格mc的属性,其效果是向指定表格的合并单元格数组插入或者删除一条数据,删除时通过合并单元格的位置是否相同判断要删除哪个合并单元格。
插入表格IS,拥有表格标识sheetId、表格全部内容sheet、表格位置is、表格地址ia、是否是恢复操作recover等属性。插入表格会向文档的表格数组is位置插入一个表格,并向表格地址数组is位置插入地址ia,如果这不是一个恢复操作,is位置之后的地址号全部加1。插入表格还会对所有跨表格引用产生作用,根据地址信息的关系以及是否是恢复操作,会使跨表格引用的位置信息和地址信息都发生相应的变化。
删除表格DS,拥有表格标识sheetId、表格全部内容sheet、表格位置is、表格地址ia等属性。删除表格会删除表格数组is位置的表格,并删除表格地址数组is位置的地址。
在表格文档中,除上述编辑操作外,其它的编辑操作都是修改操作,修改操作特点是通过被修改对象的标识或者位置,在文档中找到被修改对象,并修改相应的属性,这里不一一列举。
S340、所述服务器如果确定所述当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型满足第二并发处理条件,则根据所述当前处理操作与所述第一编辑操作的编辑内容地址信息的大小关系、所述当前处理操作的撤销删除标识、所述第一编辑操作的撤销删除标识以及预设的协同转换算法,更新所述第一编辑操作中的编辑内容位置信息,和/或编辑内容地址信息。
其中,第二并发处理条件用于表示编辑操作进行转换时,两个编辑操作的位置信息和地址信息彼此相互影响的条件。
在本发明的一个可选实施例中,所述第二并发处理条件包括下述至少一项:
在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对行的编辑,另一个也为针对行的编辑;
在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对列的编辑,另一个也为针对列的编辑;
在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对行或者列的编辑,另一个为针对单元格的编辑。
在本发明实施例中,对表格文档中的并发操作进行转换时,预设的协同转换算法的转换方式如下:
(1)、插入行和插入列的转换:
对相同表格文档的并发插入行和插入列操作,其相交的位置会产生一个新的单元格,此时在插入行操作的cells数组的插入列位置ci处插入一个新的空单元格;在插入列操作的cells数组的插入行位置ri处插入一个新的空单元格。
插入列和删除行的转换过程与上述方式相似。
(2)、插入行和删除列的转换:
相同表格文档的并发插入行和删除列操作,需要将插入行操作的单元格数组的ci位置,也就是删除列操作所删除列的位置的单元格从数组中删除。反过来需要将这个单元格加入到删除列操作的单元格数组的ri位置,即插入行所在位置。
插入列和删除行的转换与上述过程相似。
(3)、删除行和删除列的转换:
删除相同表格文档上的行列,需要将被删除行列交汇处的单元格从删除行和删除列的单元格数组中分别移除。
(4)、插入行之间的转换:
插入行操作之间的转换和纯文本文档对并发插入操作的转换过程原理完全相同,都会根据地址ra的相对大小进行地址转换,编辑操作地址大的将受编辑操作地址小的影响,使位置ri加1,如果是恢复操作,地址ra加1。
并发插入列操作的转换和并发插入行的转换过程相似。
并发插入表格操作的转换和也和并发插入行的转换过程相似。
(5)、插入行和插入合并单元格之间的转换:
相同表格文档上的插入行和修改单元格,如果插入行在地址空间的位置在合并单元格的上方,则合并单元格在位置上下移一个单位,如果插入行操作不是还原操作,合并单元格在地址空间也下移一个单位。如果插入操作在地址空间里穿过合并单元格,则合并单元格的下边界位置下移一位,如果插入操作不是还原操作,则合并单元格下边界的地址也下移一位。
插入列和插入合并单元格之间的转换也遵循类似的过程,只是对合并单元格上下边界的影响改为对左右边界的影响。
(6)、删除行和插入合并单元格之间的转换:
相同表格文档上的删除行和插入合并单元格操作,删除行在地址空间中如果在合并单元格上方,则合并单元格位置上移一位,地址不变。如果删除行穿过合并单元格,则合并单元格的下边界位置上移一位,地址不变。
(7)、插入行和编辑单元格之间的转换:
相同表格文档上的插入行和编辑单元格操作,如果插入行位置在编辑单元格上方,则编辑单元格的行位置ri加1,即下移一位。如果编辑单元格操作修改了引用,则按照插入行操作对引用的修改方式修改引用(在插入行操作执行效果中描述过)。
(8)、删除行和编辑单元格之间的转换:
相同表格文档上的删除行和编辑单元格操作,如果删除行位置在编辑单元格上方,则编辑单元格的行位置ri减1,即下移一位。如果编辑单元格操作修改了引用,则按照删除行操作对引用的修改方式修改引用(在删除行操作执行效果中描述过)。删除列和编辑单元格之间的转换遵循类似的过程。
删除行(列)和编辑单元格构成并发操作时有一种需要编辑的单元格正好在要删除的行(列)上的情况,此时需要将删除行操作被编辑位置的单元格修改为编辑后的内容,将编辑单元格操作的地址置为-1,并在编辑单元格操作上记录被删除行(列)的标识。如果在发送删除行(列)的客户端还存在并发撤销操作,则在插入操作(撤销操作)和编辑单元格操作行(列)标识相同时,将编辑单元格操作应用到插入操作被编辑位置的单元格上,将编辑单元格操作的插入行(列)位置设置为和插入行(列)操作的位置相同。
(9)、插入表格和修改单元格之间的转换:
相同表格文档上的插入表格和修改单元格操作,如果修改单元格有跨表格引用,则根据插入表格和引用在空间中的相对位置修改引用的地址和索引,修改过程和执行插入表格操作相同。
(10)、删除表格和修改单元格之间的转换:
相同表格文档上的删除表格和修改单元格操作,转换过程和插入表格和修改单元格之间的转换类似。
S350、判断是否完成对所述编辑操作序列中全部编辑操作的处理,若是,则执行S360;否则,返回S320。
S360、将处理结束时更新的所述第一编辑操作作为所述第一转换编辑操作。
本发明实施例通过服务器接收第一客户端发送的针对表格文档副本的第一编辑操作,从编辑操作序列中获取一个编辑操作作为当前处理操作,在确定当前处理操作的处理编辑类型与第一编辑操作的第一编辑类型分别满足第一并发处理条件和第二并发处理条件时,分别根据处理编辑类型、所述第一编辑类型以及预设的协同转换算法;当前处理操作与第一编辑操作的编辑内容地址信息的大小关系、当前处理操作的撤销删除标识、第一编辑操作的撤销删除标识以及预设的协同转换算法,更新第一编辑操作中的编辑内容位置信息,和/或编辑内容地址信息。在完成对编辑操作序列中全部编辑操作的处理后,将处理结束时更新的第一编辑操作作为第一转换编辑操作,实现支持表格文档的并发插入行列,并发插入行列和插入合并单元格,并发插入行、列、表格和加入公式(以引用进行表示)之间的转换,既能够实现文档收敛一致性及保持用户意图,同时实现了表格文档的协同撤销功能。
实施例四
图4是本发明实施例四提供的一种协同处理方法的流程图,本实施例可适用于对文档进行协同编辑的情况,该方法可以由协同处理装置来执行,该装置可以由软件和/或硬件的方式来实现,并一般可集成在协同处理设备中,该方法包括如下操作:
S410、客户端接收服务器发送的针对目标编辑内容副本的待协同编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息。
其中,目标编辑内容指的是存储在客户端本地的文档,待协同编辑操作指的是服务器向客户端发送的未转换的或已经转换过的编辑操作。
S420、所述客户端如果确定所述待协同编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与所述待协同编辑操作匹配的转换编辑操作。
在本发明实施例中,客户端在本地执行编辑操作后,会在客户端本地存储的客户端编辑操作序列中对已经执行的编辑操作进行相应的记载,从而为后续接收到带协同编辑操作后,在确定其与本地已经完成的编辑操作属于并发操作时,用来确定与待协同编辑操作匹配的转换编辑操作。在确定转换编辑操作时,需要依据待协同编辑操作与本地已经完成的编辑操作的的编辑属性信息进行转换。其中,编辑属性信息包括编辑操作的编辑类型,或者编辑操作的编辑类型以及编辑操作的所述编辑内容地址信息以及撤销删除标识等。
举例而言,假设客户端c已经执行的编辑操作是C,本地维护的客户端编辑操作序列[C],A、B’和C”是服务器向客户端c发送的待协同编辑操作。客户端c收到A操作之后,识别到C、A是并发操作,经过操作转换,客户端c要执行的操作是A’,执行完A’后,客户端c修改本地维护的客户端编辑操作序列变为[A,C’]。之后收到操作B’,B’和C’又构成并发操作,经过操作转换,此时执行的操作是B”,执行完B”后,客户端c修改本地维护的客户端编辑操作序列变为[A,B’,C”]。最后,收到操作C”,客户端c依据本地维护的客户端编辑操作序列[A,B’,C”]识别到C”是已经执行过的操作,则不执行C”。
S430、所述客户端使用所述转换编辑操作,对所述目标编辑内容副本进行处理,以使所述客户端中的所述目标编辑内容副本与服务器以及其他协同客户端中的所述目标编辑内容中的数据保持一致。
在本发明实施例中,不同的客户端都根据预设的协同转换算法以及本地维护的客户端编辑操作序列对服务器发送的待协同编辑操作进行转换生成转换编辑操作,并利用转换编辑操作对本地的文档副本进行处理。
举例而言,假设客户端a已经执行的编辑操作是A,本地维护的客户端编辑操作序列[A],A、B’和C”是服务器向客户端a发送的待协同编辑操作。客户端a收到A操作之后,依据本地维护的客户端编辑操作序列[A]识别到A是已经执行过的操作,则不执行A。之后收到服务器B’操作,B’是服务器对B和A采用预设的协同转换算法经过操作转换生成的转换编辑操作,也即B’是在客户端a在刚刚执行A操作后的文档副本状态下所执行的操作(客户端a通过版本号确定B’是在A之后执行的操作),所以客户端a直接执行B’,并修改本地维护的客户端编辑操作序列变为[A,B’]。最后,客户端a收到操作C”,C”是服务器对A、C转换生成转换操作C’,然后将B’和C’转换生成的C”,所以C”是服务器根据A、B’两个并发操作分别进行转换最后生成的转换操作。因此,客户端a直接执行C”,并修改本地维护的客户端编辑操作序列变为[A,B’,C”]。
假设客户端b已经执行的编辑操作是B,本地维护的客户端编辑操作序列[B],A、B’和C”是服务器向客户端b发送的待协同编辑操作。客户端b收到A操作之后,识别到B、A是并发操作,经过操作转换,客户端b要执行的操作是A’,执行完A’后,客户端b修改本地维护的客户端编辑操作序列变为[A,B’]。之后收到操作B’,依据本地维护的客户端编辑操作序列[A,B’]识别到B’是已经执行过的操作,则不执行B’。最后,收到操作C”,C”是服务器对A、C转换生成转换操作C’,然后将B’和C’转换生成的C”,所以C”是服务器根据A、B’两个并发操作分别进行转换最后生成的转换操作。因此,客户端b直接执行C”,并修改本地维护的客户端编辑操作序列变为[A,B’,C”]。
由此可见,本发明实施例中不同客户端依据本地维护的客户端编辑操作序列以及预设的协同转换算法能够对所有服务器发送的并发操作使用相同的操作顺序,从而使得不同客户端中的文档副本中的数据实现收敛一致。
本发明实施例通过客户端接收服务器发送的针对目标编辑内容副本的待协同编辑操作,如果确定待协同编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与待协同编辑操作匹配的转换编辑操作,并使用转换编辑操作对目标编辑内容副本进行处理,解决现有技术中难以支持文档协同一致性、用户意图保持及协同撤销功能的问题,实现同时有效支持文档的协同一致性、用户意图保持以及协同撤销功能。
在上述技术方案的基础上,S420可以包括:
S421、所述客户端在本地完成第二编辑操作后,将所述第二编辑操作所编辑的目标编辑内容副本的版本号,以及所述客户端的身份标识加入所述第二编辑操作中发送至所述服务器。
其中,版本号是客户端本地文档副本的版本号,在服务器中也相应存储服务器本地文档副本的版本号。文档副本的版本号的作用是识别两个编辑操作是否为并发操作。客户端的身份标识用于唯一标识客户端产生的编辑操作。
在本发明实施例中,每个客户端都会记录本地文档副本的最大版本号,空文档初始版本号是0。客户端在接收服务器发送的针对文档副本的待协同编辑操作之前,首先需要向服务器发送编辑操作,以及该编辑操作对应的文档副本的版本号和相应的客户端的身份标识。例如文档副本的版本号是0,表示客户端产生的编辑操作是基于0版本的操作。身份标识为2,则表示该编辑操作是由客户端B产生的。
S423、所述客户端将所述第二编辑操作存储于客户端编辑操作序列的尾部。
S425、所述客户端如果确定接收的待协同编辑操作的身份标识与所述客户端编辑操作序列中末位编辑操作的身份标识一致,则确定所述转换编辑操作为空操作,并根据所述待协同编辑操作的版本号,更新本地的所述目标编辑内容副本的版本号。
在本发明实施例中,每个编辑操作都由客户端生成唯一的身份标识,客户端通过待协同编辑操作的身份标识判断其是否是本地生成的编辑操作。当待协同编辑操作的身份标识与客户端编辑操作序列中末位编辑操作的身份标识一致时,说明该待协同编辑操作是本地生成的操作,则忽略此操作或者将其转换为空操作(空操作相当于不执行任何操作),并且将本地文档副本的版本号加1,即与待协同编辑操作对应文档副本版本号一致的版本号。
S427、所述客户端如果确定接收的待协同编辑操作的身份标识与所述客户端编辑操作序列中末位编辑操作的身份标识不一致,则根据所述末位编辑操作以及所述待协同编辑操作的编辑属性信息,分别对所述待协同编辑操作以及所述末位编辑操作进行转换,将转换后的所述待协同编辑操作作为转换编辑操作,将转换后的末位编辑操作作为修正编辑操作,并在所述客户端编辑操作序列中,在所述末位编辑操作之前加入所述待协同编辑操作,并将所述末位编辑操作替换为修正编辑操作后,根据所述待协同编辑操作的版本号,更新本地的所述目标编辑内容副本的版本号。
其中,所述编辑属性信息包括:各所述编辑操作的编辑类型,或者各所述编辑操作的编辑类型以及各所述编辑操作的所述编辑内容地址信息的大小关系。
相应的,当待协同编辑操作的身份标识与客户端编辑操作序列中末位编辑操作的身份标识不一致时,说明该待协同编辑操作不是本地生成的操作,并与客户端编辑操作序列中末位编辑操作构成并发操作,采用预设的协同转换算法根据末位编辑操作以及待协同编辑操作的编辑属性信息,分别对待协同编辑操作以及末位编辑操作进行转换。然后,将转换后的待协同编辑操作作为转换编辑操作,将转换后的末位编辑操作作为修正编辑操作,并在客户端编辑操作序列中,在末位编辑操作之前加入待协同编辑操作,并将末位编辑操作替换为修正编辑操作后,根据待协同编辑操作的版本号,更新本地的文档副本的版本号。
举例而言,假设客户端C已经执行的编辑操作是C,版本号是1,本地维护的客户端编辑操作序列[C],A是服务器向客户端C发送的待协同编辑操作,版本号为1。客户端C收到A操作之后,通过各操作中的身份标识识别到C、A是并发操作,经过操作转换,客户端C要执行的操作是A’,执行完A’后,客户端C修改本地维护的客户端编辑操作序列变为[A,C’]。其中,C’是修正编辑操作,客户端C本地的文档副本的版本号更新为2。
本发明实施例通过客户端接收服务器发送的针对目标编辑内容副本的待协同编辑操作,如果确定待协同编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与待协同编辑操作匹配的转换编辑操作,并使用所述转换编辑操作,对文档副本进行处理,以使客户端中的所述目标编辑内容副本与服务器以及其他协同客户端中的所述目标编辑内容中的数据保持一致,同时保持用户意图,实现协同撤销功能。
实施例五
图5是本发明实施例五提供的一种协同编辑方法的流程图,该方法包括如下操作:
S510、第一客户端向服务器发送针对目标编辑内容副本的第一编辑操作。
S520、所述服务器接收所述第一客户端发送的所述第一编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息。
S530、所述服务器如果确定所述第一编辑操作与已接收的至少一个目标编辑操作构成并发操作,则根据与所述目标编辑操作匹配的编辑操作序列中各编辑操作以及所述第一编辑操作的编辑属性信息,对所述第一编辑操作进行转换,得到第一转换编辑操作,其中,所述编辑属性信息包括:编辑操作的编辑类型,或者编辑操作的编辑类型以及编辑操作的所述编辑内容地址信息。
S540、所述服务器使用所述第一转换编辑操作对本地存储的所述目标编辑内容副本进行编辑后,将所述第一转换编辑操作加入所述编辑操作序列的尾部。
S550、所述服务器将所述第一转换编辑操作发送至各协同客户端,所述协同客户端包括发送所述目标编辑操作的至少一个并发客户端;其中,所述第一转换编辑操作用于各所述协同客户端采用所述协同转换算法对自身存储的所述目标编辑内容的副本进行处理,以保持与所述服务器以及其他协同客户端中的所述目标编辑内容中的数据一致性。
S560、所述客户端接收所述服务器发送的所述第一转换编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息。
S570、所述客户端如果确定所述第一转换编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与所述第一转换编辑操作匹配的转换编辑操作。
S580、所述客户端使用所述转换编辑操作,对所述目标编辑内容副本进行处理,以使所述客户端中的所述目标编辑内容副本与服务器以及其他协同客户端中的所述目标编辑内容中的数据保持一致。
举例而言,假设文档初始状态为content=“abc”,addresses=[0,1,2]
客户端C1执行操作O1=insert(2,“1”,2,false),本地文档副本状态变为“ab1c”,[0,1,2,3]
客户端C2执行操作O2=delete(2,“c”,2),本地文档副本状态变为”ab”,[0,1]
客户端C3执行操作O3=insert(3,“2”,3,false),本地文档副本状态变为“abc2”,[0,1,2,3]
O2和O3操作先后抵达服务器,此时服务器上的操作顺序为:
O2,O3’=delete(3,“2”,3),服务器先执行O2,然后执行O3’,此时服务器本地文档副本状态为ab2,[0,1,3]。之后O1抵达服务器,O1先和O2进行转换,得到O1’=insert(2,“1”,2,false)不变,之后O1’和O3’进行转换,得到O1”=insert(2,“1”,2,false)。然后,服务器将O2,O3’,O1”发送给客户端C1、C2和C3,最终服务器和各客户端中所有文档副本针对文档初始状态,即content=“abc”,addresses=[0,1,2],执行的编辑操作列表为[O2,O3’,O1”],且均收敛于状态“ab12”,[0,1,2,4],文档的最终状态正确,保持了用户意图。
同时,本发明实施例还支持协同撤销功能,通过下述举例进行说明:
假设文档初始状态为“abc”,[0,1,2],客户端C1首先执行操作O=delete(2,“c”,2),文档状态为“ab”,[0,1]。接下来,客户端C1和客户端C2分别向服务器发送针对文档状态“ab”,[0,1]执行的操作,并构成并发操作。客户端C1执行还原O操作(撤销操作),O-=insert(2,“c”,2,true),其中,O-表示撤销操作O,客户端C1还原后文档副本变为“abc”,[0,1,2]。客户端C2执行插入操作O2=insert(2,“1”,2,false),客户端C2文档副本变为“ab1”,[0,1,2]。假设O-操作先抵达服务器,首先执行O-,然后执行O2’=insert(2,“1”,2,false),最终服务器和客户端所有的文档副本状态均收敛于“ab1c”,[0,1,2,3],实现了收敛一致性和保持用户意图。
本发明实施例通过服务器接收第一客户端发送的针对目标编辑内容副本的第一编辑操作,在确定第一编辑操作与已接收的至少一个目标编辑操作构成并发操作后,对第一编辑操作进行转换得到第一转换编辑操作并对本地存储的目标编辑内容副本进行编辑,将第一转换编辑操作加入编辑操作序列的尾部并发送至各协同客户端;客户端如果确定第一转换编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与第一转换编辑操作匹配的转换编辑操作,并使用转换编辑操作,对目标编辑内容副本进行处理,解决现有技术中难以支持文档协同一致性、用户意图保持及协同撤销功能的问题,实现同时有效支持文档的协同一致性、用户意图保持以及协同撤销功能,能够降低算法复杂度,提高算法性能。
实施例六
图6是本发明实施例六提供的一种协同编辑装置的示意图,应用于服务器,可执行本发明任意实施例所提供的协同编辑方法,具备执行方法相应的功能模块和有益效果,本实施例可适用于对文档进行协同编辑的情况。
所述装置包括:
操作接收模块610,用于接收第一客户端发送的针对目标编辑内容副本的第一编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息;
操作转换模块620,用于如果确定所述第一编辑操作与已接收的至少一个目标编辑操作构成并发操作,则根据与所述目标编辑操作匹配的编辑操作序列中各编辑操作以及所述第一编辑操作的编辑属性信息,对所述第一编辑操作进行转换,得到第一转换编辑操作;
其中,所述编辑属性信息包括:编辑操作的编辑类型,或者编辑操作的编辑类型以及编辑操作的所述编辑内容地址信息;
操作发送模块630,用于使用所述第一转换编辑操作对本地存储的所述目标编辑内容副本进行编辑后,将所述第一转换编辑操作加入所述编辑操作序列的尾部,并将所述第一转换编辑操作发送至各协同客户端,所述协同客户端包括发送所述目标编辑操作的至少一个并发客户端;
其中,所述第一转换编辑操作用于各所述协同客户端采用预设的协同转换算法对自身存储的所述目标编辑内容的副本进行处理,以保持与所述服务器以及其他协同客户端中的所述目标编辑内容中的数据一致性。
本发明实施例通过服务器接收第一客户端发送的针对目标编辑内容副本的第一编辑操作,在确定第一编辑操作与已接收的至少一个目标编辑操作构成并发操作后,对第一编辑操作进行转换得到第一转换编辑操作;使用第一转换编辑操作对本地存储的目标编辑内容副本进行编辑后,将第一转换编辑操作加入编辑操作序列的尾部,并将第一转换编辑操作发送至各协同客户端;解决现有技术中难以支持文档协同一致性、用户意图保持及协同撤销功能的问题,实现同时有效支持文档的协同一致性、用户意图保持以及协同撤销功能,并降低算法复杂度,提高算法性能。
进一步的,所述编辑属性信息还包括:各所述编辑操作的撤销删除标识。
进一步的,所述操作转换模块620,还用于获取所述第一编辑操作中包括的第一版本号,其中,所述版本号用于指示所述第一编辑操作所编辑的目标编辑内容副本的文档版本号;所述服务器如果确定所述第一版本号,与已经接收到的至少一个目标编辑操作的版本号相同,则确定所述第一编辑操作与所述目标编辑操作构成并发操作。
进一步的,所述操作发送模块630,还用于所述服务器使用所述第一转换编辑操作对本地存储的所述目标编辑内容副本进行编辑后,更新本地的所述目标编辑内容副本的版本号,并将更新后的所述版本号加入所述第一转换编辑操作中。
进一步的,所述目标编辑内容为纯文本文档;所述编辑类型具体包括:插入操作、删除操作以及空操作。
进一步的,所述操作转换模块620,还用于按照从前到后的顺序,依次从所述编辑操作序列中获取一个编辑操作作为当前处理操作;
根据所述当前处理操作与所述第一编辑操作的编辑类型、所述当前处理操作与所述第一编辑操作的编辑内容地址信息的大小关系、所述当前处理操作的撤销删除标识、所述第一编辑操作的撤销删除标识以及预设的协同转换算法,更新所述第一编辑操作中的编辑内容位置信息,和/或编辑内容地址信息;
返回执行所述服务器按照从前到后的顺序,依次从所述编辑操作序列中获取一个编辑操作作为当前处理操作,直至完成对所述编辑操作序列中全部编辑操作的处理,并将处理结束时更新的所述第一编辑操作作为所述第一转换编辑操作。
进一步的,所述目标编辑内容包括:表格文档;所述编辑类型具体包括:插入行、插入列、删除行、删除列、移动行、移动列、修改单元格内容、插入合并单元格、删除合并单元格、插入表格、删除表格。
进一步的,所述操作转换模块620,还用于按照从前到后的顺序,依次从所述编辑操作序列中获取一个编辑操作作为当前处理操作;
如果确定所述当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型满足第一并发处理条件,则根据所述处理编辑类型、所述第一编辑类型以及预设的协同转换算法,更新所述第一编辑操作中的编辑内容;
如果确定所述当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型满足第二并发处理条件,则根据所述当前处理操作与所述第一编辑操作的编辑内容地址信息的大小关系、所述当前处理操作的撤销删除标识、所述第一编辑操作的撤销删除标识以及预设的协同转换算法,更新所述第一编辑操作中的编辑内容位置信息,和/或编辑内容地址信息;
返回执行所述服务器按照从前到后的顺序,依次从所述编辑操作序列中获取一个编辑操作作为当前处理操作,直至完成对所述编辑操作序列中全部编辑操作的处理,并将处理结束时更新的所述第一编辑操作作为所述第一转换编辑操作。
进一步的,所述第一并发处理条件包括:在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对行的编辑,另一个为针对列的编辑。
所述第二并发处理条件包括下述至少一项:
在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对行的编辑,另一个也为针对行的编辑;
在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对列的编辑,另一个也为针对列的编辑;
在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对行或者列的编辑,另一个为针对单元格的编辑。
上述协同编辑装置可执行本发明任意实施例所提供的协同编辑方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的协同编辑方法。
实施例七
图7是本发明实施例七提供的一种协同处理装置的示意图,应用于客户端,可执行本发明任意实施例所提供的协同处理方法,具备执行方法相应的功能模块和有益效果,本实施例可适用于对文档进行协同编辑的情况。
所述装置包括:
操作接收模块710,用于接收服务器发送的针对目标编辑内容副本的待协同编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息;
操作转换模块720,用于如果确定所述待协同编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与所述待协同编辑操作匹配的转换编辑操作;
副本处理模块730,用于使用所述转换编辑操作,对所述目标编辑内容副本进行处理,以使所述客户端中的所述目标编辑内容副本与服务器以及其他协同客户端中的所述目标编辑内容中的数据保持一致。
本发明实施例通过客户端接收服务器发送的针对目标编辑内容副本的待协同编辑操作,如果确定待协同编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与待协同编辑操作匹配的转换编辑操作,并使用转换编辑操作对目标编辑内容副本进行处理,解决现有技术中难以支持文档协同一致性、用户意图保持及协同撤销功能的问题,实现同时有效支持文档的协同一致性、用户意图保持以及协同撤销功能,并降低算法复杂度,提高算法性能。
进一步的,所述操作转换模块720,还用于在本地完成第二编辑操作后,将所述第二编辑操作所编辑的目标编辑内容副本的版本号,以及所述客户端的身份标识加入所述第二编辑操作中发送至所述服务器;
将所述第二编辑操作存储于客户端编辑操作序列的尾部;
如果确定接收的待协同编辑操作的身份标识与所述客户端编辑操作序列中末位编辑操作的身份标识一致,则确定所述转换编辑操作为空操作,并根据所述待协同编辑操作的版本号,更新本地的所述目标编辑内容副本的版本号;
如果确定接收的待协同编辑操作的身份标识与所述客户端编辑操作序列中末位编辑操作的身份标识不一致,则根据所述末位编辑操作以及所述待协同编辑操作的编辑属性信息,分别对所述待协同编辑操作以及所述末位编辑操作进行转换,将转换后的所述待协同编辑操作作为转换编辑操作,将转换后的末位编辑操作作为修正编辑操作,并在所述客户端编辑操作序列中,在所述末位编辑操作之前加入所述待协同编辑操作,并将所述末位编辑操作替换为修正编辑操作后,根据所述待协同编辑操作的版本号,更新本地的所述目标编辑内容副本的版本号;
其中,所述编辑属性信息包括:各所述编辑操作的编辑类型,或者各所述编辑操作的编辑类型以及各所述编辑操作的所述编辑内容地址信息的大小关系。
上述协同处理装置可执行本发明任意实施例所提供的协同处理方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的协同处理方法。
实施例八
图8为本发明实施例八提供的一种协同编辑设备的结构示意图。图8示出了适于用来实现本发明实施方式的协同编辑设备812的框图。图8显示的协同编辑设备812仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,协同编辑设备812以通用计算设备的形式表现。协同编辑设备812的组件可以包括但不限于:一个或者多个处理器816,存储装置828,连接不同系统组件(包括存储装置828和处理器816)的总线818。
总线818表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
协同编辑设备812典型地包括多种计算机系统可读介质。这些介质可以是任何能够被协同编辑设备812访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储装置828可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)830和/或高速缓存存储器832。协同编辑设备812可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统834可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线818相连。存储装置828可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块826的程序836,可以存储在例如存储装置828中,这样的程序模块826包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块826通常执行本发明所描述的实施例中的功能和/或方法。
协同编辑设备812也可以与一个或多个外部设备814(例如键盘、指向设备、摄像头、显示器824等)通信,还可与一个或者多个使得用户能与该协同编辑设备812交互的设备通信,和/或与使得该协同编辑设备812能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口822进行。并且,协同编辑设备812还可以通过网络适配器820与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器820通过总线818与协同编辑设备812的其它模块通信。应当明白,尽管图中未示出,可以结合协同编辑设备812使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器816通过运行存储在存储装置828中的程序,从而执行各种功能应用以及数据处理,例如实现本发明上述实施例所提供的协同编辑方法。
通过所述协同编辑设备接收第一客户端发送的针对目标编辑内容副本的第一编辑操作,在确定第一编辑操作与已接收的至少一个目标编辑操作构成并发操作后,对第一编辑操作进行转换得到第一转换编辑操作;使用第一转换编辑操作对本地存储的目标编辑内容副本进行编辑后,将第一转换编辑操作加入编辑操作序列的尾部,并将第一转换编辑操作发送至各协同客户端;解决现有技术中难以支持文档协同一致性、用户意图保持及协同撤销功能的问题,实现同时有效支持文档的协同一致性、用户意图保持以及协同撤销功能,并降低算法复杂度,提高算法性能。
实施例九
图9为本发明实施例九提供的一种协同处理设备的结构示意图。图9示出了适于用来实现本发明实施方式的协同处理设备912的框图。图9显示的协同处理设备912仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,协同处理设备912以通用计算设备的形式表现。协同处理设备912的组件可以包括但不限于:一个或者多个处理器916,存储装置928,连接不同系统组件(包括存储装置928和处理器916)的总线918。
总线918表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
协同处理设备912典型地包括多种计算机系统可读介质。这些介质可以是任何能够被协同处理设备912访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储装置928可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)930和/或高速缓存存储器932。协同处理设备912可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统934可以用于读写不可移动的、非易失性磁介质(图9未显示,通常称为“硬盘驱动器”)。尽管图9中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线918相连。存储装置928可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块926的程序936,可以存储在例如存储装置928中,这样的程序模块926包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块926通常执行本发明所描述的实施例中的功能和/或方法。
协同处理设备912也可以与一个或多个外部设备914(例如键盘、指向设备、摄像头、显示器924等)通信,还可与一个或者多个使得用户能与该协同处理设备912交互的设备通信,和/或与使得该协同处理设备912能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口922进行。并且,协同处理设备912还可以通过网络适配器920与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器920通过总线918与协同处理设备912的其它模块通信。应当明白,尽管图中未示出,可以结合协同处理设备912使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器916通过运行存储在存储装置928中的程序,从而执行各种功能应用以及数据处理,例如实现本发明上述实施例所提供的协同处理方法。
通过所述协同处理设备接收服务器发送的针对目标编辑内容副本的待协同编辑操作,如果确定待协同编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与待协同编辑操作匹配的转换编辑操作,并使用转换编辑操作对目标编辑内容副本进行处理,解决现有技术中难以支持文档协同一致性、用户意图保持及协同撤销功能的问题,实现同时有效支持文档的协同一致性、用户意图保持以及协同撤销功能,并降低算法复杂度,提高算法性能。
实施例十
本发明实施例十还提供一种存储计算机程序的计算机存储介质,所述计算机程序在由计算机处理器执行时用于执行本发明上述实施例任一所述的协同编辑方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
实施例十一
本发明实施例十一还提供一种存储计算机程序的计算机存储介质,所述计算机程序在由计算机处理器执行时用于执行本发明上述实施例任一所述的协同处理方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种协同编辑方法,其特征在于,包括:
服务器接收第一客户端发送的针对目标编辑内容副本的第一编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息;
所述服务器如果确定所述第一编辑操作与已接收的至少一个目标编辑操作构成并发操作,则根据与所述目标编辑操作匹配的编辑操作序列中各编辑操作以及所述第一编辑操作的编辑属性信息,对所述第一编辑操作进行转换,得到第一转换编辑操作;
其中,所述编辑属性信息包括:编辑操作的编辑类型,或者编辑操作的编辑类型以及编辑操作的所述编辑内容地址信息;
所述服务器使用所述第一转换编辑操作对本地存储的所述目标编辑内容副本进行编辑后,将所述第一转换编辑操作加入所述编辑操作序列的尾部,并将所述第一转换编辑操作发送至各协同客户端,所述协同客户端包括发送所述目标编辑操作的至少一个并发客户端;
其中,所述第一转换编辑操作用于各所述协同客户端采用预设的协同转换算法对自身存储的所述目标编辑内容的副本进行处理,以保持与所述服务器以及其他协同客户端中的所述目标编辑内容中的数据一致性。
2.根据权利要求1所述的方法,其特征在于,所述编辑属性信息还包括:各所述编辑操作的撤销删除标识。
3.根据权利要求2所述的方法,其特征在于,所述服务器如果确定所述第一编辑操作与已接收的至少一个目标编辑操作构成并发操作,具体包括:
所述服务器获取所述第一编辑操作中包括的第一版本号,其中,所述版本号用于指示所述第一编辑操作所编辑的目标编辑内容副本的文档版本号;
所述服务器如果确定所述第一版本号,与已经接收到的至少一个目标编辑操作的版本号相同,则确定所述第一编辑操作与所述目标编辑操作构成并发操作;
所述服务器使用所述第一转换编辑操作对本地存储的所述目标编辑内容副本进行编辑后,将所述第一转换编辑操作加入所述编辑操作序列的尾部,并将所述第一转换编辑操作发送至各协同客户端,进一步包括:
所述服务器使用所述第一转换编辑操作对本地存储的所述目标编辑内容副本进行编辑后,更新本地的所述目标编辑内容副本的版本号,并将更新后的所述版本号加入所述第一转换编辑操作中。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述目标编辑内容为纯文本文档;
所述编辑类型具体包括:插入操作、删除操作以及空操作。
5.根据权利要求4所述的方法,其特征在于,所述服务器根据与所述目标编辑操作匹配的编辑操作序列中各编辑操作以及所述第一编辑操作的编辑属性信息,对所述第一编辑操作进行转换,得到第一转换编辑操作,包括:
所述服务器按照从前到后的顺序,依次从所述编辑操作序列中获取一个编辑操作作为当前处理操作;
所述服务器根据所述当前处理操作与所述第一编辑操作的编辑类型、所述当前处理操作与所述第一编辑操作的编辑内容地址信息的大小关系、所述当前处理操作的撤销删除标识、所述第一编辑操作的撤销删除标识以及预设的协同转换算法,更新所述第一编辑操作中的编辑内容位置信息,和/或编辑内容地址信息;
返回执行所述服务器按照从前到后的顺序,依次从所述编辑操作序列中获取一个编辑操作作为当前处理操作,直至完成对所述编辑操作序列中全部编辑操作的处理,并将处理结束时更新的所述第一编辑操作作为所述第一转换编辑操作。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述目标编辑内容包括:表格文档;
所述编辑类型具体包括:插入行、插入列、删除行、删除列、移动行、移动列、修改单元格内容、插入合并单元格、删除合并单元格、插入表格、删除表格。
7.根据权利要求6所述的方法,其特征在于,所述服务器根据与所述目标编辑操作匹配的编辑操作序列中各的编辑操作以及所述第一编辑操作的编辑属性信息,对所述第一编辑操作进行转换,得到第一转换编辑操作,包括:
所述服务器按照从前到后的顺序,依次从所述编辑操作序列中获取一个编辑操作作为当前处理操作;
所述服务器如果确定所述当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型满足第一并发处理条件,则根据所述处理编辑类型、所述第一编辑类型以及预设的协同转换算法,更新所述第一编辑操作中的编辑内容;
所述服务器如果确定所述当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型满足第二并发处理条件,则根据所述当前处理操作与所述第一编辑操作的编辑内容地址信息的大小关系、所述当前处理操作的撤销删除标识、所述第一编辑操作的撤销删除标识以及预设的协同转换算法,更新所述第一编辑操作中的编辑内容位置信息,和/或编辑内容地址信息;
返回执行所述服务器按照从前到后的顺序,依次从所述编辑操作序列中获取一个编辑操作作为当前处理操作,直至完成对所述编辑操作序列中全部编辑操作的处理,并将处理结束时更新的所述第一编辑操作作为所述第一转换编辑操作。
8.根据权利要求7所述的方法,其特征在于,所述第一并发处理条件包括:在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对行的编辑,另一个为针对列的编辑。
所述第二并发处理条件包括下述至少一项:
在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对行的编辑,另一个也为针对行的编辑;
在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对列的编辑,另一个也为针对列的编辑;
在当前处理操作的处理编辑类型与所述第一编辑操作的第一编辑类型中,一个为针对行或者列的编辑,另一个为针对单元格的编辑。
9.一种协同处理方法,其特征在于,包括:
客户端接收服务器发送的针对目标编辑内容副本的待协同编辑操作,所述编辑操作包括:编辑类型,编辑内容、编辑内容位置信息、及编辑内容地址信息;
所述客户端如果确定所述待协同编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与所述待协同编辑操作匹配的转换编辑操作;
所述客户端使用所述转换编辑操作,对所述目标编辑内容副本进行处理,以使所述客户端中的所述目标编辑内容副本与服务器以及其他协同客户端中的所述目标编辑内容中的数据保持一致。
10.根据权利要求9所述的方法,其特征在于,所述客户端如果确定所述待协同编辑操作与本地已经完成的编辑操作属于并发操作,则根据本地维护的客户端编辑操作序列,确定与所述待协同编辑操作匹配的转换编辑操作,包括:
所述客户端在本地完成第二编辑操作后,将所述第二编辑操作所编辑的目标编辑内容副本的版本号,以及所述客户端的身份标识加入所述第二编辑操作中发送至所述服务器;
所述客户端将所述第二编辑操作存储于客户端编辑操作序列的尾部;
所述客户端如果确定接收的待协同编辑操作的身份标识与所述客户端编辑操作序列中末位编辑操作的身份标识一致,则确定所述转换编辑操作为空操作,并根据所述待协同编辑操作的版本号,更新本地的所述目标编辑内容副本的版本号;
所述客户端如果确定接收的待协同编辑操作的身份标识与所述客户端编辑操作序列中末位编辑操作的身份标识不一致,则根据所述末位编辑操作以及所述待协同编辑操作的编辑属性信息,分别对所述待协同编辑操作以及所述末位编辑操作进行转换,将转换后的所述待协同编辑操作作为转换编辑操作,将转换后的末位编辑操作作为修正编辑操作,并在所述客户端编辑操作序列中,在所述末位编辑操作之前加入所述待协同编辑操作,并将所述末位编辑操作替换为修正编辑操作后,根据所述待协同编辑操作的版本号,更新本地的所述目标编辑内容副本的版本号;
其中,所述编辑属性信息包括:各所述编辑操作的编辑类型,或者各所述编辑操作的编辑类型以及各所述编辑操作的所述编辑内容地址信息的大小关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711336937.6A CN107943777B (zh) | 2017-12-14 | 2017-12-14 | 一种协同编辑、协同处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711336937.6A CN107943777B (zh) | 2017-12-14 | 2017-12-14 | 一种协同编辑、协同处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107943777A true CN107943777A (zh) | 2018-04-20 |
CN107943777B CN107943777B (zh) | 2021-07-06 |
Family
ID=61943241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711336937.6A Active CN107943777B (zh) | 2017-12-14 | 2017-12-14 | 一种协同编辑、协同处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107943777B (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408790A (zh) * | 2018-10-17 | 2019-03-01 | 北京我知科技有限公司 | 一种多人编辑文档的方法 |
CN109492200A (zh) * | 2018-10-26 | 2019-03-19 | 天津字节跳动科技有限公司 | 协同文档还原方法、装置、存储介质及电子设备 |
CN109491742A (zh) * | 2018-10-31 | 2019-03-19 | 天津字节跳动科技有限公司 | 页面表格渲染方法及装置 |
CN109710909A (zh) * | 2018-12-29 | 2019-05-03 | 腾讯科技(深圳)有限公司 | 内容获取方法、装置、终端及存储介质 |
CN109829141A (zh) * | 2018-12-28 | 2019-05-31 | 陈德芹 | 一种项目表格生成方法及装置 |
CN110019279A (zh) * | 2019-04-11 | 2019-07-16 | 北京字节跳动网络技术有限公司 | 在线文档的协同更新方法、装置、设备及存储介质 |
CN110162761A (zh) * | 2019-05-24 | 2019-08-23 | 北京字节跳动网络技术有限公司 | 文档的协同编辑方法、装置、设备及存储介质 |
CN110287462A (zh) * | 2019-07-01 | 2019-09-27 | 上海一者信息科技有限公司 | 一种基于浏览器的跟踪修订方法及系统 |
CN110738022A (zh) * | 2019-10-22 | 2020-01-31 | 上海海事大学 | 一种基于操作转换的html实时协同编辑方法 |
CN111368519A (zh) * | 2020-03-17 | 2020-07-03 | 北京字节跳动网络技术有限公司 | 一种线上表格的编辑方法、装置、设备和存储介质 |
CN111831944A (zh) * | 2020-07-09 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 多媒体处理方法、装置、客户端、服务器及存储介质 |
CN112069353A (zh) * | 2020-09-15 | 2020-12-11 | 杭州网易云音乐科技有限公司 | 音乐播放控制方法、装置、存储介质及电子设备 |
CN112307731A (zh) * | 2019-07-16 | 2021-02-02 | 珠海金山办公软件有限公司 | 一种跨表格引用方法、装置、服务器及客户端设备 |
CN112906355A (zh) * | 2021-01-20 | 2021-06-04 | 长沙市到家悠享网络科技有限公司 | 协同编辑方法、装置、设备和存储介质 |
CN112987915A (zh) * | 2021-02-04 | 2021-06-18 | 复旦大学 | 基于ast的应用于vr会议协同白板编辑任务的方法 |
CN113190518A (zh) * | 2021-04-12 | 2021-07-30 | 中国人民解放军海军工程大学 | 基于移动云计算的协同编辑中一致性维护方法 |
CN113268964A (zh) * | 2020-07-23 | 2021-08-17 | 腾讯科技(深圳)有限公司 | 一种表格编辑方法、装置、设备及存储介质 |
CN113378524A (zh) * | 2021-06-07 | 2021-09-10 | 北京百度网讯科技有限公司 | 更新文档的存储信息的方法、装置、设备和存储介质 |
US11409706B2 (en) * | 2016-08-04 | 2022-08-09 | Hancom Inc. | Document cooperation supporting apparatus for supporting simultaneous edit of document, and operating method thereof |
CN115238654A (zh) * | 2022-07-14 | 2022-10-25 | 思乐格计算技术(南京)有限公司 | 一种多人在线实时协作编辑系统 |
CN115706809A (zh) * | 2021-08-17 | 2023-02-17 | 上海幻电信息科技有限公司 | 基于多人协作的资源处理方法、装置及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853199A (zh) * | 2010-05-13 | 2010-10-06 | 复旦大学 | 基于操作效果关系的选择性撤销方法 |
CN103186383A (zh) * | 2013-04-16 | 2013-07-03 | 上海理工大学 | 协同设计中维持关联操作语义一致性的方法 |
CN104462037A (zh) * | 2014-11-04 | 2015-03-25 | 华南理工大学 | 文档协同编辑中的一致性维护方法 |
US20150199307A1 (en) * | 2012-08-08 | 2015-07-16 | Google Inc. | Pluggable Architecture For Optimizing Versioned Rendering of Collaborative Documents |
CN107277112A (zh) * | 2017-05-24 | 2017-10-20 | 复旦大学 | 一种可伸缩和高效的地址空间转换算法 |
US10063660B1 (en) * | 2018-02-09 | 2018-08-28 | Picmonkey, Llc | Collaborative editing of media in a mixed computing environment |
-
2017
- 2017-12-14 CN CN201711336937.6A patent/CN107943777B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853199A (zh) * | 2010-05-13 | 2010-10-06 | 复旦大学 | 基于操作效果关系的选择性撤销方法 |
US20150199307A1 (en) * | 2012-08-08 | 2015-07-16 | Google Inc. | Pluggable Architecture For Optimizing Versioned Rendering of Collaborative Documents |
CN103186383A (zh) * | 2013-04-16 | 2013-07-03 | 上海理工大学 | 协同设计中维持关联操作语义一致性的方法 |
CN104462037A (zh) * | 2014-11-04 | 2015-03-25 | 华南理工大学 | 文档协同编辑中的一致性维护方法 |
CN107277112A (zh) * | 2017-05-24 | 2017-10-20 | 复旦大学 | 一种可伸缩和高效的地址空间转换算法 |
US10063660B1 (en) * | 2018-02-09 | 2018-08-28 | Picmonkey, Llc | Collaborative editing of media in a mixed computing environment |
Non-Patent Citations (2)
Title |
---|
何发智 等: "支持操作意图一致性的实时协同编辑算法综述", 《HTTP://WWW.CNKI.NET/KCMS/DETAIL/11.1826.TP.20170120.1028.004.HTML》 * |
孙敏 等: "一种协同编辑中并发控制算法的研究", 《计算机科学》 * |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11409706B2 (en) * | 2016-08-04 | 2022-08-09 | Hancom Inc. | Document cooperation supporting apparatus for supporting simultaneous edit of document, and operating method thereof |
CN109408790B (zh) * | 2018-10-17 | 2023-08-01 | 武汉复临科技有限公司 | 一种多人编辑文档的方法 |
CN109408790A (zh) * | 2018-10-17 | 2019-03-01 | 北京我知科技有限公司 | 一种多人编辑文档的方法 |
CN109492200A (zh) * | 2018-10-26 | 2019-03-19 | 天津字节跳动科技有限公司 | 协同文档还原方法、装置、存储介质及电子设备 |
CN109491742A (zh) * | 2018-10-31 | 2019-03-19 | 天津字节跳动科技有限公司 | 页面表格渲染方法及装置 |
CN109491742B (zh) * | 2018-10-31 | 2021-10-22 | 天津字节跳动科技有限公司 | 页面表格渲染方法及装置 |
CN109829141A (zh) * | 2018-12-28 | 2019-05-31 | 陈德芹 | 一种项目表格生成方法及装置 |
CN109829141B (zh) * | 2018-12-28 | 2023-06-09 | 陈德芹 | 一种项目表格生成方法及装置 |
CN109710909A (zh) * | 2018-12-29 | 2019-05-03 | 腾讯科技(深圳)有限公司 | 内容获取方法、装置、终端及存储介质 |
CN110019279A (zh) * | 2019-04-11 | 2019-07-16 | 北京字节跳动网络技术有限公司 | 在线文档的协同更新方法、装置、设备及存储介质 |
CN110162761A (zh) * | 2019-05-24 | 2019-08-23 | 北京字节跳动网络技术有限公司 | 文档的协同编辑方法、装置、设备及存储介质 |
CN110287462A (zh) * | 2019-07-01 | 2019-09-27 | 上海一者信息科技有限公司 | 一种基于浏览器的跟踪修订方法及系统 |
CN110287462B (zh) * | 2019-07-01 | 2023-03-28 | 上海一者信息科技有限公司 | 一种基于浏览器的跟踪修订方法及系统 |
CN112307731B (zh) * | 2019-07-16 | 2023-11-28 | 珠海金山办公软件有限公司 | 一种跨表格引用方法、装置、服务器及客户端设备 |
CN112307731A (zh) * | 2019-07-16 | 2021-02-02 | 珠海金山办公软件有限公司 | 一种跨表格引用方法、装置、服务器及客户端设备 |
CN110738022B (zh) * | 2019-10-22 | 2023-06-16 | 上海海事大学 | 一种基于操作转换的html实时协同编辑方法 |
CN110738022A (zh) * | 2019-10-22 | 2020-01-31 | 上海海事大学 | 一种基于操作转换的html实时协同编辑方法 |
CN111368519A (zh) * | 2020-03-17 | 2020-07-03 | 北京字节跳动网络技术有限公司 | 一种线上表格的编辑方法、装置、设备和存储介质 |
CN111368519B (zh) * | 2020-03-17 | 2023-05-02 | 北京字节跳动网络技术有限公司 | 一种线上表格的编辑方法、装置、设备和存储介质 |
CN111831944A (zh) * | 2020-07-09 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 多媒体处理方法、装置、客户端、服务器及存储介质 |
CN111831944B (zh) * | 2020-07-09 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 多媒体处理方法、装置、客户端、服务器及存储介质 |
CN113268964A (zh) * | 2020-07-23 | 2021-08-17 | 腾讯科技(深圳)有限公司 | 一种表格编辑方法、装置、设备及存储介质 |
CN113268964B (zh) * | 2020-07-23 | 2022-01-18 | 腾讯科技(深圳)有限公司 | 一种表格编辑方法、装置、设备及存储介质 |
CN112069353A (zh) * | 2020-09-15 | 2020-12-11 | 杭州网易云音乐科技有限公司 | 音乐播放控制方法、装置、存储介质及电子设备 |
CN112069353B (zh) * | 2020-09-15 | 2024-04-02 | 杭州网易云音乐科技有限公司 | 音乐播放控制方法、装置、存储介质及电子设备 |
CN112906355A (zh) * | 2021-01-20 | 2021-06-04 | 长沙市到家悠享网络科技有限公司 | 协同编辑方法、装置、设备和存储介质 |
CN112987915A (zh) * | 2021-02-04 | 2021-06-18 | 复旦大学 | 基于ast的应用于vr会议协同白板编辑任务的方法 |
CN113190518B (zh) * | 2021-04-12 | 2022-04-15 | 中国人民解放军海军工程大学 | 基于移动云计算的协同编辑中一致性维护方法 |
CN113190518A (zh) * | 2021-04-12 | 2021-07-30 | 中国人民解放军海军工程大学 | 基于移动云计算的协同编辑中一致性维护方法 |
CN113378524A (zh) * | 2021-06-07 | 2021-09-10 | 北京百度网讯科技有限公司 | 更新文档的存储信息的方法、装置、设备和存储介质 |
CN115706809A (zh) * | 2021-08-17 | 2023-02-17 | 上海幻电信息科技有限公司 | 基于多人协作的资源处理方法、装置及系统 |
WO2023020092A1 (zh) * | 2021-08-17 | 2023-02-23 | 上海幻电信息科技有限公司 | 基于多人协作的资源处理方法、装置及系统 |
CN115238654A (zh) * | 2022-07-14 | 2022-10-25 | 思乐格计算技术(南京)有限公司 | 一种多人在线实时协作编辑系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107943777B (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107943777A (zh) | 一种协同编辑、协同处理方法、装置、设备及存储介质 | |
US7734577B2 (en) | Composite user interface and framework | |
US8743122B2 (en) | Interactive visualization for exploring multi-modal, multi-relational, and multivariate graph data | |
KR101183401B1 (ko) | 액셔너블 이메일 문서를 위한 장치 및 방법 | |
US9189125B2 (en) | Systems and methods for concurrent online and offline document processing | |
CN108140018A (zh) | 创作用于基于文本的文档的视觉表示 | |
CN106648608A (zh) | 一种灵活方便的流程图构建方法 | |
US9304981B1 (en) | System and method for providing an inter-application overlay to communicate information between users and tools in the EDA design flow | |
CN102200968A (zh) | 一种excel表格数据排重的方法和装置 | |
CN108875077A (zh) | 数据库的列存储方法、装置、服务器及存储介质 | |
JP2008217651A (ja) | 設計支援装置、設計支援方法、およびプログラム | |
CN116360879A (zh) | 一种多层级信息框架的创建方法以及装置 | |
CN108958731A (zh) | 一种应用程序界面生成方法、装置、设备和存储介质 | |
JPWO2005098661A1 (ja) | 文書処理装置及び文書処理方法 | |
CN111897837A (zh) | 数据查询方法、装置、设备和介质 | |
CN110209744A (zh) | 基于联盟链的关系型数据库及其操作方法和装置 | |
CN103678355B (zh) | 文本挖掘方法和文本挖掘装置 | |
JPH10312392A (ja) | データベースの表示方法 | |
JP6251860B2 (ja) | 情報管理装置並びにファイル管理方法 | |
CN103713864B (zh) | 帐票输出装置和帐票输出方法 | |
CN107515867A (zh) | 一种NoSQL数据库的数据存储、查询方法和装置以及一种rowKey全组合的生成方法和装置 | |
CN111985255A (zh) | 翻译方法、翻译装置、电子设备及存储介质 | |
JP2006338134A (ja) | 設備データの管理方法およびシステム | |
CN117827802B (zh) | 一种基于Hbase的数据处理系统、方法及装置 | |
CN113032428B (zh) | 一种优化数据库技术实现电网仿真效率的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |