协作电子表格中的有效拷贝粘贴的制作方法

文档序号:11160937阅读:734来源:国知局
协作电子表格中的有效拷贝粘贴的制造方法与工艺

本申请请求于2014年12月4日提交的美国申请序列号14/560,954的优先权,其全部内容通过引用并入本文中。

技术领域

一般而言,本公开涉及在协作电子表格中执行拷贝粘贴操作。



背景技术:

电子表格有益于操纵数据的结构化数组。特别地,电子表格能够对这样的数据数组迅速执行许多重复计算。协作电子表格有益于允许多个用户同时地在经由网络通信的多个设备上编辑文档。在协作电子表格中,多个用户能够同时编辑电子表格的同一部分。这种状况可能导致一个用户作出的编辑与另一个用户作出的编辑冲突或者交叉。解决这种状况的一种方式是,针对每个设备,将网络上每次编辑产生的数据经由网络传送至其他设备和服务器。然而,这会导致跨网络传递大量数据,尤其是针对拷贝粘贴操作而言。



技术实现要素:

因此,本文公开了用于解决协作电子表格中的交叉编辑的系统和方法。在某些方面中,本文所述的系统和方法涉及编辑托管在服务器上的协作电子表格。使用处理器并且在用户设备上显示所述协作电子表格。可以基于存储在所述用户设备上的第一模型来显示所述协作电子表格。可以在所述处理器处并且从用户接收第一输入。所述第一输入可以包括所述电子表格的源范围、所述电子表格的目的地范围、以及用以将内容从所述源范围拷贝到所述目的地范围的指令。可以在所述处理器处并且从所述服务器接收第二输入。所述第二输入可以包括用以修改所述电子表格的一部分的输入。所述第二输入可以包括用以通过影响所述源范围以及所述目的地范围中的至少一个中的内容的方式修改所述电子表格的指令。可以在所述处理器处变换所述第一输入。可以基于所述第二输入来变换所述第一输入以获得经变换的第一输入。可以使用所述处理器来修改所述模型。可以基于所述第二输入来修改所述第一模型以获得第二模型。可以使用所述处理器来进一步修改所述第二模型。可以基于所述经变换的第一输入来修改所述第二模型以获得第三模型。可以使用所述处理器并且在所述用户设备上显示所述协作电子表格。可以基于所述第三模型来显示所述协作电子表格。

可以将存储在所述用户设备上的所述第一输入以及对应于所述第一模型的第一修订号传送至所述服务器。确定是否变换所述第一输入可以是基于是否从所述服务器接收到确认。所述确认可以与所述第一输入相关联并且可以包括大于所述第一修订号的第二修订号。是否接收到确认可以确定是否进一步修改所述第二模型。可以将存储在所述用户设备上的所述经变换的第一输入以及对应于所述第二模型的修订号传送至所述服务器。所述目的地范围可以大于所述源范围。用以拷贝内容的指令可以包括用以将内容从所述源范围拼贴至所述目的地范围中的指令。

在一些方面中,可以在所述服务器处从第一用户设备接收用以修改所述电子表格的第一输入。可以在所述服务器处从第二用户设备接收第二输入。所述第二输入可以包括所述电子表格的源范围、所述电子表格的目的地范围、以及用以将内容从所述源范围拷贝至所述目的地范围拷贝的指令。所述第一输入可以包括用以通过影响所述源范围和所述目的地范围中的至少一个的方式修改所述电子表格的指令。可以基于所述第一输入来变换所述第二输入以获得经变换的第二输入。可以将所述经变换的第二输入从所述服务器传送至所述第一用户设备。

确定是否变换所述第二输入可以是基于将与所述第一输入相关联的第一修订号同与所述第二输入相关联的第二修订号相比较。可以基于所述第一输入来修改存储在所述服务器上的所述电子表格的模型以获得第一修改模型。可以基于所述经变换的第二输入来进一步修改所述第一修改模型以获得第二修改模型。

可以将对所述第一输入的确认以及第一修订号从所述服务器传送至所述第一用户设备。可以将所述第一输入以及所述第一修订号从所述服务器传送至所述第二用户设备。可以将所述经变换的第二输入以及大于所述第一修订号的第二修订号从所述服务器传送至所述第一用户设备。可以将对所述第二输入的确认以及所述第二修订号从所述服务器传送至所述第二用户设备。

附图说明

图1是根据说明性实施方式的云计算服务的框图;

图2是根据说明性实施方式的与服务器通信的两个客户端设备的框图;

图3A、3B、3C和3D描绘了示出根据说明性实施方式的使用与服务器通信的两个客户端设备对协作文档作出编辑的泳道图;

图4是根据说明性实施方式的由客户端设备在协调用户更改与从服务器所接收的更改时所执行的方法的流程图;

图5是根据说明性实施方式的由服务器在协调从多个客户端设备所接收的更改时所执行的方法的流程图;

图6是根据说明性实施方式的由服务器或者客户端设备在将一个更改针对另一个进行变换时所执行的方法的流程图;

图7是对根据说明性实施方式的行插入更改交叉拷贝粘贴更改的说明;

图8是对根据说明性实施方式的行删除更改交叉拷贝粘贴更改的说明;

图9是对根据说明性实施方式的设置单元格更改交叉拷贝粘贴的源范围更改的说明;

图10是对根据说明性实施方式的设置单元格更改交叉拷贝粘贴的目的地范围更改的说明;

图11是对根据说明性实施方式的拼贴式拷贝粘贴操作的说明;以及

图12是根据说明性实施方式的用于执行本文所述过程中的任何一个的计算设备的框图。

具体实施方式

为提供对本公开的全面理解,现将对某些说明性实施例进行描述,包括用于在协作电子表格中有效地执行拷贝粘贴操作的系统和方法。然而,本领域普通技术人员将理解的是,本文所述的系统和方法可以被调整和修改为适用于所处理的应用,并且本文所述的系统和方法可以被用于其他合适的应用中,并且这样的其他补充和修改不会脱离其范围。一般地,本文所述的计算机化系统可以包括一个或多个组件,其包括处理设备或多个设备,诸如计算机、微处理器、逻辑设备或者配置有用于执行本文所述的计算机化方法中的一个或多个的硬件、固件和软件的其他设备或处理器。

如本文所用,电子表格是具有包含在单元格中的数据的电子文档。单元格被布置成阵列,通常是矩形阵列。每个单元格能够通过一个或多个索引来识别。在矩形阵列中,这些索引能够是行和列索引。通常,在电子表格用户界面中,行索引由阿拉伯数字表示,并且列索引由英文字母表示。虽然这是常用的实施方式,但诸如使用数字对或者字母对的其他实施方式也可行。可以使用诸如罗马系统的其他数字系统以及诸如希腊字母的其他字母。实现电子表格的软件可以通过不同于用户界面中所显示的格式来存储索引。例如,虽然单元格可以具有用户界面的索引“B4”,但软件可以在内部将单元格的索引存储为有序行列对(4,2),表示第四行和第二列。

在用户界面中,每个单元格中所包含的数据可以是数字、文本串、公式或者其组合的形式。软件可以存储文本串、整数、浮点数或者其组合形式的全部数据。如果电子表格的单元格B4包含文本串“Hello World(你好世界)”(在此,该串不包括引号),则字符“W”可以通过索引集合(4,2,7)来引用,指示该字符是在电子表格的第四行和第二列中的单元格中所包含的串中的第七个字符。

索引的其他表示和排序也可行。例如,索引集合可以从0而非1开始编号,或者单元格内的位置可以在行和列索引之前被定位。在一些示例中,整数和浮点数仅为行和列索引所引用并且不为单元格内的位置所引用。在单个电子表格中可以包含相异类型的数据,使得电子表格的一个单元格包含文本串,电子表格的一个单元格包含整数,并且电子表格的另一个单元格包含浮点数。公式可以被存储为文本串并且根据特定规则来处理。例如,公式“=A2+B2”在被输入单元格B4内时指令应用在单元格B4中显示单元格A2和B2的内容之和。

