混合文档的协同编辑方法及装置与流程

文档序号:31999119发布日期:2022-11-02 10:18阅读:32来源:国知局
混合文档的协同编辑方法及装置与流程

1.本说明书一个或多个实施例涉及协同编辑领域,尤其涉及一种混合文档的协同编辑方法及装置。


背景技术:

2.在实际生活中,经常需要多人对同一文档进行编辑。传统的处理方式将文档在各用户之间反复传递、反复更新,但这种传统的处理方式可能存在文档丢失或者文档版本不正确等一些列问题,导致工作效率低下,无法满足需求。为解决前述缺陷,提出了文档协同编辑。
3.在相关技术中,文档协同编辑通过协同调度算法实现了多用户同时编辑同一个仅包含一种协同文档模型的单一文档。


技术实现要素:

4.有鉴于此,本说明书一个或多个实施例提供一种混合文档的协同编辑方法及装置,可以实现对包含对应于多种不同编辑器的文档内容的混合文档的协同编辑。
5.为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
6.根据本说明书一个或多个实施例的第一方面,提出了一种混合文档的协同编辑方法,应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端,所述混合文档包含对应于多种类型的文档编辑器的文档内容对象;所述方法包括:
7.针对所述混合文档中的每一文档内容对象分别创建相应的协同文档实例,所述协同文档实例通过协同文档模型参与协同编辑;其中,对于采用不同类型的文档编辑器的多个文档内容对象,相应协同文档实例采用的协同文档模型也不同;
8.确定针对所述混合文档中的协同文档实例的协同编辑指令对应的原始原子操作;
9.将所述原始原子操作扩展为针对所述混合文档的扩展原子操作,所述扩展原子操作包含产生所述原始原子操作的协同文档实例的实例标识、该协同文档实例采用的协同文档模型的类型信息以及所述原始原子操作;
10.将所述扩展原子操作发送至所述文档协同编辑系统的服务端,以共享至对所述混合文档进行协同编辑的其他客户端。
11.根据本说明书一个或多个实施例的第二方面,提出了一种混合文档的协同编辑方法,应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端,所述混合文档包含对应于多种类型的文档编辑器的文档内容对象;针对所述混合文档中的每一文档内容对象分别创建有相应的协同文档实例,所述协同文档实例通过协同文档模型参与协同编辑;其中,对于采用不同类型的文档编辑器的多个文档内容对象,相应协同文档实例采用的协同文档模型也不同;所述方法包括:
12.接收文档协同编辑系统的服务端发送的针对所述混合文档的扩展原子操作;所述扩展原子操作由针对所述混合文档中的协同文档实例的协同编辑指令对应的原始原子操
作扩展所得,包含产生所述原始原子操作的协同文档实例的实例标识、该协同文档实例采用的协同文档模型的类型信息以及所述原始原子操作;
13.基于所述扩展原子操作包含的协同文档模型的类型信息,对所述扩展原子操作进行解析;
14.将解析得到的原子操作发送至与所述扩展原子操作包含的实例标识对应的协同文档实例进行处理。
15.根据本说明书一个或多个实施例的第三方面,提出了一种混合文档的协同编辑装置,应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端,所述混合文档包含对应于多种类型的文档编辑器的文档内容对象;所述装置包括:
16.实例创建单元,用于针对所述混合文档中的每一文档内容对象分别创建相应的协同文档实例,所述协同文档实例通过协同文档模型参与协同编辑;其中,对于采用不同类型的文档编辑器的多个文档内容对象,相应协同文档实例采用的协同文档模型也不同;
17.原始原子操作确定单元,用于确定针对所述混合文档中的协同文档实例的协同编辑指令对应的原始原子操作;
18.原始原子操作扩展单元,用于将所述原始原子操作扩展为针对所述混合文档的扩展原子操作,所述扩展原子操作包含产生所述原始原子操作的协同文档实例的实例标识、该协同文档实例采用的协同文档模型的类型信息以及所述原始原子操作;
19.扩展原子操作发送单元,用于将所述扩展原子操作发送至所述文档协同编辑系统的服务端,以共享至对所述混合文档进行协同编辑的其他客户端。
20.根据本说明书一个或多个实施例的第四方面,提出了一种混合文档的协同编辑装置,应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端,所述混合文档包含对应于多种类型的文档编辑器的文档内容对象;针对所述混合文档中的每一文档内容对象分别创建有相应的协同文档实例,所述协同文档实例通过协同文档模型参与协同编辑;其中,对于采用不同类型的文档编辑器的多个文档内容对象,相应协同文档实例采用的协同文档模型也不同;所述装置包括:
21.扩展原子操作接收单元,用于接收文档协同编辑系统的服务端发送的针对所述混合文档的扩展原子操作;所述扩展原子操作由针对所述混合文档中的协同文档实例的协同编辑指令对应的原始原子操作扩展所得,包含产生所述原始原子操作的协同文档实例的实例标识、该协同文档实例采用的协同文档模型的类型信息以及所述原始原子操作;
22.扩展原子操作解析单元,用于基于所述扩展原子操作包含的协同文档模型的类型信息,对所述扩展原子操作进行解析;
23.原子操作发送单元,用于将解析得到的原子操作发送至与所述扩展原子操作包含的实例标识对应的协同文档实例进行处理。
24.根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
25.处理器;
26.用于存储处理器可执行指令的存储器;
27.其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面所述的方法。
28.根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,
其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面所述方法的步骤。
29.由以上技术方案可见,本说明书一个或多个实施例中,处于文档协同编辑系统中对混合文档进行协同编辑的客户端将该混合文档创建为多个单独的协同文档实例,模拟出一种支持多种协同文档模型的混合协同文档模型,使得混合文档能够适应于协同编辑的场景,将本地用户针对该混合文档发起的协议编辑指令确定为针对该混合文档中的协同文档实例的原始原子操作,并将该原始原子操作扩展为扩展原子操作,使得可以区分出各原始原子操作对应的协同文档实例并指明该协同文档实例的协同文档模型,进而将该扩展原子操作发送至处于文档协同编辑系统的服务端,以共享至对该混合文档进行协同编辑的其他客户端,使得其他客户端可根据接收到的扩展原子操作将对应的原子操作准确下发至各协同文档实例,从而完成本地用户发起的协同编辑指令,实现对混合文档的协同编辑。
附图说明
30.图1是一示例性实施例提供的一种支持混合文档的协同编辑的文档协同编辑系统的架构示意图。
31.图2是一示例性实施例提供的一种应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端的混合文档的协同编辑方法的流程图。
32.图3是一示例性实施例提供的一种用于对混合文档进行协同编辑的客户端的结构示意图。
33.图4是一示例性实施例提供的一种应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端的混合文档的协同编辑方法的流程图。
34.图5是一示例性实施例提供的一种设备的结构示意图。
35.图6是一示例性实施例提供的一种应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端的混合文档的协同编辑装置的框图。
36.图7是一示例性实施例提供的一种应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端的混合文档的协同编辑装置的框图。
具体实施方式
37.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
38.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
39.现有文档协同编辑已经实现两人或两人以上同时编辑同一个仅包含一种协同文
档模型的单一文档,双方编辑操作互不干扰且能够自动解决冲突,但由于不同文档类型采用的不同协同编辑模型,譬如,文字编辑器的原子操作在于文字、段落的增删改,表格编辑器的原子操作在单元格、表格的编辑,协同编辑模型仅能对应一种协同文档类型,现有的协同编辑技术无法对包含对应于不同协同编辑模型的内容的混合文档进行协同编辑。
40.因此,为解决该问题,本说明书提出了一种混合文档的协同编辑方案,能够实现针对混合文档的协同编辑,满足万物互联的需求。
41.为对本说明书一个或多个实施例进行进一步说明,提供下列实施例:
42.图1是一示例性实施例提供的一种支持混合文档的协同编辑的文档协同编辑系统的架构示意图。如图1所示,可以包括终端设备11、终端设备12、终端设备13和服务器14。
43.终端设备11、12、13是用户可以使用的一种类型的电子设备,当然用户所使用的电子设备并不限于此,例如还可以包括:手机、平板设备、笔记本电脑、掌上电脑(pdas,personal digital assistants)、可穿戴设备(如智能眼镜、智能手表等)等,本说明书并不对此进行限制。在运行过程中,终端设备11、12、13上运行有文档协同编辑的客户端程序,使得该终端设备11、12、13被配置为该文档协同应用的客户端。该客户端程序可以实现,将包含对应于多个不同文档编辑器的文档内容的混合文档划分为若干协同文档实例的划分功能,使得客户端可以基于该划分功能将混合文档隔离为对应于不同协同文档模型的多个协同文档实例。该客户端程序还可以实现将针对混合文档中的协同文档实例的原始原子操作扩展为针对混合文档的扩展原子操作的扩展功能,以及将针对混合文档的扩展原子操作解析为针对混合文档中协同文档实例的原子操作的解析功能,使得客户端可以基于该扩展功能以及解析功能实现混合文档的协同编辑。
44.服务器14可以为包含一独立主机的物理服务器,或者该服务器14可以为主机集群承载的虚拟服务器。服务器14上运行有文档协同编辑的服务端程序,使得该服务器14被配置为该文档协同编辑的服务端。该服务端程序可以配合于上述的客户端,譬如可以接收终端设备11上装载的客户端发送的针对混合文档的扩展原子操作并存储,以便将该扩展原子操作发送至终端设备12和终端设备13上装载的客户端,或者,将已存储的由终端设备12和终端设备13上装载的客户端产生的针对混合文档的扩展原子操作发送至终端设备11上装载的客户端,以使处于文档协同编辑系统中的客户端均能执行各用户发起的协同编辑指令,实现混合文档的协同编辑。
45.对于终端设备11、12、13分别与服务器14之间进行的交互方式,可以包括多种类型的有线或无线交互,本说明书并不对此进行限制。
46.图2是一示例性实施例提供的一种应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端的混合文档的协同编辑方法的流程图。如图2所示,该方法应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端,该方法可以包括以下步骤:
47.步骤202,针对所述混合文档中的每一文档内容对象分别创建相应的协同文档实例,所述协同文档实例通过协同文档模型参与协同编辑;其中,对于采用不同类型的文档编辑器的多个文档内容对象,相应协同文档实例采用的协同文档模型也不同。
48.在本说明书的技术方案中,文档内容可以通过相应的文档编辑器进行编辑,不同类型的文档内容采用不同的文档编辑器,比如文字类型的文档内容可以由文字类型的编辑器(即文字编辑器)进行编辑,再比如表格类型的文档内容可以由表格类型的编辑器(即表
格编辑器)进行编辑,又比如脑图类型的文档内容可以由脑图类型的编辑器(即脑图编辑器)进行编辑,又比如演示幻灯片类型的文档内容可以由演示幻灯片类型的编辑器(即演示幻灯片编辑器)进行编辑;当然,本说明书并不限制文档编辑器的类型。
49.当某一文档包含对应于多种类型的文档编辑器的文档内容时,即可将该文档称为上述的混合文档,例如某一混合文档中可以同时包含文字、表格、脑图、演示幻灯片等中的至少两种文档内容。某一混合文档中对应于同一类型的文档编辑器的文档内容,可以作为一个文档内容对象,也可以进一步划分为多个文档内容对象。例如,对于某一混合文档所含的所有文字,可以整体作为一个文档内容对象,也可以将每段、每行或基于其他方式划分的部分文字分别作为一个文档内容对象;表格、脑图、演示幻灯片等其他类型的文档内容也类似,可以产生一个或多个文档内容对象。
50.针对混合文档中所含的每个文档内容对象,可以分别创建相应的协同文档实例,使得文档内容对象与协同文档实例之间一一对应。协同文档实例通过运行所含的协同文档模型,可以基于该协同文档模型的处理逻辑参与协同编辑,从而对该协同文档实例对应的文档内容进行协同编辑。对于任一协同文档实例而言,其采用的协同文档模型与该协同文档实例对应的文档内容对象相关:若某一文档内容对象对应于文字类型的文档内容,则针对该文档内容对象创建相应的协同文档实例后,该协同文档实例所采用的协同文档模型用于针对文字类型的文档内容进行协同编辑;若文档内容对象对应于表格类型的文档内容,则针对该文档内容对象创建相应的协同文档实例后,该协同文档实例所采用的协同文档模型用于针对表格类型的文档内容进行协同编辑;类似地,诸如脑图、演示幻灯片等其他类型的文档内容对应的文档内容对象,相应创建的协同文档实例所采用的协同文档模型用于对相应类型的文档内容进行协同编辑,此处不再一一赘述。
51.可见,本说明书针对混合文档的协同编辑场景,可以为该混合文档中的不同文档内容对象分别创建相应的协同文档实例,使得每个协同文档实例所采用的协同文档模型之间相互独立、互不影响,能够分别针对混合文档中不同类型的文档内容对象进行协同编辑。
52.请参见图3,图3是一示例性实施例提供的一种用于对混合文档进行协同编辑的客户端的结构示意图。如图3所示,用于对混合文档进行协同编辑的客户端可以包括协同引擎层31、混合协同模型层32、混合文档中的协同文档实例33以及外部存储34,并且可以与服务端30进行交互。其中,协同引擎层31用于收发以及处理扩展原子操作,混合协同模型层32用于将混合文档中的协同文档实例33产生的各原始原子操作扩展为扩展原子操作,以及将协同引擎层31发送的扩展原子操作解析为原子操作,外部存储34用于实现持久化存储,具体实现方式将在后文进行介绍,在此不再进行赘述。
53.在图3所示的混合文档中的协同文档实例33中,可能每个协同文档实例采用的协同文档模型都不同,即一个协同文档模型对应一个协同文档实例,例如,在一篇文字文档中,嵌入一个表格得到一篇混合文档a,将原文字文档作为一文档内容对象,对应创建一采用文字协同文档模型的协同文档实例1,将嵌入的一个表格作为一文档内容对象,对应创建一采用表格协同文档模型的协同文档实例2;也可能多个协同文档实例采用相同的协同文档模型,即一个协同文档模型对应多个协同文档实例,例如,在一篇文字文档中,嵌入两个表格(表格1和表格2)得到一篇混合文档b,将原文字文档作为一文档内容对象,对应创建一采用文字协同文档模型的协同文档实例1,将嵌入的表格1作为一文档内容对象,对应创建
一采用表格协同文档模型的协同文档实例2,以及将嵌入的表格2作为一文档内容对象,对应创建另一采用表格协同文档模型的协同文档实例3。
54.步骤204,确定针对所述混合文档中的协同文档实例的协同编辑指令对应的原始原子操作。
55.客户端通过本地用户之间的人机交互,获取本地用户针对混合文档发出的协同编辑指令。例如,客户端可以向本地用户提供相应的交互界面,使得本地用户可以通过该交互界面输入上述的协同编辑指令;当然,基于语音等其他方式也可以完成上述交互过程,本说明书并不对此进行限制。
56.在针对混合文档中的每一文档内容对象创建多个协同文档实例后,客户端可以将本地用户通过上述方式针对该混合文档发出的协同编辑指令定位到某一协同文档实例,由该协同文档实例产生与该针对混合文档的协同编辑指令对应的针对该混合文档中的协同编辑实例的原始原子操作。
57.以图1所示的文档协同编辑系统的架构为例,
58.用户a使用终端设备11发起了针对混合文档b的协同编辑指令:在混合文档b中的表格1的第一个单元格输入“姓名”,以及将混合文档b中的文字文档的首两位字符修改为“协同编辑”。装载于终端设备11上的对混合文档进行协同编辑的客户端在接收到用户a发起的协同编辑指令后,确定混合文档中的协同文档实例所产生的与用户a发起的协同编辑指令对应的原始原子操作,包括:
59.混合文档b中的协同文档实例2产生的原始原子操作a1:在第一个单元格插入“姓名”;
60.混合文档b中的协同文档实例1产生的原始原子操作a2:将首两位字符删除并插入“协同编辑”。
61.用户b使用终端设备12发起了针对混合文档b的协同编辑指令:在混合文档b中的文字文档的第三个字符后面输入“混合文档”。装载于终端设备12上的对混合文档进行协同编辑的客户端在接收到用户b发起的协同编辑指令后,确定混合文档中的协同文档实例所产生的与用户b发起的协同编辑指令对应的原始原子操作,包括:
62.混合文档b中的协同文档实例1产生的原始原子操作b1:将第三个字符后面插入“混合文档”。
63.用户c使用终端设备13发起了针对混合文档b的协同编辑指令:删除混合文档b中的文字文档的首两位字符,并在混合文档b中的表格2中的第一个单元格输入“性别”。装载于终端设备13上的对混合文档进行协同编辑的客户端在接收到用户c发起的协同编辑指令后,确定混合文档中的协同文档实例所产生的与用户c发起的协同编辑指令对应的原始原子操作,包括:
64.混合文档b中的协同文档实例1产生的原始原子操作c1:将首两位字符删除;
65.混合文档b中的协同文档实例3产生的原始原子操作c2:在第一个单元格插入“性别”。
66.步骤206,将所述原始原子操作扩展为针对所述混合文档的扩展原子操作,所述扩展原子操作包含产生所述原始原子操作的协同文档实例的实例标识、该协同文档实例采用的协同文档模型的类型信息以及所述原始原子操作。
67.在本说明书的技术方案中,对在步骤204确定出的每一原始原子操作进行扩展,添加该原始原子操作对应的协同文档实例的实例标识,以及该协同文档实例采用的协同文档模型的类型信息,使得可以区分出各原始原子操作对应的协同文档实例并指明该协同文档实例的协同文档模型,从而对其他协同文档实例不会产生干扰。
68.除此之外,由于协同调度算法仅对应一种协同文档模型,为使在不修改协同调度算法的情况下,完成对混合文档的协同编辑,对各原始原子操作进行扩展后得到的扩展原子操作的格式应该统一,使得各扩展原子操作看起来属于同一种协同文档模型。
69.其中,协同文档实例的实例标识仅与一协同文档实例对应,是协同实例文档的唯一指示标识,该实例标识可以是一串随机生成的字符串,也可以由混合文档名称以及实例编号构成,本说明书并不对此进行限制;协同文档模型的类型信息可以表明该协同文档实例采用的协同文档模型,该类型信息可以是协同文档模型的名称,也可以是协同文档模型对应的文档编辑器名称,本说明书并不对此进行限制。
70.接着以上示例继续举例,各终端设备上装载的客户端中的混合协同模型层32将混合文档b中的各协同文档实例产生的与用户发起的协同编辑指令对应的原始原子操作进行扩展,添加该原始原子操作对应的协同文档实例的实例标识,以及该协同文档实例采用的协同文档模型的类型信息,得到针对混合文档b的扩展原子操作。
71.终端设备11上装载的客户端中的混合协同模型层32对原始原子操作a1、a2进行扩展,产生针对混合文档b的扩展原子操作a1:{实例标识:b2;协同文档模型的类型信息:表格协同文档模型;原始原子操作:在第一个单元格插入“姓名”},以及针对混合文档b的扩展原子操作a2:{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:将首两位字符删除并插入“协同编辑”}。
72.终端设备12上装载的客户端中的混合协同模型层32对原始原子操作b1进行扩展,产生针对混合文档b的扩展原子操作b1:{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:在第三个字符后面插入“混合文档”}。
73.终端设备13上装载的客户端中的混合协同模型层32对原始原子操作c1、c2进行扩展,产生针对混合文档b的扩展原子操作c1:{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:将首两位字符删除},以及针对混合文档b的扩展原子操作c2:{实例标识:b3;协同文档模型的类型信息:表格协同文档模型;原始原子操作:在第一个单元格插入“性别”}。
74.步骤208,将所述扩展原子操作发送至所述文档协同编辑系统的服务端,以共享至对所述混合文档进行协同编辑的其他客户端。
75.将扩展完成后与各原始原子操作对应的扩展原子操作发送至文档协同编辑系统中的服务端,以供其他对该混合文档进行协同编辑的客户端可以通过服务端接收到与本地用户发起的针对该混合文档的协同编辑指令对应的扩展原子操作,进而可根据该扩展原子操作将对应的原子操作准确下发至各协同文档实例,从而完成本地用户发起的协同编辑指令,实现对混合文档的协同编辑。
76.需要说明的是,客户端可以每产生一个扩展原子操作,将该扩展原子操作发送至服务端,也可以将预设时长内产生的多个扩展原子操作聚合为扩展原子操作序列,将该扩展原子操作序列发送至服务端,还可以在产生预设数量的扩展原子操作时,将产生的扩展
原子操作发送至服务端,本说明书并不限制客户端发送扩展原子操作至服务端的方式。
77.接着以上示例继续举例,终端设备11上装载的客户端中的协同引擎层31将产生的扩展原子操作a1、a2至聚合为扩展原子操作序列发送至服务器14,以供服务器14将本端设备产生的扩展原子操作发送至终端设备12以及终端设备13上装载的对混合文档b进行协同编辑的客户端。
78.终端设备12上装载的客户端中的协同引擎层31将产生的扩展原子操作b1发送至服务器14,以供服务器14将本端设备产生的扩展原子操作发送至终端设备11以及终端设备13上装载的对混合文档b进行协同编辑的客户端。
79.终端设备13上装载的客户端中的协同引擎层31将产生的扩展原子操作c1、c2至聚合为扩展原子操作序列发送至服务器14,以供服务器14将本端设备产生的扩展原子操作发送至终端设备11以及终端设备12上装载的对混合文档b进行协同编辑的客户端。
80.在上述实施例中,除了将混合文档实例化,模拟出一个支持多种协同文档模型的混合文档模型,使得混合文档能够适应于协同编辑的场景外,还将与用户发起的协同编辑指令对应的原始原子操作扩展为扩展原子操作,使得可以区分出各原始原子操作对应的协同文档实例并指明该协同文档实例的协同文档模型,以便其他客户端可根据接收到的扩展原子操作将对应的原子操作准确下发至各协同文档实例,从而完成本地用户发起的协同编辑指令,实现对混合文档的协同编辑。
81.可选的,在本说明书的技术方案中,为确保混合文档的完整性和可传递性,以及可以区分出执行对象,在已持久化存储原始混合文档(即还未被用户编辑过的混合文档)的情况下,可以在产生原始原子操作的协同文档实例执行该原始原子操作后,对该协同文档实例产生的被标记为与产生该原始原子操作的协同文档实例相关的原始更新数据进行持久化存储;具体的,可以将原始更新数据扩展为相应的包含该原始更新数据和产生该原始更新数据的协同文档实例的实例标识的扩展更新数据,对该扩展更新数据进行持久化存储。
82.在还未持久化存储原始混合文档的情况下,可以在该混合文档的协同文档实例执行原始原子操作之前,对该原始混合文档进行持久化存储,再对协同文档实例产生的被标记为与产生该原始原子操作的协同文档实例相关的原始更新数据进行持久化存储,进一步将原始更新数据扩展为相应的包含该原始更新数据和产生该原始更新数据的协同文档实例的实例标识的扩展更新数据,对该扩展更新数据进行持久化存储。当然,也可以在混合文档的协同文档实例执行原始原子操作后,对更新后的混合文档进行持久化存储,并记录产生的原始更新数据和产生该原始更新数据的协同文档实例的实例标识。
83.将混合文档中的协同文档实例产生的原始更新数据进行扩展,使得扩展更新数据包含该原始更新数据和产生该原始更新数据的协同文档实例的实例标识,便于根据该实例标识针对性选择序列化策略或者反序列化策略,以完成数据的持久化存储。
84.接着以上示例继续举例,各终端设备上的混合文档b中的各协同文档实例执行因本地用户发起的协同编辑指令而产生的相对应的原始原子操作后,各协同文档实例产生可指明具体的操作以及操作对象的原始更新数据,对该原始更新数据进行持久化存储。比如,终端设备11上的混合文档b中的协同文档实例1执行原始原子操作a2后,协同文档实例1产生可指明“将协同文档实例1的首两位修改为