如本文所用,在电子表格中的拷贝粘贴操作是由用户发起的、从源范围中的一个或多个单元格向目的地范围中的一个或多个单元格拷贝数据的操作。所述操作可以是文字复制,并且目的地范围中的单元格可以在操作之后包含与源范围中的对应单元格相同的内容。拷贝和粘贴的公式可以包括绝对或相对引用,如参照图6予以更加详细的描述。拷贝-粘贴操作可以包括拼贴,如参照图11予以更加详细的描述。在拼贴式拷贝-粘贴操作中,源范围和目的地范围的大小并不相同。

协作电子表格可以由基于云的文档存储系统的多个用户来编辑。当多个用户编辑电子表格的同一部分时,可能出现问题。当发生这种情况时,正在编辑的单元格的范围可能交叉,导致关于每个编辑引用哪些单元格的潜在模糊性。特别地,在一个设备处作出的拷贝-粘贴更改可以与在另一个设备处作出的另一个更改交叉。例如,可能在拷贝-粘贴操作的目的地范围相交的位置插入行。当发生这种情况时,对单元格索引的更改能够产生关于哪些单元格应接受粘贴数据的潜在模糊性。

结合协作逻辑实现的操作变换能够解决这种潜在模糊性。通过这种方式,每个设备都能够通过交叉更改来变换拷贝-粘贴更改,使得拷贝-粘贴更改操作于经调整的单元格范围。如果未得到有效处理,实现这一变换会在设备之间产生大量的网络流量。例如,每个设备作为发送粘贴命令的一部分,可以将全部待粘贴的数据发送至网络上的其他设备。虽然容易实现,但如果粘贴的目的地范围很大,这就会造成沉重的网络流量。然而,在一些实施方式中,通过仅发送可以包括源范围和目的地范围中的单元格的索引的拷贝-粘贴指令,能够大幅缩减这种流量。每个设备以及服务器能够再根据协作逻辑而对拷贝-粘贴指令执行操作变换。

通过这种方式执行拷贝-粘贴操作十分有益,原因是在网络上传送的数据量同效率较低的拷贝-粘贴操作相比有所减少。大量的数据转移会使协作电子表格因设备的应用和网络连接减速而无法有效地使用。通过有效地对拷贝-粘贴操作执行操作变换,能够实现电子表格复杂操作的益处,同时还实现协作文档的益处。

图1示出客户端-服务器系统100,其包括云计算服务102以及数个客户端设备104a至104d(统称为客户端设备104)。云计算服务102提供用于客户端设备104的集合的云计算服务。特别地,云计算服务102可以包括存储可供客户端设备104a至104d访问的数个文件的一个或多个服务器,所述文件诸如示例性的协作电子表格106。在客户端设备104处的用户可以创建、编辑、拷贝、共享以及删除存储在云计算服务102上的文件。例如,客户端设备104可以各自使用web浏览器来同时访问云计算服务102上的电子表格106。云计算服务102向每个客户端设备104提供电子表格106的本地副本,客户端设备104上的用户可以再查看和编辑该本地副本。云计算服务102可以使电子表格106的本地副本彼此同步并且与存储在云计算服务102中的服务器上的电子表格106的副本同步。在一个示例中,由客户端设备104a作出的、在本文中可以称作更改的编辑被自动地发送至云计算服务102并且被传送至其他客户端设备104b、104c和104d。通过这种方式,由一个协作者作出的更改可以立刻被其他协作者看到。

如本文所用,文件包括存储在存储媒介上的一组数字编码位。云文件包括存储在服务器上并且可经由网络访问的文件。本地文件包括存储在用户的本地设备上的文件。客户端设备包括与客户端-服务器关系中的服务器通信的本地设备。如本文所用,客户端设备与用户设备以及本地设备同步,除非上下文另作说明。如本文所用,文档能够与多个文件相关联。例如,云文件可以是存储在服务器上的文档的副本,并且本地文件可以是存储在本地设备上的相同文档的副本。一般地,同一文档的多个副本可以是相同的,但如果由一个协作者作出的更改尚未被传送至其他协作者,则它们可能有所不同。当网络连接很慢或者间歇时,可能发生这种状况。如果副本被存储在不同类型的设备上,诸如具有不同操作系统的设备,同一文档的多个副本也可以略有不同。在此情形下,不同的副本可以具有略有不同的元数据,或者可能以不同方式来编码。例如,一个副本可能以大端格式来编码,并且另一个副本可能以小端格式来编码。只要显示给用户的信息内容在副本之间相同,这些格式差异便能够跨多个文件存在,这些文件是同一文档的副本。本地设备可以读取文件(存储在非易失性存储器中)的内容并且存储表示工作存储器中的文件的模型。工作存储器可以是易失性的(例如,RAM或者等价物)。

客户端设备104可以包括桌面型计算机、膝上型计算机、平板型计算机、智能电话、移动电子设备、或者可以通过网络连接至云计算服务102的任何其他设备的任何组合。在系统100中仅示出四个客户端设备104,但应理解的是,任何数目的任何类型的客户端设备104可以被配置成与云计算服务102通信。系统100的云计算服务102以及客户端设备104可以通过诸如互联网的远程网络来连接。通过局域网、广域网、以太网、光纤网络、无线网络、蜂窝网络、交互式电视网络、电话网络、无线数据传输系统、双向电缆系统、定制的私用或公用计算机网络、交互式自助终端网络、直接链路、卫星网络、和/或任何其他有线或无线连接,可以促进网络连接。

图2更加详细地示出客户端-服务器系统200,其可以被使用于实现对协作电子表格的有效拷贝-粘贴操作。系统200包括服务器202以及通过网络208连接的两个客户端设备204a和204b。如图2所示,客户端设备204a和204b相同并且具有相同的组件。关于客户端设备204所述的部分可应用于客户端设备204b。如图所示,系统200包括一个服务器以及两个客户端设备,但一般而言,系统200可以包括多于一个的服务器以及任何数目的客户端设备。客户端设备204a包括处理器212a、存储文件224a的数据库222a、网络接口226a、显示器228a、以及应用214a。

应用214a被配置成使用模型-视图-控制器范式来显示、渲染和编辑文档。应用214a包括模型组件216a、控制器组件218a、以及视图组件220a。模型组件216a是文档的表示并且通常具有层级性。视图组件220a被配置成解释或渲染以便显示模型组件216a。控制器组件218a被配置成从用户或者从诸如网络源的另一来源接收输入,并且更新模型。模型组件216a在其已被更新时可以向视图组件220a以及控制器组件218a通知已发生更新。在一些示例中,模型组件216a是无源的,并且不提供这样的更新。在这些示例中,视图组件220a以及控制器组件218a将针对更新轮询模型组件216a。模型216a可以是层级模型,诸如文档模型(DOM)。在DOM中,数据以层级方式被布置于节点中,使得每个节点具有父节点和/或一个或多个子节点。节点可以表示文档、段落、语句、词或者字母,并且节点也可以包括对部分文档的格式化。当文档是电子表格时,节点也可以包含电子表格的单元格或者指示单元格的部分内容的文本串。

在图2中对应用214a的描绘是说明性的,并且应用214a的一个或多个组件可以驻存于客户端设备204a的其他部分上。例如,模型组件216a的一些或全部可以被存储于数据库222a中,诸如文件224a内。另外,用于214a的代码可以被存储于数据库222a上并且由处理器212a来执行。在图2中所示的示例中,应用214a的视图组件220a正在显示器228a上渲染电子表格文档。基于渲染,处理器正基于存储在用户设备204a上的模型216a来显示协作电子表格。如图2所示,应用214a驻存于客户端设备204a上。在一些示例中,应用214a的一部分或全部可以驻存于服务器202上。在一些示例中,应用214a可以在瘦客户端环境下实现,其中用于应用214a的代码中的大多数驻存于服务器上。在一些示例中,用于应用214a的代码可以按需经由网络208从服务器202传递至本地设备204a。

网络接口226a可以包括配置成与网络208通信的硬件和/或软件。用于网络接口226a的代码可以由处理器212a运行,或者替选地,可以在网络接口226a本身所包含的硬件上实现。网络208可以是诸如因特网、万维网、局域网、广域网、蜂窝网络或者如本文所述的其他类似网络的网络。客户端设备204a也可以包括一个或多个用户输入设备,诸如鼠标或其他指示设备以及键盘。客户端设备204b包括与客户端设备204a相似的组件和特征。

服务器202包括处理器230、应用234、以及包含文件232的数据库210。在一些示例中,服务器202可以实现云计算服务,诸如图1中所示的服务102。如图2所示,数据库220存储文件232,但一般可以存储任何数目的文件。这些文件中的一些或者全部可以对云计算服务的用户是可用的。处理器230运行存储在服务器202上的应用,诸如应用234。用于应用234的代码也可以被存储在数据库210中。应用234可以是云计算服务的一部分。作为云计算服务的一部分,应用234可以包含协作逻辑,其协调对存储在云计算服务上的文档作出的编辑。当实现协作逻辑时,应用234可以保存对存储在云计算服务上的文档的更改的列表,并且可以保存文档的主模型。为进一步实现协作逻辑,应用234可以接收例如由设备204a的用户作出的编辑并且将那些编辑发送至协作文档服务的其他用户,诸如设备204b的用户。通过这种方式,应用234协调由多个用户作出的编辑,使得多个用户可以查看相似或大体上相同的文档模型的渲染。在图2所示的示例中,设备204a和204b的用户都正在查看相同版本的协作电子表格。由设备204a的用户作出的更改可以通过网络208以及服务器202而被发送至设备204b以便显示于显示器228b上。这会使得模型216b用由设备204a的用户作出的更改来更新。通过经由网络208与服务器202通信,设备204a和204b能够显示相似或大体上相同版本的协作电子表格。在一些示例中,客户端设备可以执行由服务器执行的本文所述的一个或多个功能。在这些示例中,服务器可以不起作用或者仅起附带作用。

图3A、3B、3C和3D描绘了示出如何经由服务器使用协调逻辑来协调由两个用户(即Alice和Bob)作出的更改的泳道图。图3A至3D描绘出三个道301、303和305,每个道包含事件或者机器的状态。第一道301包括状态302、312、324、338和348以及事件308和334,其中每个都发生在由名为Alice的用户操作的设备处。第二道303包括状态304、318、326、328和344以及事件340,其中每个都发生在服务器处。第三道305包括状态306、314、320、336和352以及事件310和350,其中每个都发生在由名为Bob的用户操作的设备处。图3A至3D也描绘出消息316、322、332和346以及确认330和342,其中每个都从一个设备(或者服务器)中被传送并且在另一个设备(或者服务器)处被接收。Alice的设备、Bob的设备以及服务器可以分别对应于图2中所示的客户端设备204a、客户端设备204b以及服务器202。参照图3至11,术语“客户端设备”、“服务器”、“Alice”和“Bob”旨在指代相应的机器,但也包括其上运行的应用以及它们的组件,诸如处理器。因此,在本文中例如描述采取动作的机器的用语可以是对机器运行应用和采取动作的处理器的简述。除非上下文另作说明,否则本文所用的术语“设备”能够包括服务器或者其他计算系统。

在图3A至3D中,道301、303和305中的每一个都包含其自有的垂直取向的时间轴,在稍后发生的事件或状态上方示出早前发生的事件或状态。例如,如道301中所示,状态302发生在事件308之前。每个道提供该道内的事件的相对时序的指示。通过跨两道的消息或者确认,诸如从一个设备发送至另一个的消息,能够从图3A至3D中推测出不同道中发生的事件或状态的相对时序。例如,无法单纯从图中推测出道301中的事件308是否发生在道305中的事件310之前、同时或者之后。然而,能够单纯从图中推测出事件308发生在状态302之后以及状态312之前的事实,因为事件308以及状态302和312是道301的一部分。道303和305以及那些道内的事件和状态也同样如此。

在该图中示出的客户端状态,诸如状态302,示出对客户端设备的当前状态的快照并且包括已发送更改、待定更改、以及客户端设备上的当前文档模型的状态。Alice的客户端状态302不包含已发送更改并且不包含待定更改。状态302包括文档模型307,反映出电子表格,其四个单元格包含数据。单元格A1包含文本串“AA”,单元格B1包含文本串“BB”、单元格A2包含文本串“CC”,并且单元格B2包含文本串“DD”。每个状态也示出该状态的最后同步修订号。状态302的最后同步修订号为0,其指示修订号0是于状态302前在Alice的设备与服务器之间同步的文档的最后修订号。Bob的客户端状态306是Bob的起始状态并且与Alice的客户端状态302相同。Bob的状态306包括文档模型311。Bob的当前文档模型311与Alice的当前文档模型307相同。

服务器状态,诸如服务器状态304,示出服务器的当前状态的快照并且包括针对文档的修订日志、待定更改的列表、以及文档的当前模型。状态304包括文档模型309,其与Alice的当前文档模型307相同。在一些示例中,服务器不保存当前文档模型,而仅保存待定更改的列表以及修订日志。在这些示例中,当前文档模型的状态能够通过将修订日志中的全部条目应用到空白电子表格而获得。

图3A至3D描绘出Alice和Bob对由服务器托管的协作电子表格执行交叉编辑操作的情况。在图3A至3D中,Alice执行拷贝-粘贴操作,但使其更改与服务器同步之前,Bob插入行,这与Alice更改的拷贝-粘贴范围相交叉。使用操作变换和协调逻辑,对这些交叉的更改进行协调。

从图3A开始,Alice、服务器和Bob全部从协作文档的同一模型出发,分别如状态302、304和306中所示。另外,Alice、服务器和Bob全部从修订号0开始。在事件308中,Alice将范围B1:B2中的内容拷贝到C1:C2。作为事件308的结果,Alice的设备处于状态312,其包括待定更改313a以及文档模型313b。待定更改313a对应于在事件308中作出的更改。因在事件308中所接收到的更改尚未被修改,故待定更改313a中的单元格范围与事件308中的单元格范围相同。Alice的当前文档模型313b被更新成反映Alice的拷贝-粘贴操作的结果。单元格C1:C2的内容此时与单元格B1:B2中的内容相同。Alice在状态312中的最后同步修订号仍然是0,原因是Alice的待定更改尚未与服务器同步。

在由Alice的拷贝-粘贴事件308产生的对文档的更改与服务器同步之前,Bob作出更改,如事件310中所示。在事件310中,Bob提供输入以在行1与2之间向协作电子表格中插入行。作为事件310的结果,Bob的设备处于状态314,其不具有已发送更改、具有待定更改315a、并且具有文档模型315b。待定更改315a对应于在事件310中作出的更改,尚未修改。状态314还包括文档模型315b,其已被更新成反映Bob在事件310中的更改。如文档模型315b中所示,已经插入行,并且行2此时为空。模型311的行2的内容已被移动至模型315b中的行3。在状态314中,Bob的最后同步修订号仍为0,原因是Bob的待定更改尚未与服务器同步。

转至图3B,消息316描绘出Bob的设备将Bob对状态314的待定更改发送至服务器。在该示例中,在发自事件308的Alice的更改被发送之前,发自事件310的Bob的更改被发送至服务器。这种状况可能由数个因素所致。例如,在Alice作出其更改之前,Bob可能已经作出其更改。替选地,更改可能大体上同时发生,或者Bob的更改可能甚至发生在Alice的更改之后,但Alice的网络连接可能断续或者极慢。这些状况中的任何一个都可能导致服务器接收Alice的更改稍晚于接收Bob的更改。此时,事件308的Alice的更改与事件310的Bob的更改出现交叉,原因是Bob在行1下插入行分割了Alice的拷贝-粘贴操作的范围。消息316包含Bob的更改的内容(即在行1下插入行的命令)以及修订号。在一些示例中,每个客户端将一次仅向服务器发送一个更改并且将在发送另一个更改之前等待接收确认。这样的确认传达出已在服务器处应用了已发送更改。在消息316中发送的修订号为0,指示Bob的最后同步修订号为0,由此消息316中的已发送更改对应于修订号0的状态下的电子表格。然而,在一些实施方式中,该修订号可能代之以对应于Bob的设备预期应用该更改应会产生的修订号。在这些实施方式中,这可以通过将Bob的设备的最后同步修订号递增1来确定。在消息316中发送更改之后,Bob的设备处于状态320,其包括已发送更改321a以及文档模型321b。已发送更改321a对应于状态314的待定更改315a。Bob的当前文档321b未从状态314发生改变。另外,状态320的最后同步修订号也未从状态314发生改变。