协同编辑
’”
的原始更新数据,对该原始更新数据进行持久化存储;更进一步地,可将该原始更新数据扩展为相应的包含该原始更新数
据和产生该原始更新数据的协同文档实例的实例标识的扩展更新数据,即“将协同文档实例1的首两位修改为

协同编辑
’‑
b1”,对该扩展更新数据进行持久化存储。
85.图4是一示例性实施例提供的一种应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端的混合文档的协同编辑方法的流程图。如图4所示,该方法应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端,该客户端如图3所示,该方法可以包括以下步骤:
86.步骤402,接收文档协同编辑系统的服务端发送的针对所述混合文档的扩展原子操作;所述扩展原子操作由针对所述混合文档中的协同文档实例的协同编辑指令对应的原始原子操作扩展所得,包含产生所述原始原子操作的协同文档实例的实例标识、该协同文档实例采用的协同文档模型的类型信息以及所述原始原子操作。
87.在本说明书的技术方案中,如前所述,混合文档包含对应于多种类型的文档编辑器的文档内容对象;混合文档中的每一文档内容对象分别创建有相应的协同文档实例,该协同文档实例通过协同文档模型参与协同编辑;其中,对于采用不同类型的文档编辑器的多个文档内容对象,相应协同文档实例采用的协同文档模型也不同。
88.对于同一混合文档,多个用户可以在多个终端设备上对该混合文档发起协同编辑指令。为使本地终端设备可同步其他用户对该混合文档发起的协同编辑指令,本地终端设备上的客户端可以接收文档协同编辑系统中的服务端发送的远程操作,即其他客户端因其他用户针对混合文档发起的协同编辑指令而产生的包含实例标识、协同文档模型的类型信息以及原始原子操作的扩展原子操作。
89.在图1所示文档协同编辑系统架构中,终端设备11上装载的客户端中的协同引擎层31可接收到服务端发送的其他终端设备上产生的远程操作,即终端设备12以及终端设备13上装载的客户端产生的针对混合文档b的扩展原子操作;终端设备12上装载的客户端中的协同引擎层31可接收到服务端发送的其他终端设备上产生的远程操作,即终端设备11以及终端设备13上装载的客户端产生的针对混合文档b的扩展原子操作;终端设备13上装载的客户端中的协同引擎层31可接收到服务端发送的其他终端设备上产生的远程操作,即终端设备11以及终端设备12上装载的客户端产生的针对混合文档b的扩展原子操作。
90.接着以图2所示实施例继续举例,终端设备11上装载的客户端可接收到服务端发送的针对混合文档b的扩展原子操作b1:{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:在第三个字符后面插入“混合文档”},针对混合文档b的扩展原子操作c1:{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:将首两位字符删除},以及针对混合文档b的扩展原子操作c2:{实例标识:b3;协同文档模型的类型信息:表格协同文档模型;原始原子操作:在第一个单元格插入“性别”}。
91.终端设备12上装载的客户端可接收到服务端发送的针对混合文档b的扩展原子操作a1:{实例标识:b2;协同文档模型的类型信息:表格协同文档模型;原始原子操作:在第一个单元格插入“姓名”},针对混合文档b的扩展原子操作a2:{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:将首两位字符删除并插入“协同编辑”},针对混合文档b的扩展原子操作c1:{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:将首两位字符删除},以及针对混合文档b的扩展原子操作c2:{实例标识:b3;协同文档模型的类型信息:表格协同文档模型;原始原子操作:在第一个单元格插入“性别”}。
92.终端设备13上装载的客户端可接收到服务端发送的针对混合文档b的扩展原子操作a1:{实例标识:b2;协同文档模型的类型信息:表格协同文档模型;原始原子操作:在第一个单元格插入“姓名”},针对混合文档b的扩展原子操作a2:{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:将首两位字符删除并插入“协同编辑”},以及针对混合文档b的扩展原子操作b1:{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:在第三个字符后面插入“混合文档”}。
93.步骤404,基于所述扩展原子操作包含的协同文档模型的类型信息,对所述扩展原子操作进行解析。
94.步骤406,将解析得到的原子操作发送至与所述扩展原子操作包含的实例标识对应的协同文档实例进行处理。
95.扩展原子操作包含实例标识、协同文档模型的类型信息,使得客户端在接收到服务端发送的扩展原子操作后,针对每一扩展原子操作,可以根据协同文档模型的类型信息调用正确的算法对该扩展原子操作进行解析,以获得准确的原子操作,并根据实例标识将准确的原子操作下发至准确的协同文档实例进行处理,而不对其他协同文档实例产生影响,从而完成混合文档的数据同步,实现混合文档的协同编辑。
96.可选的,在本说明书中,对于需要执行操作变换或者操作求逆的扩展原子操作,可以在接收到扩展原子操作后,对该扩展原子操作进行操作变换或者操作求逆,再进一步基于该扩展原子操作包含的协同文档模型的类型信息,对完成了操作变换或者操作求逆后的扩展原子操作进行解析,获得原子操作并将该原子操作下发至与实例标识对应的协同文档实例,使得对该混合文档进行协同编辑的各客户端在执行各原子操作后得到文档内容一致的混合文档。
97.若有两个或两个以上的用户对同一协同文档实例发起了相互不互斥的协同编辑指令,对于每一用户而言,需要对接收到的远程操作(即其他客户端产生的与用户发起的协同编辑指令相对应的扩展原操作)执行操作变换。例如,有一协同文档实例“1246”,用户a使用终端设备1在第二个字符后输入了字符3得到字符串“12346”,用户b使用终端设备2在第三个字符后输入了字符5得到字符串“123456”。当终端设备1上装载的客户端接收到用户b触发的远程操作后,对该操作进行操作变换,得到变换后的操作:在第四个字符后输入字符5,即在字符串“12346”的第四个字符后输入字符5得到字符串“123456
”’
。当终端设备2上装载的客户端接收到用户a触发的远程操作后,对该操作进行操作变换,得到变换后的操作:在第二个字符后输入字符3,即在字符串“12456”的第二个字符后输入字符3得到字符串“123456”。
98.若有两个或两个以上的用户对同一协同文档实例发起了相互互斥的协同编辑指令,对于每一用户而言,需要对接收到的远程操作(即其他客户端产生的与用户发起的协同编辑指令相对应的扩展原操作)执行操作求逆。例如,有一协同文档实例“1246”,用户a使用终端设备1在删除了后两位字符“46”得到字符串“12”,用户b使用终端设备2将后两位字符修改为“34”得到字符串“1234”。若用户a先触发操作,当终端设备1上装载的客户端接收到用户b触发的远程操作后,将该远程操作变换成空操作(null),不对字符串执行任何操作,最终得到字符串“12”;当终端设备2上装载的客户端接收到用户a触发的远程操作后,撤销
用户b触发的本地操作,得到字符串“1246”,再执行用户a触发的远程操作,最终得到字符串“12”。若用户b先触发操作,当终端设备1上装载的客户端接收到用户b触发的远程操作后,撤销用户a触发的本地操作,得到字符串“1246”,再执行用户b触发的远程操作,最终得到字符串“1234”;当终端设备2上装载的客户端接收到用户a触发的远程操作后,将该远程操作变换成空操作(null),不对字符串执行任何操作,最终得到字符串“1234”。
99.接着以上示例继续举例,假设用户a先发起协同编辑指令,接着用户b发起协同编辑指令,最后用户c发起协同编辑指令,则产生扩展原子操作的先后顺序为:扩展原子操作a1、扩展原子操作a2、扩展原子操作b1、扩展原子操作c1、扩展原子操作c2。
100.终端设备11上装载的客户端中的协同引擎层31接收到服务端发送的针对混合文档b的扩展原子操作b1、扩展原子操作c1、扩展原子操作c2后,由于扩展原子操作a2与扩展原子操作b1针对同一协同文档实例,对扩展原子操作b1进行操作变换,即将对扩展原子操作b1变换为{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:在第五个字符后面插入“混合文档”};由于扩展原子操作a2与扩展原子操作c1互斥且扩展原子操作a2先与扩展原子操作c1,对扩展原子操作c1进行操作求逆,即将扩展原子操作c1变换成空操作(即不进行任何操作)。再将操作扩展后的扩展原子操作b1、操作求逆后的扩展原子操作c1、扩展原子操作c2发送至混合协同模型层32,以完成扩展原子操作的解析。混合协同模型层32在接收到扩展原子操作后,根据操作扩展后的扩展原子操作b1包含的实例标识以及协同文档模型的类型信息,调用文字协同文档模型的算法对扩展原子操作b1进行解析,得到原子操作:在第五个字符后面插入“混合文档”,并将该原子操作发送至混合文档b中的协同文档实例1进行处理;根据操作求逆后的扩展原子操作c1包含的实例标识以及协同文档模型的类型信息,调用文字协同文档模型的算法对扩展原子操作c1进行解析,得到原子操作:空操作,并将该原子操作发送至混合文档b中的协同文档实例1进行处理;根据扩展原子操作c2包含的实例标识以及协同文档模型的类型信息,调用表格协同文档模型的算法对扩展原子操作c2进行解析,得到原子操作:在第一个单元格插入“性别”,并将该原子操作发送至混合文档b中的协同文档实例3进行处理。
101.终端设备12上装载的客户端中的协同引擎层31接收到服务端发送的针对混合文档b的扩展原子操作a1、扩展原子操作a2、扩展原子操作c1、扩展原子操作c2后,由于扩展原子操作a2与扩展原子操作b1针对同一协同文档实例,对扩展原子操作a2进行操作变换,即将对扩展原子操作a2变换为{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:将首两位字符删除并插入“协同编辑“};由于扩展原子操作a2与扩展原子操作c1互斥且扩展原子操作a2先与扩展原子操作c1,对扩展原子操作c1进行操作求逆,即将扩展原子操作c1变换成空操作(即不进行任何操作)。再将扩展原子操作a1、操作变换后的扩展原子操作a2、操作求逆后的扩展原子操作c1、扩展原子操作c2发送至混合协同模型层32,以完成扩展原子操作的解析。混合协同模型层32在接收到扩展原子操作后,根据扩展原子操作a1包含的实例标识以及协同文档模型的类型信息,调用表格协同文档模型的算法对扩展原子操作a1进行解析,得到原子操作:在第一个单元格插入“姓名”,并将该原子操作发送至混合文档b中的协同文档实例2进行处理;根据操作变换后的扩展原子操作a2包含的实例标识以及协同文档模型的类型信息,调用文字协同文档模型的算法对扩展原子操作a2进行解析,得到原子操作:将首两位字符删除并插入“协同编辑”;根据操作求逆后的扩展原子
操作c1包含的实例标识以及协同文档模型的类型信息,调用文字协同文档模型的算法对扩展原子操作c1进行解析,得到原子操作:空操作,并将该原子操作发送至混合文档b中的协同文档实例1进行处理;根据扩展原子操作c2包含的实例标识以及协同文档模型的类型信息,调用表格协同文档模型的算法对扩展原子操作c2进行解析,得到原子操作:在第一个单元格插入“性别”,并将该原子操作发送至混合文档b中的协同文档实例3进行处理。
102.终端设备13上装载的客户端中的协同引擎层31接收到服务端发送的针对混合文档b的扩展原子操作a1、扩展原子操作a2、扩展原子操作b1,由于扩展原子操作a2与扩展原子操作b1针对同一协同文档实例且扩展原子操作a2先与扩展原子操作b1,对扩展原子操作b1进行操作变换,即将对扩展原子操作b1变换为{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:在第五个字符后面插入“混合文档”};由于扩展原子操作a2与扩展原子操作c1互斥且扩展原子操作a2先与扩展原子操作c1,对扩展原子操作a2进行操作求逆,即将扩展原子操作a2变换成为{实例标识:b1;协同文档模型的类型信息:文字协同文档模型;原始原子操作:撤销删除首两位字符,再将首两位字符删除并插入“协同编辑”}(即撤销原始原子操作c1再执行原始原子操作a2)。再将扩展原子操作a1、操作求逆后的扩展原子操作a2、操作变换后的扩展原子操作b1发送至混合协同模型层32,以完成扩展原子操作的解析。混合协同模型层32在接收到扩展原子操作后,根据扩展原子操作a1包含的实例标识以及协同文档模型的类型信息,调用表格协同文档模型的算法对扩展原子操作a1进行解析,得到原子操作:在第一个单元格插入“姓名”,并将该原子操作发送至混合文档b中的协同文档实例2进行处理;根据操作求逆后的扩展原子操作a2包含的实例标识以及协同文档模型的类型信息,调用文字协同文档模型的算法对扩展原子操作a2进行解析,得到原子操作:撤销删除首两位字符,再将首两位字符删除并插入“协同编辑”;根据操作变换后的扩展原子操作b1包含的实例标识以及协同文档模型的类型信息,调用文字协同文档模型的算法对扩展原子操作c1进行解析,得到原子操作:在第五个字符后面插入“混合文档”,并将该原子操作发送至混合文档b中的协同文档实例1进行处理。
103.需要说明的是,服务端可以每接收一个扩展原子操作,将该扩展原子操作发送至客户端,也可以将预设时长内接收的多个扩展原子操作聚合为扩展原子操作序列,将该扩展原子操作序列发送至客户务端,还可以在接收预设数量的扩展原子操作时,将接收的扩展原子操作发送至客户端,本说明书并不限制服务端发送扩展原子操作至客户端的方式。
104.在上述实施例中,除了可以根据扩展原子操作包含的实例标识,确定出多个针对同一协同文档实例的扩展原子操作,进而根据这些扩展原子操作产生的先后顺序对这些扩展原子操作进行操作变换或者操作求逆,以确保各客户端可以获得文档内容一致的混合文档外,还可以根据扩展原子操作(经过操作变换或者操作求逆的扩展原子操作,以及未经过处理的扩展原子操作)包含的协同文档模型的类型信息,使得可以调用对应的协同文档模型的算法对扩展原子操作进行解析,获得准确的原子操作,进而根据扩展原子操作包含的实例标识,将解析获得的原子操作准确下发至对应的协同文档实例,而不对其他协同文档实例产生影响,完成混合文档的数据同步,实现混合文档的协同编辑。
105.可选的,在客户端接收到文档协同编辑系统的服务端发送的多个针对所述混合文档的扩展原子操作的情况下,将相邻且包含同一协同文档实例的实例标识的多个扩展原子操作划分至同一组;针对同一组内的多个扩展原子操作采用上述步骤404和步骤406介绍的
方法进行统一处理,使得不用连续多次下发原子操作至同一协同文档实例,提高了混合文档协同编辑的效率。
106.接着以上示例继续举例,终端设备11上装载的客户端中的协同引擎层31接收到扩展原子操作b1、扩展原子操作c1、扩展原子操作c2后,由于,扩展原子操作b1、扩展原子操作c1相邻且均针对混合文档b中的协同文档实例1,将扩展原子操作b1、扩展原子操作c1划分至同一组。
107.终端设备12上装载的客户端中的协同引擎层31接收到扩展原子操作a1、扩展原子操作a2、扩展原子操作c1、扩展原子操作c2后,由于,扩展原子操作a2、扩展原子操作b1、扩展原子操作c1相邻且均针对混合文档b中的协同文档实例1,将扩展原子操作a2、扩展原子操作b1、扩展原子操作c2划分至同一组。
108.终端设备13上装载的客户端中的协同引擎层31接收到扩展原子操作a1、扩展原子操作a2、扩展原子操作b1后,由于,扩展原子操作a2、扩展原子操作b1相邻且均针对混合文档b中的协同文档实例1,将扩展原子操作a2、扩展原子操作b1划分至同一组。
109.可选的,在本说明书中,为确保混合文档的完整性和可传递性,以及可以区分出执行对象,在已持久化存储原始混合文档(即还未被用户编辑过的混合文档)的情况下,可以在与扩展原子操作对应的协同文档实例执行解析得到的原子操作后,对该协同文档实例产生的被标记为与执行所述解析得到的原子操作的协同文档实例相关的原始更新数据进行持久化存储;具体的,可以将原始更新数据扩展为相应的包含该原始更新数据和产生该原始更新数据的协同文档实例的实例标识的扩展更新数据,对该扩展更新数据进行持久化存储。
110.在还未持久化存储原始混合文档的情况下,可以在该混合文档的协同文档实例执行原始原子操作之前,对该原始混合文档进行持久化存储,再对协同文档实例产生的被标记为与产生该原始原子操作的协同文档实例相关的原始更新数据进行持久化存储,进一步将原始更新数据扩展为相应的包含该原始更新数据和产生该原始更新数据的协同文档实例的实例标识的扩展更新数据,对该扩展更新数据进行持久化存储。当然,也可以在混合文档的协同文档实例执行原始原子操作后,对更新后的混合文档进行持久化存储,并记录产生的原始更新数据和产生该原始更新数据的协同文档实例的实例标识。
111.接着以上示例继续举例,各终端设备上的混合文档b中的各协同文档实例执行与接收到的其他客户端产生的扩展原子操作相对应的原始原子操作后,各协同文档实例产生可指明具体的操作以及操作对象的原始更新数据,对该原始更新数据进行持久化存储。比如,终端设备11上的混合文档b中的协同文档实例1执行原始原子操作b1后,协同文档实例1产生可指明“在协同文档实例1的第五位字符后插入