服务器状态318反映服务器在接收到Bob的消息316之后的状态。状态318不包含修订日志中的条目,包含待定更改319a并且包含文档模型319b。在状态318中,待定更改319a对应于消息316中的Bob的更改。更改319a包含指令(即在行1下插入一行)、与更改相关联的修订号(即0)以及发送更改的客户端(Bob)的标识符。因更改319a尚未被提交至修订日志,故当前文档模型319b尚未从模型309发生改变。

在消息322中,Alice的设备将事件308的Alice的拷贝-粘贴更改发送至服务器。消息322包含更改指令(即将单元格B1:B2拷贝到单元格C1:C2)以及与更改相关联的修订号(即0)。在消息322中发送更改之后,Alice设备处于状态324,其包括已发送更改325a以及文档模型325b。在状态324中,Alice的状态312的待定更改313a已被移动至已发送更改部分并且表现为更改325a。Alice的当前文档模型325b未从状态312中的模型313b发生改变。状态324的最后同步修订号(即0)也未从状态312发生改变。

在接收到消息322中的Alice的更改之后,服务器然后处于状态326中。在状态326中,没有修订日志中的条目,具有两个待定更改327a和327b并且具有文档模型327c。因待定更改327a在接收待定更改327b之前被接收,故待定更改327a第一个出现在列表中。待定更改327a未从状态318的待定更改319a发生改变。因为待定更改327b第二个被接收,其第二个出现在列表中。待定更改327b反映在消息322中从Alice接收到的更改并且包括Alice的拷贝-粘贴指令,其未从消息322发生改变。更改327b也包含修订号(即0)以及客户端发起的更改(即Alice)。状态326也描绘出当前文档模型327c。因还没有待定更改被应用于修订日志,故模型327c与状态318中的模型319b相同。

现转至图3C,状态328反映服务器在应用其最旧待定更改(即状态326中的待定更改327a)之后的状态。状态328包括修订条目329a、待定更改329b以及文档模型329c。Bob的行插入已在服务器处被应用并且在修订日志的第一条目329a中被反映。条目329a包含Bob在行1下的行插入,并且修订号已被递增到1。条目329a也包含发起更改的客户端(即Bob)的标识。另外,当前文档模型329c已被更新成反映条目329a。作为更新的一部分,已在行1下插入行,并且先前行2的内容已被移至行3。在已更新的模型329c中,行2是插入的空白行。待定更改329b包含Alice的拷贝-粘贴操作并且与状态326的待定更改327b相同。

在应用Bob的更改之后,服务器将消息332发送至Alice并且将确认330发送至Bob。消息332包含所应用的更改的指令(即在行1下插入一行)以及相关联的修订号(即1)。发送至Bob的确认330是简单地确认Bob最后发送的更改已被应用并且携带修订号1。在一些示例中,因每个客户端等待直到接收到确认之后才发送另一个更改,故有关该确认所关联的更改并不存在模糊性。

Bob的客户端状态326示出Bob的设备在接收到确认330之后的状态并且不包括已发送更改、不包括待定更改、并且包括文档模型337。自从Bob接收到确认330,Bob的更改便已从状态336的已发送更改部分移除。在状态336中,Bob的当前文档模型337与前一状态320的模型321b相同,但最后同步修订号已被更新成匹配确认330中所包含的修订号(即1)。

Alice的设备在从服务器接收到消息332之后执行事件334中所示的三个步骤。第一步,Alice的设备针对在消息332中所接收到的传入更改变换所有待定和已发送的更改。该操作变换能够使用图6的方法600来执行。在一些示例中,Alice的设备可以确定变换已发送更改339a,原因是尚未针对其接收到确认。在其他示例中,Alice的设备可以确定变换已发送更改339a,原因是前一状态325的最后同步修订号(即0)小于传入更改的修订号(即1)。第二步,Alice的设备将消息332中的传入更改应用于Alice的文档模型。第三步,Alice的设备将其最后同步修订号更新成匹配传入消息332中所包含的修订号。

在Alice的设备执行事件334的操作之后,Alice设备处于状态338,其包括经变换的已发送更改339a、不包括待定更改、并且包括文档模型339b。已发送更改339a已经针对消息332中的更改而被变换并且被更新成对范围B1、B3和C1、C3进行操作。Alice的当前文档模型339b已被更新成应用消息332的更改。在模型339b中,文档反映Alice的原始拷贝-粘贴操作以及Bob的行插入。行2是空白的,并且先前行2的内容已被移至行3。此外,在339b中,单元格C1和C3分别匹配单元格B1和B3。通过在事件334中应用操作变换,Alice的已发送更改339a中的单元格范围已被分成2个部分。Alice的经变换的更改339a没有对当前文档的行2中的单元格进行操作。作为替代,Alice的经变换的更改仅对行1和3中的单元格操作。通过这种方式变换更改,以保留Alice的更改的意向。在Alice发起那些更改时,文档339b的插入的空白行2还不存在,由此Alice不可能意欲修改该行。在Alice的状态338中,最后同步修订号已被更新成1以匹配与在消息332中所接收到的更改相关联的修订号。

现转至图3D,在事件340中,服务器针对修订日志中自修订号0以来的全部更改来变换Alice的待定更改。服务器可以确定变换Alice的待定更改(即服务器状态328的更改329b),原因是该待定更改的修订号小于最新修订条目的修订号(即服务器状态328的条目329a中的修订号1)。此外,在事件340中,服务器将Alice的更改应用于修订日志。服务器使用由Alice的客户端在事件334中所使用并且可以使用图6的方法600来执行的同一逻辑变换Alice的拷贝-粘贴操作。在事件334和340二者中,Alice的拷贝-粘贴操作针对Bob的行插入操作而被变换,并且Alice的拷贝-粘贴操作的源范围和目的地范围被分开以容纳Bob插入的行。由事件340引起的更改被反映在服务器状态344中。

服务器状态344包括两个修订条目345a和345b,并且包括文档模型345c。在状态344中,第一修订条目345a保持未从服务器状态328的修订条目329a发生改变,并且修订条目345b已被添加至修订日志。修订条目345b反映服务器的前一状态的最旧待定更改(即服务器状态328的待定更改329b)。修订条目345b包含Alice的经变换的拷贝-粘贴操作以及其修订号2。经更新的文档模型345c示出将Alice的拷贝-粘贴操作应用到前一版本的服务器文档329c的结果,使得单元格B1和B3的内容已被拷贝到单元格C1和C3。因服务器和Alice的设备使用同一逻辑针对Bob的行插入操作来变换Alice的拷贝-粘贴操作,故服务器和Alice的设备此时具有相同的文档模型。在将Alice的拷贝-粘贴操作提交至修订日志之后,服务器将确认342发送至Alice,其简单地确认Alice的最后更改被提交至修订日志并且携带修订号2。再一次,因在一些示例中,客户端设备并不发送另一个更改,直至从服务器接收到确认,故有关该确认所对应的更改不具有模糊性。

Alice的最终客户端状态348包括文档模型349并且反映Alice的设备在接收到确认342之后的状态。在最终状态348中,Alice的设备已将其最后保存的修订号更新成2以匹配在确认342中所接收到的修订号并且已从已发送更改的列表中移除经确认的更改。

更进一步,在将Alice的拷贝-粘贴操作提交至修订日志之后,服务器将消息346发送至Bob。消息346包括Alice的经变换的更改,具体是经变换的Alice的拷贝-粘贴操作的指令以及与该提交的更改相关联的修订号。在接收到消息346后,Bob的设备在事件350中执行三个步骤。第一步,因在Bob的更改上不存在待定或已发送更改,故没有更改要变换。如果在Bob的设备上存在待定或已发送的更改,则这些更改会通过在消息346中所接收到的传入更改而被变换。该操作变换能够使用图6的方法600来执行。第二步,Bob的设备将消息346中的传入更改应用于文档模型。第三步,Bob的设备将其最后保存的修订号更新成匹配在消息346中所接收到的修订号。

Bob的最终客户端状态352包括文档模型353,不包括待定更改,并且不包括已发送更改,并且反映Bob的设备在执行事件350的操作之后的状态。在最终状态352中,Bob的设备已将其文档模型更新成模型353,其包含将消息346中的传入更改应用到前一客户端状态336的Bob的前一版本的文档337的结果。单元格B1和B3的内容已被拷贝到单元格C1和C3。Bob的最后保存修订号已被更新成2以匹配消息346中所包含的修订号。

在图3D所示出的最终状态中,Alice的拷贝-粘贴操作以及Bob的行插入操作已被传播至系统中的全部设备,包括服务器。文档模型349、345c和353全部反映出该文档的同一状态。另外,Alice的最后保存修订号匹配服务器修订日志345b中的最后更改的修订号,Bob的最后保存修订号也同样如此。重要地,用跨系统发送的少量信息便已执行这些更新。因所述设备应用相同的协作逻辑以及操作变换来协调交叉的更改,故每个设备都能够优化地应用其拥有的传入用户更改并且对那些用户更改和传入更改执行任何必要的变换。更改的应用被称为“优化”是因为客户端设备优化地假设其正在用最新版本的模型来工作。然而,为免由当前在另一个设备上发生的冲突或交叉更改导致可能的复杂化,客户端设备将其最新的更改保存在已发送或待定更改的列表中,直至从服务器接收到对该更改的确认。因全部设备都正在使用相同的逻辑和变换,故不必多次跨服务器发送大体上相同的信息,例如,通过发送原始变更以及经变换的变更二者。只有原始变更被发送至服务器,并且确认连同修订号一起被接收。通过将该修订号与预计的修订号相比较,每个设备都能够根据需要执行变换。参照图4至6,阐述由客户端设备和服务器遵循用来执行更新和操作变换的方法的细节。

图4是由客户端设备在针对服务器更改来变换用户更改时所执行的方法400的流程图。如本文所用,“用户更改”包括由本地设备从直接与本地设备相交互的用户接收到的更改,并且“服务器更改”包括由本地设备从服务器接收的更改。在一示例中,服务器更改可以最初由另一个用户在远程用户设备(其远离本地设备)处提供并且被传送至服务器,该服务器再将更改传送至本地设备。虽然更改可能已经由用户在远程设备处发起,但因实现方法400的本地设备从服务器接收该更改,故该更改被称为服务器更改。可以在图3C的步骤334和图3D的350中执行方法400。

在步骤402,客户端设备基于存储在客户端设备上的模型向用户显示电子表格。在步骤404,设备接收用以修改电子表格的用户输入。在步骤406,设备将用户输入发送至服务器。在步骤408,设备基于所接收的用户输入来优化地修改其模型。在一些示例中,步骤406和408能够以相反的顺序或者大体上同时发生。在步骤410,客户端设备从服务器接收输入。所接收的输入可以包括用以修改电子表格的指令。

在判定框412处,客户端设备确定在步骤406所发送的用户输入是否已经由服务器确认。如果尚未接收到确认,则方法400继续至步骤414,在此客户端设备针对从服务器所接收的输入来变换所发送用户输入并且可以使用图6的方法600。在此,在步骤414,如果服务器输入与用户输入相交叉,则通过变换来解决该冲突。如果两个输入并不交叉,则大体上没有更改受步骤414的变更的影响。在步骤416,用户设备基于服务器输入来修改其最后同步模型。因尚未接收到对已发送用户输入的确认,故最后同步模型并不反映该用户输入。在步骤420,用户设备更新其修订号以匹配在步骤410从服务器所接收的修订号。在步骤424,客户端设备基于经变换的用户输入来修改最后同步模型。虽然客户端设备基于经变换的用户输入来优化地作出修改并且显示经修改的模型,但因尚未接收到确认,故最后同步模型仍会不反映在步骤404所接收的用户输入。

替选地,如果客户端设备确定已在判定框412处从服务器接收到对所发送用户输入的确认,则所述方法继续至步骤415。在步骤415,自从接收到对用户输入的确认,客户端设备便更新其修订号以匹配确认中所包含的修订号。在步骤418,客户端设备基于从服务器所接收到的输入来修改其模型。在步骤422,客户端更新修订号以匹配在步骤410从服务器所接收到的输入中所包含的修订号,并且返回步骤402,以基于经更新的模型向用户显示电子表格。

图5是基于从客户端设备所接收的输入来变换服务器处的用户输入的方法500的流程图。可以在图3D的步骤340中执行方法500。在步骤502,服务器接收对所托管的电子表格的更改。步骤502中的更改是从经由网络与服务器通信的客户端设备上的用户所接收。在判定框504处,服务器确定更改是否源自旧修订版。如果更改最初是对比提交至服务器上的修订日志的最新版本的电子表格更旧版本的电子表格作出,则更改可能源自旧修订版。在一些示例中,服务器可以通过比较修订号而作出判定。在这些示例中,服务器将与所接收的更改相关联的修订号同与其修订日志中最新提交的条目相关联的修订号相比较。如果与所接收的更改相关联的修订号是比与最新提交的更改的条目相关联的修订号更小的数字,则服务器可以确定更改源自旧修订版。如果两个修订号相同,则服务器可以确定更改源自当前修订版。

如果服务器在判定框504处确定更改源自旧修订版,则所述方法继续至步骤506。在步骤506,服务器针对自与更改的修订号相关联的修订版以来的全部更改来变换更改,并且可以实施图6的方法600。通过这种方式,服务器补偿具有不同修订号的不同设备的作用。

替选地,如果服务器在判定框504处确定更改并非源自旧修订版,则所述方法直接继续至步骤508,在该步骤,服务器将更改提交至修订日志中的条目并且将新的修订号分配给该条目。在服务器处提交更改将其从服务器的待定更改日志中移除并且基于该更改来更新服务器的模型。在步骤510,设备将确认发送至曾发送更改的用户。在步骤512,服务器将更改发送至编辑协作文档的其他用户。在步骤512中所发送的更改在步骤506发生的情况下可以是经变换的更改,或者其可以是如在步骤502中所接收的更改,这取决于判定框504的结果。通过这种方式,服务器基于接收输入的顺序来变换所接收的用户输入。通过基于用户输入被接收的顺序对其进行变换,服务器确保多个设备能够保存相似的协作电子表格的模型。因全部设备都使用与服务器相同的协作逻辑和操作变换,故在没有过多网络流量的情况下,保存相似的模型。

图6是通过交叉更改而变换拷贝-粘贴更改的方法600的流程图。交叉更改可能影响拷贝-粘贴更改的源范围或目的地范围或者影响这两个范围。拷贝-粘贴更改源自第一用户,并且交叉更改源自第二用户。在一些示例中,这两个更改均源自相同的用户,但源自不同的设备。如果用户同时登陆到来自诸如膝上型计算机以及平板型计算机的不同设备的云计算系统,则可能发生这些示例。在一些示例中,这两个更改均源自相同设备上的不同用户。因拷贝-粘贴更改以及交叉更改可以对相交的范围进行操作,故两个操作之间可能存在冲突。可以对范围中的一个或多个应用操作变换来解决这种冲突,以便以根据每个用户的意向而对协作电子表格应用更改。操作变换可以由客户端设备中的任何一个并且由协调更改的服务器来执行。可以将方法600使用于在图3的事件334、340和352中的任何一个、图4的步骤414、图5的步骤506或者其任何组合中执行操作变换。