混合文档
’”
的原始更新数据,对该原始更新数据进行持久化存储;更进一步地,可将该原始更新数据扩展为相应的包含该原始更新数据和产生该原始更新数据的协同文档实例的实例标识的扩展更新数据,即“在协同文档实例1的第五位字符后插入

混合文档
’‑
b1”,对该扩展更新数据进行持久化存储。
112.将混合文档中的协同文档实例产生的原始更新数据进行扩展,使得扩展更新数据包含该原始更新数据和产生该原始更新数据的协同文档实例的实例标识,便于根据该实例标识针对性选择序列化策略或者反序列化策略,以完成数据的持久化存储。
113.图5是一示例性实施例提供的一种设备的示意结构图。请参考图5,在硬件层面,该
设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他功能所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
114.请参考图6,混合文档的协同编辑装置可以应用于如图5所示的设备中,以实现本说明书的技术方案。其中,该混合文档的协同编辑装置应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端,该混合文档的协同编辑装置可以包括:
115.实例创建单元601,用于针对所述混合文档中的每一文档内容对象分别创建相应的协同文档实例,所述协同文档实例通过协同文档模型参与协同编辑;其中,对于采用不同类型的文档编辑器的多个文档内容对象,相应协同文档实例采用的协同文档模型也不同。
116.原始原子操作确定单元602,用于确定针对所述混合文档中的协同文档实例的协同编辑指令对应的原始原子操作。
117.原始原子操作扩展单元603,用于将所述原始原子操作扩展为针对所述混合文档的扩展原子操作,所述扩展原子操作包含产生所述原始原子操作的协同文档实例的实例标识、该协同文档实例采用的协同文档模型的类型信息以及所述原始原子操作。
118.扩展原子操作发送单元604,用于将所述扩展原子操作发送至所述文档协同编辑系统的服务端,以共享至对所述混合文档进行协同编辑的其他客户端。
119.可选的,还包括:
120.第一持久化单元605,用于在产生所述原始原子操作的协同文档实例执行所述原始原子操作后,对该协同文档实例产生的原始更新数据进行持久化存储;
121.其中,持久化存储的所述原始更新数据被标记为与产生所述原始原子操作的协同文档实例相关。
122.可选的,所述第一持久化单元605具体用于:
123.将所述原始更新数据扩展为相应的扩展更新数据,所述扩展更新数据包含所述原始更新数据和产生所述原始更新数据的协同文档实例的实例标识;
124.对所述扩展更新数据进行持久化存储。
125.请参考图7,混合文档的协同编辑装置可以应用于如图5所示的设备中,以实现本说明书的技术方案。其中,该混合文档的协同编辑装置应用于文档协同编辑系统中对所述混合文档进行协同编辑的客户端,该混合文档的协同编辑装置可以包括:
126.扩展原子操作接收单元701,用于接收文档协同编辑系统的服务端发送的针对所述混合文档的扩展原子操作;所述扩展原子操作由针对所述混合文档中的协同文档实例的协同编辑指令对应的原始原子操作扩展所得,包含产生所述原始原子操作的协同文档实例的实例标识、该协同文档实例采用的协同文档模型的类型信息以及所述原始原子操作。
127.扩展原子操作解析单元702,用于基于所述扩展原子操作包含的协同文档模型的类型信息,对所述扩展原子操作进行解析。
128.原子操作发送单元703,用于将解析得到的原子操作发送至与所述扩展原子操作包含的实例标识对应的协同文档实例进行处理。
129.可选的,还包括:
130.扩展原子操作处理单元704,用于在接收到所述扩展原子操作后,对所述扩展原子操作进行操作变换或者操作求逆;所述基于所述扩展原子操作包含的协同文档模型的类型信息,对所述扩展原子操作进行解析,包括:
131.基于所述扩展原子操作包含的协同文档模型的类型信息,对完成了操作变换或者操作求逆后的扩展原子操作进行解析。
132.可选的,还包括:
133.扩展原子操作分组单元705,用于在接收到文档协同编辑系统的服务端发送的多个针对所述混合文档的扩展原子操作的情况下,将相邻且包含同一协同文档实例的实例标识的多个扩展原子操作划分至同一组;针对同一组内的多个扩展原子操作进行统一处理。
134.可选的,还包括:
135.第二持久化单元706,用于在与所述扩展原子操作对应的协同文档实例执行解析得到的原子操作后,对该协同文档实例产生的原始更新数据进行持久化存储;其中,持久化存储的所述原始更新数据被标记为与执行所述解析得到的原子操作的协同文档实例相关。
136.可选的,所述第二持久化单元706具体用于:
137.将所述原始更新数据扩展为相应的扩展更新数据,所述扩展更新数据包含所述原始更新数据和产生所述原始更新数据的协同文档实例的实例标识;
138.对所述扩展更新数据进行持久化存储。
139.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
140.在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
141.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
142.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
143.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包
括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
144.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
145.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
146.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
147.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1