在步骤602,从用户接收拷贝-粘贴更改。该更改可以从实施方法600的设备的用户输入组件接收,或者该更改可以从网络上的另一个设备接收,诸如从服务器或用户设备。在步骤604,从网络上的另一个用户接收交叉更改。该更改可以从实施方法600的设备的用户输入组件接收,或者其可以从网络上的另一个设备接收,诸如从用户设备的服务器。如前所讨论,当多个用户编辑电子表格的同一部分时,可能发生交叉更改。当发生这种情况时,正在编辑的单元格的范围可能交叉,导致关于编辑中的每一个编辑引用哪些单元格的潜在模糊性。特别地,在一个设备处作出的拷贝-粘贴更改可以与在另一个设备处作出的另一个更改交叉。例如,可以在拷贝-粘贴操作的目的地范围相交的位置插入行。

在判定框606处,确定交叉更改的类型。如果确定交叉更改为插入或者删除行或列,则所述方法继续至步骤608,在该步骤中,在交叉更改的位置处,分开与拷贝-粘贴操作的范围相关联的一个或多个范围。分开的范围可以是拷贝-粘贴操作的源范围或者目的地范围。在一些示例中,源范围和目的地范围都被分开。将每个分开的范围均分成两个部分,以允许变换受影响的部分或多个部分的索引。在步骤612,确定插入或者删除的大小,这可能涉及确定待插入或者删除的行号或者列号。

在判定框618处,设备确定交叉更改是插入还是删除。如果确定交叉更改为插入,则所述方法继续至步骤624。在步骤624,确定增量为正量并且在量值上等于待插入的行号。在判定框618处,如果确定交叉更改为删除,则所述方法继续至步骤626。在步骤626,确定增量为负量并且在量值上等于待删除的行号。在步骤628,拷贝-粘贴更改按步骤624或626中所确定的增量来变换。

按增量变换拷贝-粘贴更改可以包括将增量添加至所分开的范围部分中的一个部分的索引。因增量可以为正或为负,故受影响的索引可以相应增加或减少。例如,如果在步骤608中将目的地范围分成两个部分,一个部分具有低于交叉更改的位置的索引,并且另一个部分具有高于交叉更改的位置的索引,则可以将增量添加至具有高于交叉更改的位置的索引的部分的索引。

如果交叉更改是插入,则具有高于交叉更改的位置的索引的部分可以使其索引增加插入的大小。如果插入是行插入,则只有行索引可能受增量影响。如果插入是列插入,则只有拷贝-粘贴范围的列索引可能受增量影响。

删除一个或多个行或者列可以通过与插入一个或多个行或者列大体上相同的方式来实现,除索引减少而非增加。添加负增量使得高于交叉更改的位置的部分的索引减少删除的大小。

调整拷贝-粘贴范围中的单元格的索引并不影响单元格本身的内容,其也不影响单元格内所包括的串中所包含的各个字符的索引。只有在电子表格中定位单元格的索引受到这种变换操作的影响。

在步骤628中所变换的索引可以是绝对索引或者相对索引。绝对索引是指单元格在电子表格内的绝对位置,而相对索引是指单元格相对于另一个单元格的相对位置。绝对索引的示例会是“A1”或者“D12”。这些会分别指列“A”、行“1”以及列“D”、行“12”。相对基准的示例会是“R2C5”。这会是指在包含基准的单元格向下两行并且向右五列的单元格。相对基准的另一个示例会是“R-3C-2”。该相对基准会是指在包含相对引用的单元格向上三行并且向左两列的单元格。在步骤628,可以按增量调整绝对基准或者相对基准。在步骤630,当在步骤604接收到交叉更改时,应用该交叉更改。在步骤632,应用经变换的拷贝-粘贴操作。在此,当在步骤628中变换拷贝-粘贴操作时,应用该拷贝-粘贴操作。将参照图7和8来描述与拷贝-粘贴更改相交的插入以及删除行和列的进一步细节。

在判定框606处,如果确定交叉更改是设置单元格操作,则所述方法继续至判定框610。设置单元格操作一般是用以更改一个或多个单元格的操作并且可以包括设置单元格的值、设置或编辑单元格的公式、以及设置或编辑单元格的格式。单元格的格式可以包括文本格式化,诸如粗体或用斜字体、更改单元格的大小、以及更改单元格的边框。这些设置单元格操作可能不需要如同插入或者删除行或者列那般将拷贝-粘贴操作的范围分开。在判定框610处,参照拷贝-粘贴操作的源范围以及目的地范围,确定设置单元格操作的位置。

如果设置单元格操作的位置影响拷贝-粘贴操作的源范围,则所述方法继续至步骤614,在该步骤中,将设置单元格操作应用于源范围的所指令的部分。在步骤620,在没有变换的情况下,应用拷贝-粘贴更改。

在判定框610,如果确定设置单元格操作的位置影响目的地范围,则所述方法继续至步骤616,在该步骤中,按所接收的来应用拷贝-粘贴更改。在步骤622,将设置单元格操作应用于其影响的目的地范围的部分。通过这种方式,设置单元格操作始终“取胜”并且设置单元格操作不会被拷贝-粘贴操作覆盖。参照图9和10来描述设置单元格更改与拷贝-粘贴更改相交的进一步细节。

在一些示例中,设置单元格操作可以影响源范围以及目的地范围二者。在这些示例中,如图6所示,将各自根据步骤614和620对源进行处理,并且将根据步骤616和622对目的地范围进行处理。通过应用根据方法600的变换,能够将拷贝-粘贴操作以及相交的更改操作都应用于表示协作电子表格的模型,同时仍捕捉每个用户的意向。另外,因为与协作电子表格通信的所有设备都应用该方法600来进行交叉的更改,所以减少了网络流量。

图7图示出可以如何根据本文所述的系统和方法来协调来自一个用户的插入行操作相交来自另一个用户的拷贝粘贴操作,同时仍捕捉这两个用户的意向。在图7中,用户Charlie和Dave都正各自在不同的设备上编辑协作电子表格。状态710描绘出在作出更改之前的电子表格的状态。状态720图示出协作电子表格在已应用这两个更改并且已使用本文所述的操作变换方法对其进行协调之后的状态。Charlie发起拷贝-粘贴操作704,同时Dave发起行插入操作702。Charlie和Dave的操作大体上同时发生,以致没有用户在他正执行其操作时知道其他用户的更改。如果Charlie和Dave正在完全同时工作,便可能发生这种情况,或者如果Charlie和Dave中的一个或两个具有高度延时的很慢网络连接,也可能发生这种情况。在任一状况中,一个用户都可能不知道可以由其他用户作出的最新更改。

在704,Charlie发起拷贝-粘贴操作以将单元格D2的内容拷贝到范围D3:D5。因此,Charlie的拷贝-粘贴操作具有源范围712(单元格D2)以及目的地范围714(单元格D3:D5)。在702,Dave在协作电子表格的行3与行4之间插入行716。

如状态720中所示,原始目的地范围714(单元格D3:D5)在单元格D3与范围D4:D5之间的交叉插入的位置被分成两个部分。下一步,将具有高于分开处的索引的范围部分下移一行。通过根据插入的大小来递增该部分的索引,使该部分移位。在该示例中,插入一行,故将状态710中的原始部分D4:D5的行索引递增1,以得出状态720中的部分D5:D6。因为在该示例中没有插入列,所以列索引(均由“D”表示)不变。将前述操作变换应用于拷贝-粘贴更改指令,而非电子表格本身。下一步,根据插入行更改以及经变换的拷贝-粘贴更改来修改电子表格。

应用Dave的行插入更改以在行3下插入一行,在行4处产生空白行。状态710中的先前行4和5的内容已被移至状态720中的行5和6。在插入后应用Charlie的经变换的拷贝-粘贴更改。经变换的拷贝-粘贴更改将源范围D2的内容拷贝到新的目的地范围D3、D5:D6。单元格722(D2)保持如其在状态710中那样。单元格724a-c指示经变换的拷贝-粘贴操作的目的地范围并且示出经变换的操作的结果。单元格724a(D3)已被更新成反映拷贝-粘贴操作。单元格724a包含公式“=B3*C3”。如图7中所示,用户可以在单元格724中输入公式,但协作电子表格可以在内部将相对公式存储为“=R0C-2*R0C-1”,指示位于单元格712向左两列并且与其在同一行的单元格的内容应乘以位于单元格712向左一列并且与其在同一行的单元格的内容。在本文中所描述或图示的公式中的任一个都可以被实现为通用格式RxCy的相对公式,其中,“R”为行索引遵循的标识符,“x”为相对行索引,“C”为列索引遵循的标识符,并且“y”为相对列索引。相关行索引“x”指定行号(并且通过其符号指定方向),区分由相对公式所指示的单元格与包含相对公式的单元格。相对列索引“y”指定列号(并且通过其符号指定方向),区分由相对公式所指示的单元格与包含相对公式的单元格。在本文中所描述或图示的公式中的任一个都可以被实现为通用绝对格式NZ的绝对公式。在该通用绝对格式中,“N”指定列索引并且“Z”指定由绝对公式所指示的单元格的行索引。在一些示例中,在一个或多个索引前用“$”符号将绝对公式显示给用户(即$N$Z)。

在图7中所示的示例中,源范围722(D2)中的公式是相对公式,并不是绝对公式,故D3中的公式也是相对公式并且反映该相对公式。单元格726是空白单元格,因为其处于空白行中,其被插入通过Dave的相对插入操作702在行3下插入的空白行中。单元格724b此时包含公式“=B5*C5”。单元格724b如同单元格724a一样包含从单元格722粘贴的相对公式。单元格724c具有与单元格724b相似的公式。通过变换与拷贝-粘贴操作相关联的范围,调整拷贝-粘贴的目的地范围以考虑插入的行。对拷贝-粘贴范围进行变换以及相对公式的上述描述也适用于对关于图8至10中所示的操作的范围进行变换。虽然可以作出调整以考虑图8至10的不同交叉操作,但使用相似的原理。图7中所示的示例是说明性的,并且在一些示例中,多于两个的用户编辑协作电子表格。在另一个示例中,一个用户编辑从多个设备编辑协作电子表格。

图8图示出如何根据本文所述的系统和方法来协调来自一个用户的删除行操作相交另一个用户的拷贝-粘贴操作。状态810示出正由用户Charlie和Dave编辑的协作电子表格在应用任何编辑之前的状态。状态820图示出协作电子表格在已根据本文所述的系统和方法应用并协调这两个用户的更改之后的的状态。

在802,Charlie提供拷贝-粘贴输入以将单元格D2的内容拷贝到范围D3:D5。在804,Dave在其设备上提供输入以删除该电子表格的行4。Charlie和Dave正从分立的设备编辑电子表格,并且如图7中所示,各自作出更改,而不知道其他用户的更改。因此,须根据本文所述的系统和方法对他们的更改进行协调。在810中图示出Charlie的编辑802,用于将源范围812中的单元格D2的内容拷贝到目的地范围814中的单元格D3:D5。Dave的删除行操作的范围是816处所示的行4。源范围822与原始源范围812大体上相同,并且单元格824a-b此时已根据Charlie的拷贝-粘贴操作802而被更新。Dave的行删除804已使得范围816从电子表格中删除。通过变换与拷贝-粘贴操作相关联的范围,调整拷贝-粘贴的目的地范围以考虑删除的行。

图9图示出如何根据本文所述的系统和方法来协调来自一个用户的设置单元格操作相交另一个用户的拷贝粘贴操作的源范围。状态910示出由用户Charlie和Dave编辑的协作电子表格在更改应用之前的状态。状态920图示出协作电子表格在Charlie以及Dave的更改已被协调和应用之后的状态。根据类似于参照图7所述的情况,Dave和Charlie正各自在其相应的设备上查看协作电子表格。

在902,Charlie提供输入以将源范围912中的单元格D2的内容拷贝到目的地范围914中的单元格D3:D5中。在904,Dave不知道Charlie的输入而提供输入以将单元格D2中的公式更改成“=B2*C2*1.09”。在一些示例中,如参照图7所述,这个公式以及其他公式是相对公式。因为Charlie和Dave各自作出更改,而不知道其他用户的更改,所以须根据本文所述的系统和方法对他们的更改进行协调。单元格922是Charlie的拷贝-粘贴操作的源范围并且单元格924a-c是Charlie的拷贝-粘贴操作的目的地单元格。因为Dave的设置单元格操作被应用于Charlie的拷贝-粘贴操作的源范围,所以Dave的设置单元格操作在Charlie的拷贝-粘贴操作之前被应用于协作电子表格,如由图6的方法600所决定。通过这种方式,Dave的设置单元格编辑也被拷贝到Charlie的目的地范围。通过以适当的顺序来执行交叉编辑,调整拷贝-粘贴操作以考虑设置单元格操作,并且保留每个用户的原始意向。Charlie和Dave都会查看到根据920中所示视图的协作电子表格。

图10图示出如何根据本文所述的系统和方法来协调来自一个用户的设置单元格操作相交来自另一个用户的拷贝-粘贴操作的目的地范围。两个用户Charlie和Dave正各自在其相应的设备上编辑协作电子表格并且各自提供输入。状态1010描述协作文档在应用任一用户的更改之前的状态。状态1020图示出协作电子文档在已协调和应用Charlie以及Dave的更改之后的状态。在1002,Charlie提供拷贝-粘贴操作以将源范围1012中的单元格D2的内容拷贝到目的地范围1014中的单元格D3:D5中。在步骤1004,Dave不知道Charlie的拷贝-粘贴输入而提供输入以将单元格D4中的公式更改成“=B4*C4*1.09”。Dave的设置单元格输入影响Charlie的拷贝-粘贴操作的目的地范围。在一些示例中,如参照图7所述,单元格D4中的公式以及其他公式是相对公式。因为每个用户在作出他们自己的输入时都不知道其他用户的输入,所以须根据本文所述的系统和方法对更改进行协调。单元格1022未从状态1010发生改变。单元格1024a-b已被更新成反映Charlie的拷贝-粘贴操作的结果。单元格1026也被更新成反映Charlie的拷贝-粘贴操作,而其也已被更新成反映Dave的设置单元格操作。因为Dave的设置单元格操作与Charlie的拷贝-粘贴操作的目的地范围相交,所以首先应用Charlie的拷贝-粘贴操作,其次再应用Dave的设置单元格操作。该顺序由图6的方法600来决定。通过以适当的顺序来执行冲突的编辑,调整拷贝-粘贴操作以考虑设置单元格操作,并且在经协调的更改中保留每个用户的原始意向。Charlie以及Dave此时都在他们相应的设备中的每一个上查看到如状态1020中所示的协作电子表格。

图11图示出在协作电子表格中拼贴式拷贝-粘贴操作的结果并且包括状态1110和1120。状态1110图示出协作电子表格在应用拷贝-粘贴操作之前的状态。状态1110包括源范围1112以及目的地范围1114。如本文所用,术语“拼贴”描述目的地范围大于源范围的拷贝-粘贴操作。在拼贴式拷贝粘贴操作中,根据范围中的每一个的相应大小,将源范围的内容多次拷贝到目的地范围中。拼贴可以被使用于本文所述的拷贝-粘贴操作中的任一个中。拼贴式拷贝-粘贴操作的源范围1112由两个单元格组成,这两个单元格为单元格A1和A2。单元格A1包含文本“AA”,并且单元格A2包含文本“BB”。拼贴式拷贝-粘贴操作的目的地范围1114由范围C2:E5中的12个单元格组成。

在对协作电子表格应用拼贴式拷贝-粘贴操作之后,状态1120反映该操作的结果。状态1120包括源范围1122a-b中的单元格以及目的地范围1124a-m中的单元格。单元格1122a-b没有改变,因为它们都是操作的源单元格。单元格1124a-m此时包括拼贴的单元格1122a-b的内容。因为目的地范围1114在列尺寸上比源范围1112大三倍,所以在列尺寸上将源单元格拼贴三次以产生状态1120。此外,因为范围1114在行尺寸上比源范围112大两倍,所以将目的地范围1112中的单元格在行尺寸上拼贴两次以产生状态1120。如果目的地范围1114已包括附加行(例如,如果其反而由范围C2:E6组成),则源范围1112在行尺寸上仍会被仅拼贴两次以产生状态1120。因为范围1114在行尺寸上大于范围1112的倍数会出于拼贴目的而被四舍五入到最接近的整数,所以会发生这种情况。

对于用户而言,可能十分需要拼贴,因为用户能够以最少次的输入将少数源单元格拷贝到非常大的目的地范围中。然而,如果未恰当处理拼贴,则当协作电子表格中实施拼贴时,可能导致在网络上过多传送数据。如果目的地范围中的数据以其整体中的一些或全部被传送至网络上的其他设备,诸如服务器以及其他客户端设备,便可能发生这种情况。如果通过这种方式对状态1120中所示的协作电子表格实施拼贴,则会在网络上传送单元格1124a至m中的每一个中的文本。因此,在网络上传送的数据与目的地范围的大小成比例,以便数据传送量可能相当大。

然而,如果通过在网络上仅传送指令和范围索引而在协作电子表格中实现拼贴,并且独立地在每个本地设备处执行拼贴,则可以减少数据传送。在状态1120中所示的示例中,仅需在网络上将对源范围和目的地范围的指定传送至其他设备,无论源范围或者目的地范围的大小如何,只产生固定的数据量。在一些示例中,也可以传送源范围中所包含的数据连同拷贝-粘贴指令。在这些示例中,在网络上传送的数据量与源范围的大小成比例,其仍可能远小于目的地范围的大小。这些示例使得网络流量小于目的地范围的数据以其整体的一些或全部被传送的情况。如图11中所示的拼贴可以被使用于本文所述的拷贝-粘贴操作中的任一个中。

图12是用于执行本文所述过程中的任一个的计算设备的框图,诸如图1至11的系统的组件中的任一个。这些系统中的组件的每一个都可以被实现在一个或多个计算设备1200上。在某些方面,这些系统的多个组件可以被包括在一个计算设备1200内。在某些实施方式中,组件以及存储设备可以跨多个计算设备1200来实现。

计算设备1200包括至少一个通信接口单元、输入/输出控制器1210、系统存储器、以及一个或多个数据存储设备。系统存储器包括至少一个随机存取存储器(RAM 1202)以及至少一个只读存储器(ROM 1204)。这些元件中的全部都与中央处理单元(CPU 1206)通信以促进计算设备1200的操作。计算设备1200可以以许多不同方式来配置。例如,计算设备1200可以是常规的独立计算机,或者替选地,计算设备1200的功能可以跨多个计算机系统和架构来分布。替选地,计算机系统可以被虚拟成提供多个计算设备1200的功能。在图12中,计算设备1200经由网络或者本地网络而被链接至其他服务器或者系统。

计算设备1200可以被配置成分布式架构,其中,数据库以及处理器被封装于分立的单元或者位置中。一些单元执行主要处理功能并且最低限度包含通用型控制器或处理器以及系统存储器。在分布式架构的实施方式中,这些单元中的每一个都可以经由通信接口单元1208而被连接至通信集线器或者端口(未示出),其用作与其他服务器、客户端、或者用户计算机以及其他相关设备的主要通信链路。通信集线器或者端口本身可能具有最低的处理能力,其主要用作通信路由器。各种通信协议可以是系统的一部分,包括但不限于:以太网、SAP、SASTM、ATP、BLUETOOTHTM、GSM以及TCP/IP。

CPU 1206包括处理器,诸如一个或多个常规的微处理器以及一个或多个补充的协同处理器,诸如数学协同处理器,用于卸载来自CPU 1206的工作负载。CPU 1206与通信接口单元1208以及输入/输出控制器1210通信,由此CPU 1206与其他设备通信,诸如其他服务器、用户终端、或者设备。通信接口单元1208以及输入/输出控制器1210可以包括多个通信信道,用于同时与例如其他处理器、服务器合作和客户终端通信。

CPU 1206还与数据存储设备通信。数据存储设备可以包括磁性、光学或者半导体存储器的适当组合,并且可以包括例如RAM 1202、ROM 1204、闪盘驱动器、诸如致密盘的光盘或者硬盘或硬盘驱动器。CPU 1206以及数据存储设备各种可以例完全位于单个计算机或者其他计算设备内;或者彼此通过通信介质相连接,诸如USB端口、串行端口电缆、同轴电缆、以太网电缆、电话线、射频收发器或者其他类似的无线或有线介质或者前述的组合。例如,CPU 1206可以经由通信接口单元1208而被连接至数据存储设备。CPU 1206可以被配置成执行一个或多个特定的处理函数。

数据存储设备可以存储例如:(i)用于计算设备1200的操作系统1212;(ii)适于根据本文所述的系统和方法,特别是根据参照CPU 1206所详述的过程,引导CPU 1206的一个或多个应用1214(例如,计算机程序代码或者计算机程序产品);或者(iii)适于存储信息的数据库1216,其可以用于存储程序所需的信息。

操作系统1212以及应用1214可以被存储成例如压缩、未编译以及加密的格式,并且可以包括计算机程序代码。除数据存储设备之外,可以从计算机可读介质中,诸如从ROM 1204或者从RAM 1202中将程序的指令读入处理器的主存储器中。虽然程序中指令序列的执行使得CPU 1206执行本文中所述过程步骤,但硬接线电路可以代替实现本发明的过程的软件指令来使用或者与其相结合。因此,所述的系统和方法并不限于硬件和软件的任何特定组合。

可以提供合适的计算机程序代码以便执行与执行如本文所述的过程相关的一个或多个功能。程序也可以包括程序元素,诸如操作系统1212、数据库管理系统以及允许处理器经由输入/输出控制器1210与计算机外围设备(例如,视频播放器、键盘、计算机鼠标等)相交互的“设备驱动器”。

如本文所用的术语“计算机可读介质”是指提供或者参与提供指令到计算设备1200的处理器(或者任何其他的本文所述设备的处理器)以便执行的任何非暂时性介质。这样的介质可以采取许多形式,包括但不限于非易失性介质以及易失性介质。非易失性介质例如包括光盘、磁盘或光磁盘或者集成电路存储器,诸如快闪存储器。易失性介质包括动态随机存取存储器(DRAM),其通常构成主存储器。计算机可读介质的常用形式例如包括软盘、柔性盘、硬盘、磁带、任何其他磁性介质、CD-ROM、DVD、任何其他光介质、穿孔卡、纸带、具有孔图案的任何其他物理介质、RAM、PROM、EPROM或EEPROM(电可擦除可编程只读存储器)、FLASH-EEPROM、任何其他存储器芯片或卡匣、或者计算机能够从中读取的任何其他非暂时性介质。

各种形式的计算机可读存储介质可以参与将一个或多个指令的一个或多个序列携带至CPU 1206(或者任何其他的本文所述设备的处理器)以便执行。例如,指令最初可以源于远程计算机(未示出)的磁盘上。远程计算机能够将指令加载至其动态存储器中并且使用调制解调器通过以太网连接、电缆线路乃至电话线来发送指令。计算机设备1200本地的通信设备能够在各自的通信线路上接收数据并且将数据置于用于处理器的系统总线上。系统总线将数据携带至主存储器,处理器从该主存储器中检索指令并且执行指令。由主存储器所接收的指令可以可选地在由处理器执行之前或者之后被存储在存储器上。此外,指令可以经由通信端口作为电子、电磁或光信号而被接收,这些信号是携带各种类型的信息的无线通信或者数据流的示例性形式。

显而易见,在附图中所示的实施方式中,可以在许多不同形式的软件、固件和硬件中实现本文所述的系统和方法的多个方面。用来实现与本文所述的系统和方法的原理一致的多个方面的实际软件代码或者专用控制硬件并非对本发明的限制。因此,未参照特定的软件代码来描述所述系统和方法的多个方面的操作和行为,可以理解成本领域普通技术人员能够基于本文的描述来设计软件和控制硬件以实现各方面。

类似地,虽然在图中以特定次序来描绘操作,但这不应被理解为要求以所示的特定次序或者以顺序来执行这样的操作,或者执行所有图示的操作,以获得期望的结果。在某些情况下,多任务以及并行处理可能是有利的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1