协作创作模式的制作方法

文档序号:6479220阅读:189来源:国知局
专利名称:协作创作模式的制作方法
协作创作模式背景传统的协作编辑往往是按顺序进行的。用户轮流访问文档、编辑文档并存储他们 的编辑。访问用户可在文件上设置锁以在该访问用户正在编辑该文档时禁止其他用户编辑 该文档。这样的迭代编辑过程会引起延迟,因为每一用户在编辑文档时要等待轮到自己。另 外,迭代编辑过程难以管理。例如,每一用户需要跟踪哪个人正在编辑文档的哪些部分,文 档的哪一版本是最新近的,以及该用户何时会轮到。在其它类型的传统协作编辑中,用户可以编辑同一文档的共享副本。例如,由华盛 顿州雷德蒙德市的微软公司提供的ONENOTE 笔记程序中,多个用户可在共享的笔记本 样式文档中同时添加、移动和删除对象。在这样的产品中,对文档的改变往往实时地或者近 似实时地可为各用户所用。针对这些和其它考虑作出了本发明。概述提供本概述以便用简化形式介绍在下面的详细描述中进一步描述的一些概念。本 概述不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在帮助确定所要求保护 的主题的范围。—般而言,协作创作应用提供一种其中二个或多个用户可以同时编辑文档的创作 环境。该创作应用适于有选择地被配置为处于自由共享每一用户的编辑的公共操作模式中 或者被配置为处于保持每一用户的编辑私有的私有操作模式中。根据各方面,无论选择哪个操作模式,在文档的每一用户副本与主副本之间自动 地同步元数据更新。然而,内容更新的可用性取决于创作应用被配置为所处的操作模式。在一个实施例中,被配置为处于公共操作模式中的创作应用周期性地与主副本共 享由该创作应用生成的内容和元数据更新两者。在另一个实施例中,被配置为处于私有操 作模式中的创作应用仅周期性地与主副本共享由该创作应用生成的元数据更新。根据其它方面,创作应用即使在该创作应用不能与文档的主副本同步内容或元数 据时(例如,在创作应用离线时)也能编辑该文档的用户副本。在一个实施例中,创作应用 在离线时可被配置为处于公共或私有操作模式中。通过阅读下面的详细描述与审阅相关附图,这些和其它特征与优点将是显然的。 应当理解,上述一般描述和下面的详细描述都仅是说明性的且不限制所要求保护的各方附图简述

图1是示出一个具有作为本发明的发明性方面的示例的特征的示例创作系统的 示意框图;图2是示出根据本发明的原理的图1的创作系统的示意框图,其中存储在第一计 算设备上的文档可包括内容和元数据;图3是示出根据本发明的原理的 档的示意框图,该文档具有五个数据单元,其 中第二个被锁住;
图4是示出根据本发明的原理被配置为实现创作环境的用户计算系统的示意框 图;图5是示出根据本发明的原理的示例同步过程的操作流的流程图,通过该过程可 将文档的用户副本与文档的主副本同步;图6是根据本发明的原理的创作系统的示意框图,在该系统中创作应用被配置为 处于公共操作模式中;图7是示出根据本发明的原理的示例性公共模式同步过程的操作流的流程图,在 创作应用被配置为处于公共操作模式中时创作应用可通过该过程将文档的用户副本与文 档的主副本同步;图8是根据本发明的原理的创作系统的示意框图,在其中创作应用被配置为处于 私有操作模式中;图9是示出根据本发明的原理的示例私有模式同步过程的操作流的流程图,在创 作应用被配置为处于私有操作模式中时创作应用可通过该过程将文档的用户副本与文档 的主副本同步;图10是示出根据本发明的原理的示例性切换过程的操作流的流程图,创作应用 可通过该过程被配置为处于不同的操作模式中;图11-19是根据本发明的原理在协作创作会话期间的不同时刻存储在存储设备、 第一用户计算设备、和第二用户计算设备上的高速缓存的示意框图,在该协作创作会话期 间第一和第二用户计算设备的第一用户和第二用户分别同时编辑一个文档;图20是示出具有作为根据本发明的原理的发明性方面的示例的特征的用户计算 设备的创作系统的示意框图;图21是示出根据本发明的原理的示例性创作过程的操作流的流程图,用户计算 设备可通过该过程将文档的用户副本与文档的主副本同步;以及图22是示出根据本发明的原理的示例性转换过程的操作流的流程图,用户计算 设备可通过该过程在离线编辑文档的用户副本之后将用户副本与文档的主副本同步。详细描述在下面的详细描述中,对形成其一部分的附图进行参考,并且在这些附图中作为 说明示出特定的实施例或示例。尽管在结合在计算机系统上的操作系统上运行的应用程序 执行的程序模块的一般上下文中描述本发明,但本领域的技术人员将认识到,本发明还可 结合其它程序模块来实现。可在不脱离本发明的本质或范围的情况下组合本文所述的实施 例和利用其它实施例。因此下面的详细描述不是在限制意义上采用的,而本发明的范围是 由所附的权利要求书及其等价方案限定的。本发明的实施例提供多个用户可协作创作文档的环境。图1示出具有作为本发明 的发明性方面的示例的特征的示例创作系统100。创作系统100包括存储文档150的主副 本的存储设备120。在一个实施例中,存储设备120可包括计算设备。在另一个实施例中, 存储设备120可包括一个或多个存储设备(例如,服务器计算设备的网络)。创作系统100还可包括至少一个用户计算设备110,它可用通信方式耦合至存储 设备120。每一用户计算设备110可通过创建文档150的用户副本155并编辑用户副本155 来编辑文档150。在各用户计算设备110周期性地将要与其它用户计算设备共享的更新发送到存储设备120并且周期性从存储设备120获得来自其它用户计算设备的更新时同步文 档150的各用户副本155。作为本文使用的术语,用户计算设备110包括被配置为从文档的主副本获得要创 作的文档的用户副本的任何计算设备。用户计算设备110可以与存储设备120不同或者可 以包括在存储设备120上实现的不同用户帐户。在一个实施例中,用作一个文档的存储设 备120的计算设备可用作不同文档的用户计算设备110,反之亦然。在图1所示的示例中,四个用户计算设备110A、110B、110C和IlOD以通信方式耦 合至存储设备120。然而,在其它实施例中,任何数量的计算设备110可耦合至存储设备 120。在所示的示例中,每一用户计算设备110A、110B、110C、110D可将由该用户计算设备的 用户生成的更新发送至存储设备120并且可向存储设备120请求由其他用户计算设备的 用户生成的更新。在一个实施例中,存储设备120可以是服务器计算设备而用户计算设备 11(^、11( 、110(、1100可以是客户机计算设备。如图2所示,存储在存储设备120上的文档150的主副本可包括内容152和元数 据154。在一些实施例中,元数据154可以与内容152分开存储。例如,内容152可存储在 文档150中而元数据154可存储在与文档150分开的表(未示出)中。然而,在其它实施 例中,元数据154可存储在文档150内。用户计算设备110上的创作应用130处理和操作文档150的用户副本155的相应 内容和元数据。一般而言,创作应用130可以独立于对元数据154的更新同步对内容152 的更新。例如,可在存储设备120与各用户计算设备110之间自动地同步元数据更新154, 而可在每一用户请求时同步来自相应用户计算设备110的内容更新152。作为本文使用的术语,元数据更新指对要创作的文档的元数据154所作的任何添 加、删除和/或修订。文档元数据的非限制性示例包括内容锁、存在信息、和其它这样的数 据。如将在本文讨论的,内容锁禁止没有该锁的用户编辑该锁内的内容。存在信息指示哪 些用户已经指示了编辑要创作的文档的意图。在一些实施例中,可在存储设备120与用户计算设备110之间以周期性时间间隔 交换元数据。在一个实施例中,可每隔几秒钟交换一次元数据。然而,元数据交换可按较短 或较长的时间间隔发生。在其它实施例中,可在用户执行定稿动作(例如保存文档)时交 换元数据。作为本文使用的术语,内容更新指对要创作的文档的实质内容152所作的任何添 加、删除和/或修订。例如,文字处理文档的内容更新可包括添加的段落(即或其章节)、删 除的段落(即或其章节)、和/或修订的段落(即或其章节)。在另一个实施例中,演示文 档的内容更新可包括添加的、删除的和/或修订的图片、文本、动画、声音、和其它这样的数 据对象。在一些实施例中,仅在用户请求时交换内容。例如,在一个实施例中,用户计算设 备110之一的用户可请求与其他用户共享内容改变。在另一个实施例中,用户计算设备110 之一的用户可请求查看由其他用户作出的内容改变。然而,在其它实施例中,可自动地交换 内容。参考图3,内容锁通过指示文档的哪些部分已经被另一个用户要求保护来禁止编 辑冲突。在一些实施例中,内容锁可以防止用户编辑文档中已经被另一个用户要求保护的部分。然而,在其它实施例中,用户可以选择打破内容锁并且编辑文档的该部分。在这样的 情形中,该锁可以警告该用户在编辑被锁的章节时会引起冲突。图3是具有五个数据单元210、220、230、240、250的文档200的示意框图。在一个 实施例中,文档200是文字处理文档而数据单元210-250是文本段落。在另一个实施例中, 文档200是演示文档而第一数据单元210是标题或主题标目,第二数据单元220是图片或 其它数据对象,以及其余的数据单元230、240、250是文本框。第一用户可以在文档200的数据单元210-250中的一个或多个周围生成锁。在图 3所示的示例中,第一用户已经锁住了第二数据单元220,如交叉影线所示。通过生成内容 锁,第一用户已经指示第一用户想要编辑第二数据单元220。例如,第一用户可以在第一用 户主动编辑数据单元220时生成该锁。在另一个实施例中,第一用户可以生成该锁并且随 后在稍后编辑数据单元220。在其它实施例中,在第一用户编辑文档时自动生成该锁。如上 所述,管理文档200的创作应用可防止除第一用户之外的用户编辑被锁的数据单元220。一般而言,由第一用户生成的内容锁在该锁存在期间向所有访问该文档的其他用 户显示。在一个实施例中,第一用户也可以查看内容锁。锁可以使用不同类型的指示物来 显示。例如,在一个实施例中,被锁数据单元的背景可以被着色、加阴影或加图案(例如,见 图3的数据单元220)。在另一个实施例中,被锁单元的内容(例如,文本、图片、形状、或其 它数据对象)可被着色、加阴影或加图案。在又一个实施例中,可毗邻于被锁数据单元显示 框、括号、或符号来指示该锁。锁元数据可以用各种不同格式来存储。例如,锁元数据可用表格式来存储。存在 元数据也可以用各种格式来存储。例如,存在元数据可以用表来存储。然而,在另一个实施 例中,锁和存在元数据可用不同格式来存储。—般而言,具有作为根据本发明的原理的发明性方面的示例的特征的创作环境可 在用户计算设备(例如,个人计算机、服务器计算机、笔记本计算机、PDA、智能电话、或任何 其它这样的计算设备)上实现。这里参考图4描述一个被配置为实现创作环境的用户计算 系统400的非限制性实施例。在图4中,用于实现本发明的原理的示例性计算系统400包括用户计算设备如用 户计算设备410。在基本配置中,用户计算设备410 —般包括至少一个处理单元415用于执 行存储在系统存储器420中的应用和程序。取决于计算设备410的确切配置和类型,系统 存储器420可包括但不限于,RAM、ROM、EEPR0M、闪存存储器、CD-ROM、数字多功能盘(DVD) 或其它光存储设备、磁盒、磁带、磁盘存储或其它磁存储设备、或者其它存储器技术。系统存储器420 —般存储适用于控制计算设备410的操作的操作系统422,诸如华 盛顿州雷德蒙德市的微软公司的WINDOWS 操作系统。系统存储器420还可包括其中可 以存储文档的用户副本427的文档高速缓存426。文档的元数据429也可存储在用户高速 缓存426中。系统存储器420还可存储一个或多个软件应用,诸如用于创建和编辑文档的创作 应用424。适于根据本发明的原理的用于创作文档的创作应用424的一个非限制性示例是 来自华盛顿州雷德蒙德市的微软公司的MICROSOFT OFFICE WORD创作软件。创作应用 的其它非限制性示例包括POWERPOINT 演示软件和VISIO 绘制和图表制作软件,它 们都来自华盛顿州雷德蒙德市的微软公司。
计算设备410还可具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入 设备430用于输入和操作数据。还可包括诸如显示屏幕、扬声器、打印机等的输出设备435。 这些输出设备435在本领域是众所周知的并且在此不详细讨论。计算设备410还可包含通信连接440,它允许设备410与其它计算设备通信,例如 通过分布式计算环境中的网络(例如,内联网或因特网)与图1的存储设备120通信。作 为示例而非限制,通信设备介质440包括接线介质如接线网络或直接线连接和无线介质如 声音、RF、红外和其它无线介质。参考图5-19,创作应用与存储设备交换内容和元数据所使用的同步过程可根据创 作应用的用户所选择的保密模式而不同。图5是示出示例性同步过程500的流程图,在用 户计算设备110上实现的创作系统100可以通过该过程将要创作的文档的用户副本155与 存储在存储设备120上的文档的主副本150同步。同步过程500在开始模块502处初始化 和开始并且继续到第一更新操作504。第一更新操作504将用户副本155的元数据与主副本150的元数据同步。在一些 实施例中,第一更新操作504在不需要与用户交互的情况下同步元数据。例如,第一更新操 作504可在存储设备120和用户计算设备110之间提供按周期性时间间隔进行的元数据的 交换。在一个实施例中,第一更新操作504每隔若干秒提供一次元数据的交换。然而,在其 它实施例中,第一更新操作504可提供按较短或较长的时间发生的元数据的交换。获得操作506周期性地检查存储设备120的存储高速缓存125以确定是否有来自 其他用户的任何内容更新可用。如果有这样的内容更新可用,则获得操作506获得这些内 容更新。在一个实施例中,获得操作506使得用户设备110轮询存储设备120并且从存储 高速缓存125拉取任何内容更新。在另一个实施例中,获得操作506使得存储设备120应 请求向用户设备110发送内容更新。然而,在其它实施例中,存储设备120在没有来自用户 设备110的提示的情况下发送任何可用的内容更新至用户设备110。确定模块508确定创作应用130被配置为所处的操作模式(例如公共或私有)。例 如,确定模块508可确定创作应用被配置为处于公共操作模式中。一般而言,创作应用130 在公共模式中操作时,创作应用130 —般与存储设备120共享内容更新。在一个实施例中, 在公共模式中操作的创作应用130在完成定稿动作(例如,用户保存文档、自动保存功能激 活等)时发送内容更新至存储设备120。在另一个实施例中,确定模块508可确定创作应用130被配置为处于私有操作模 式中。一般而言,在私有模式中操作的创作应用130—般不与存储设备120共享内容更新。 在一个实施例中,在私有模式中操作的创作应用130即使在完成定稿动作(例如,用户保存 文档、自动保存功能激活等)时也不将内容更新发送至存储设备120。在这样的实施例中, 由创作应用130生成的内容更新仅在用户切换到公共操作模式时才会被发送到存储设备 120。因此,如果确定模块508确定创作应用130被配置为处于公共操作模式中,则发送 操作510发送由创作应用130生成的内容更新至存储设备120。同步过程500在停止模块 512处完成并结束。然而,如果确定模块508确定创作应用130被配置为处于私有操作模式 中,则同步过程500继续至停止模块512而不实现发送操作510。图6是被配置为实现公共模式同步循环的创作系统600的示意框图。创作系统600—般包括存储设备620和一个或多个用户设备610。要创作的文档的内容652和元数据 654被存储在存储设备620上的存储器625中。在图6所示的示例中,第一用户设备610A 和第二用户设备610B都访问存储在存储设备620上的内容652和元数据654。用户计算设 备610A、610B各自分别包括本地高速缓存635A、635B,并分别包括要创作的文档的用户副 本 655A、655B。每一用户计算设备610的本地高速缓存635被配置为存储发布模块632、保护模块 634、获得模块636、集成模块638、和元数据同步模块639。保护模块634被配置为将内容 改变存储至本地高速缓存635。在一个实施例中,保护模块634触发发布模块632的激活。 发布模块632被配置为将来自本地高速缓存635的内容更新提供(例如,推送、发送等)至 存储设备620的存储存储器625。在一个实施例中,发布模块632被配置为在本地高速缓存 635中对由用户副本655生成的内容更新排队以用于发送至存储设备620。获得模块636被配置为从存储设备620的存储存储器625获得(例如,拉取、接收 等)内容更新。在一个实施例中,获得模块636被配置为在用户设备610的本地高速缓存 635中对从存储存储器625获得的内容更新排队。集成模块638被配置为将这些内容改变 实例化到文档的用户副本655中。在一个实施例中,集成模块638被配置为指示内容更新 的可用性并且接收用户对审阅、忽略、或实例化这些改变的选择。元数据同步模块639同步要创作的文档的用户副本655与存储在存储设备620上 的主副本之间的元数据更新。在一个实施例中,元数据同步模块639在存储设备620与用 户设备610之间以定期的时间间隔发送元数据更新。在另一个实施例中,元数据同步模块 639在元数据更新变为可用时发送元数据更新。因为在存储设备620与用户设备610之间 定期地共享这些元数据更新,在用户设备610的本地高速缓存635中存储的元数据一般反 映出要创作的文档的主副本的元数据的当前状态。图7是示出公共模式同步过程700的示例操作流的流程图,创作应用通过该过程 可以将正在由该创作应用编辑的文档与该文档的主副本同步。公共模式同步过程700在开 始模块702处初始化和开始并且继续至创作操作704,该操作根据用户指令编辑文档。例 如,创作操作704可查明由用户执行的键盘敲键并且实现相应的编辑指令。在另一个实施 例中,创作操作704可查明由用户执行的鼠标点击并且实现相应的编辑指令。第一存储操作706周期性地收集任何元数据更新并且将它们保存至用户设备的 本地高速缓存。因此,万一创作应用崩溃或者以其它方式出错,元数据更新是受到保护的。 在一个实施例中,第一存储操作706在用户提供将改变保存至文档的指令时保存元数据。 在另一个实施例中,第一存储操作706在自动保存功能激活时存储元数据。在另一个实施 例中,第一存储操作706无论用户交互的情况如何都以定期的时间间隔(例如,每隔若干毫 秒、秒、分等)保存元数据。第一发布操作708周期性地将存储在本地高速缓存中的任何元数据更新发送至 存储设备。一般而言,第一发布操作708在不需要与用户进行任何交互的情况下自动地发 送元数据更新。例如,第一发布操作708可按定期的时间间隔(例如,每隔若干毫秒、秒、分 等)发送对元数据的改变(例如,软件增量)。在另一个实施例中,第一发布操作708在本 地高速缓存中的元数据更新可用时发送这些元数据更新至存储设备。在另一个实施例中, 第一发布操作708应存储设备请求发送元数据更新。
第二存储操作710周期性地将任何内容更新保存至用户设备的本地高速缓存。 此,万一创作应用崩溃或者以其它方式出错,内容更新是得到保护的。在一个实施例中,第 二存储操作710在第一存储操作706存储元数据更新时保存内容更新。然而,在其它实施 例中,第二存储操作710可在与第一存储操作706存储元数据更新的不同时间将内容改变 保存到本地高速缓存。在一个实施例中,第二存储操作710可将对内容的改变保存在队列 或其它有序列表中以便使内容更新能够按照生成它们的次序来顺序发送。第二发布操作712发送内容更新至存储设备。在一个实施例中,第二发布操作712 在用户提供共享的指令(例如,用户明确地执行发布动作、实现创作应用的自动保存功能 等)时将内容更新发送至存储设备。在另一个实施例中,第二发布操作712在可从创作应 用得到内容更新时发送这样的内容更新。在另一个实施例中,第二发布操作712在不要求 与用户进行任何交互的情况下自动地发送内容更新。在又一个实施例中,第二发布操作712 可应存储设备请求发送内容更新。第一实例化操作714周期性地从存储设备获得元数据更新并且自动地将这些元 数据更新实例化到创作应用正在创作的文档中。例如,第一具体化操作714可在定期的时 间间隔(例如,每隔若干毫秒、秒、分等)获得由其它用户生成的元数据更新。在另一个实 施例中,第一实例化操作714在元数据更新可用时获得这些元数据更新。通常,不要求与用 户进行交互来实例化这些元数据更新。例如,任何新生成的锁将在获得这些元数据更新时 自动向用户显示。第二实例化操作716周期性地从存储设备获得内容更新并且使这些内容更新可 供用户使用来查看和/或进行实例化。例如,第二实例化操作716可在定期的时间间隔(例 如,每隔若干毫秒、秒、分等)获得由其他用户生成的内容更新。在另一个实施例中,第二实 例化操作716在内容更新可用时获得这些内容更新。通常,创作应用向用户指示内容更新 可用并且使用户能够选择是要审阅、实例化还是忽略这些内容更新。公共模式同步过程700 在停止模块718处完成并结束。图8是被配置为实现私有模式同步循环的创作系统800的示意框图。创作系统 800 一般包括存储设备820和一个或多个用户设备810。要创作的文档的内容852和元数据 854存储在存储设备820上的存储器825中。在图8所示的示例中,第一用户设备810A和 第二用户设备810B正在并发地访问存储在存储设备820上的内容852和元数据854。用户 计算设备810A、810B各自包括本地高速缓存835A、835B和要创作的文档的用户副本855A、 855B。每一用户计算设备810的本地高速缓存835被配置为存储发布模块832、保护模块 834、获得模块836、集成模块838、和元数据同步模块839。保护模块834被配置为将来自用 户副本855的内容更新存储到本地高速缓存835用于稍后发送到存储设备820的存储存储 器825。在一个实施例中,保护模块834被配置为根据生成内容更新的次序存储这些更新。 例如,保护模块834可被配置为在本地高速缓存835中对由用户副本855生成的内容更新 排队以用于发送到存储设备820。发布模块832被配置为将存储在本地高速缓存中的内容改变发送至存储设备 820。一般而言,发布模块832在它接收到发布内容改变的指令时共享这些内容改变。例如, 如果用户通过创作应用的用户界面选择发布选项,则发布模块832可将内容改变发送至存
11储设备820。保护模块834不自动触发发布模块832。获得模块836可被配置为从存储设备820的存储存储器825获得(例如,拉取、接 收等)内容更新。在一个实施例中,获得模块836被配置为在本地高速缓存835中对从存 储存储器825获得的内容更新排队以用于稍后实例化到要创作的文档的用户副本855中。 集成模块838被配置为促进将内容改变实例化到文档的用户副本855中。例如,集成模块 838可被配置为向用户指示新的内容更新可用于实例化。在另一个实施例中,集成模块838 可被配置为将内容更新自动地实例化到要创作的文档的用户副本855中。元数据同步模块839在要创作的文档的用户副本855与存储在存储设备820上的 主副本之间同步元数据更新。在一个实施例中,元数据同步模块839与上面参考图6所述 的元数据同步模块639相同。然而,在其它实施例中,元数据同步模块839可用其它方式被 配置为在用户设备810与存储设备820之间同步元数据。图9是示出用于私有模式同步过程900的示例操作流的流程图,创作应用可通过 该过程将创作应用正在编辑的文档与该文档的主副本同步。私有同步过程900在开始模块 902处初始化和开始,并且继续至创作操作904,该操作按照用户指令编辑要创作的文档。 例如,创作操作904可以与上面参考图7描述的创作应用704相同。第一存储操作906周期性地将在实现创作操作904时生成的任何元数据更新保存 到本地高速缓存。在一个实施例中,第一存储操作906与上面参考图7描述的公共模式同步 过程700的第一存储操作706相同。然而,在其它实施例中,可使用不同的过程来存储元数 据更新。第一发布操作908周期性地将来自本地高速缓存的元数据更新发送至存储设备。 在一个实施例中,第一发布操作908与上面参考图7所述的公共模式同步过程700的第一 发布操作708相同。然而,在其它实施例中,可使用不同的过程来共享元数据更新。第二存储操作910周期性地将在用户设备上实现创作操作904时生成的任何内容 更新保存到用户设备的本地高速缓存。一般而言,第二存储操作910在用户执行数据保护 动作(例如,选择保存文档)时发生。在一个实施例中,第二存储操作910与上面参考图7 所述的公共模式同步过程700的第二存储操作710相同。然而,在其他实施例中,可使用不 同的过程来存储内容更新。确定模块912确定是否将内容更新上载到存储设备。在一个实施例中,确定模块 912确定用户是否已经提供用于共享内容改变的任何指令。例如,确定模块912可确定用户 是否已经在创作应用的用户界面上选择了“发布”按钮。如果确定模块912确定用户已经 提供了共享内容改变的指令,则第二发布操作914将这些内容改变发送到存储设备。然而, 如果确定模块912确定用户已经提供了共享内容的指令,则私有同步过程900跳过第二发 布操作914并且继续至第一实例化操作916。第一实例化操作916周期性地从存储设备获得元数据更新并且自动地将这些元 数据更新实例化到创作应用正在创作的文档中。例如,第一实例化操作916可与上面参考 图7所述的公共模式同步过程700的第一实例化操作714相同。然而,在其它实施例中,可 使用其它过程从存储设备获得元数据。第二实例化操作918周期性地从存储设备获得内容更新并且使得这些内容更新 可供用户查看和/或进行实例化使用。例如,第二实例化操作918可以与上面参考图7所 述的公共模式同步过程700的第二实例化操作716相同。然而,在其它实施例中,可使用其它过程从存储设备获得内容。私有模式同步过程900在停止模块920处完成并结束。图10是示出用于切换过程1000的操作流的流程图,创作应用通过该过程可有选 择地被配置为处于公共操作模式或私有操作模式中。切换过程1000在开始模块1002处初 始化和开始并且继续至接收操作1004。接收操作1004获得对特定的操作模式的选择。在 一个实施例中,接收操作1004可查明通过用户界面工具的模式选择。例如,接收操作1004 可确定用户已经点击了创作应用用户界面的用户界面的切换按钮。切换操作1006将创作应用配置成所选择的操作模式。例如,切换操作1006可将 目前被配置为处于私有操作模式中的创作应用配置成处于公共操作模式中。在这样的实施 例中,所存储的内容改变可自动地与文档的主副本共享。在其它实施例中,切换操作1006 可将目前被配置为处于私有操作模式中的创作应用配置成处于公共操作模式中。在这样的 实施例中,创作应用开始扣留来自主副本的内容改变。在一个实施例中,创作应用开始将内 容改变存储在本地高速缓存存储器中。指示操作1008将创作应用的用户界面配置为向用户指示所选择的操作模式。例 如,如果用户选择让创作应用在公共模式中运行,则指示操作1008可向用户指示正在与其 他用户共享内容改变。如果用户选择让创作应用在私有模式中运行,则指示操作1008可向 用户指示不与其他用户共享内容改变。切换过程1000在停止模块1010处完成并结束。参考图11-19,可通过预演一个示例应用来更好地理解本发明的原理。图11-19 表示在协作创作会话期间向存储在存储设备1120上的文档的主副本、第一创作应用1130A 正在编辑的文档的第一用户副本、和第二创作应用1130B正在编辑的第二用户副本所作的 改变。还示出分别存储在用户计算设备的本地高速缓存1135A、1135B中的内容和元数据更 新。在一个实施例中,第一创作应用1130A和第二创作应用1130B并发地编辑该文档。然 而,在其它实施例中,第一和第二创作应用1130A、1130B可以使用相同的过程在不同的时 间编辑(即访问)该文档。在图11中,第一创作应用1130A被配置为处于公共操作模式中并且第二创作应用 1130B被配置为处于私有操作模式中。然而,在其它实施例中,每一创作应用1130可被配置 为处于任何所需的操作模式中。因为第一创作应用1130A正在公共模式中操作,第一创作 应用1130A—般遵循上面参考图7所述的公共模式同步过程700。因为第二创作应用1130B 正在私有模式中操作,所以创作应用1130B—般遵循上面参考图9所述的私有模式同步过 程 900。文档的主副本具有对应的主锁表。为了方便,在图11-19所示的示例中,将主锁表 作为文档的主副本的一部分显示。然而,在其它实施例中,主锁表可与文档的主副本分开存 储。同样,为易于理解,关联于文档的每一用户副本的锁在图11-19中作为用户副本的一部 分示出。然而,在其它实施例中,元数据可与每一用户副本分开存储。在所示的示例中,主副本的内容包括包含文本“你好世界”的第一数据单元和包含 围绕该第一数据单元的第一锁El的主副本的元数据。第一锁El被指派给第一创作应用 1130A的第一用户。因此,第一创作应用1130A可编辑第一数据单元。其它创作应用诸如第 二创作应用1130B被禁止编辑第一数据单元。在用户设备的本地高速缓存1135A、1135B中 反映出主副本的内容和元数据。在图11中,第一创作应用1130A和第二创作应用1130B各自访问和开始编辑文档的主副本。第一创作应用1130A编辑文档的第一用户副本以如由删除线批注指示地删除词 语“你好”(见图7的创作操作704)。第二创作应用1130B编辑文档的第二用户副本以添 加包含文本“再见世界”的第二数据单元(见图9的创作操作904)。围绕第二数据单元生 成被指派给第二用户的第二锁E2。图12分别示出公共模式同步过程700和私有模式同步过程900的第一存储操作 706、906的效果。创作应用1130A、1130B每一个将在文档的相应用户副本中生成的任何元 数据改变保存到相应的本地高速缓存1135A、1135B中用于发送到存储设备1120。在所示的 示例中,第一创作应用1130A尚未添加任何新锁或者释放第一锁E1。因此,没有元数据的改 变被存储到图12中的本地高速缓存1135A中。然而,第二创作应用1130B已经添加了围绕 新数据单元的第二锁E2。因此,第二锁E2被存储在本地高速缓存1135B的元数据表中。图13分别示出公共模式同步过程700和私有模式同步过程900的第一发布操作 708,908的效果。相应的本地高速缓存1135A、1135B各自将所存储的元数据发送到存储设 备1120。在所示的示例中,第二本地高速缓存1135B将新锁E2发送到存储设备1120。然 而,第一本地高速缓存1135A没有元数据改变要发送到存储设备1120。根据公共模式同步过程700的第二存储操作710,第一创作应用1130A在用户 (例如,明确地或者隐含地)提供存储内容的指令时将任何内容改变保存到本地高速缓存 1135A用于发送到存储设备1120。根据公共模式同步过程700的第二发布操作712,存储 内容的指令触发本地高速缓存1135A将内容更新发布到存储设备1120。在所示的示例中, 从第一数据单元移除词语“你好”被存储在图12的本地高速缓存1135A中并且被发送到图 13中的存储设备1120。与此相对地,根据私有模式同步过程900的第二存储操作910,第二创作应用 1130B将任何内容改变保存到本地高速缓存1135B。在图12所示的示例中,在本地高速缓 存1135B中反映出第二数据单元(“再见世界”)的添加。然而,根据私有模式同步过程900 的确定模块912,本地高速缓存1135B仅在用户提供发布指令时才将更新后的内容发送到 存储设备1120。在图13所示的示例中,没有提供发布指令并且第二数据单元没有被发送到 存储设备1120。图14和15分别示出公共模式同步过程700和私有模式同步过程900的第一实例 化操作714、916的效果。每一创作应用1130A、1130B从存储设备1120获得元数据更新并 且自动将这些元数据更新实例化到文档的相应用户副本中。在所示的示例中,从存储设备 1120上的文档的主副本拉取第二锁E2并且将它保存到第一用户设备的第一本地高速缓存 1135A中,如图14所示。第一创作应用1130A自动将第二锁E2实例化到图15中的文档的 第一用户副本中。然而,由于第一创作应用1130A没有对第一用户副本的元数据作出任何 改变,因此没有对与第二用户副本和第二本地高速缓存1135B相关联的元数据作出改变, 因为该元数据已经反映出与文档的主副本相关联的元数据。另外,在图14和15中分别示出公共模式同步过程700和私有模式同步过程900的 第二实例化操作716、918的效果。每一创作应用1130A、1130B从存储设备1120获得内容更 新并且使得这些内容更新可供用户查看和/或进行实例化。在所示的示例中,第二本地高 速缓存1135B没有将任何内容改变转发给存储设备1120。因此,第一本地高速缓存1135A 和第一创作应用1130A在图14和15中没有从存储设备1120获得任何内容更新。
然而,由于第一创作应用1130A已经共享了内容改变,第二本地高速缓存1135B从 存储设备1120获得从第一数据单元删除词语“你好”的内容更新(见图14)。一创作应用 1130B将来自本地高速缓存1135B的内容更新实例化到图15中的文档的用户副本中。在一 个实施例中,第二创作应用1130B的用户界面自动地将内容更新实例化到文档的第二用户 副本中(见图15)。然而,在另一个实施例中,第二创作应用1130B向第二用户指示内容更 新可用。在这样一个实施例中,第二创作应用1130B在第二用户提供实例化的指令时实例 化该内容更新。在图16中,第二用户将第二创作应用1130B切换到公共模式配置中。在一个实施 例中,第二用户选择第二创作应用1130B的用户界面上的用于切换第二创作设备1130B的 操作模式的按钮。然而,在其它实施例中,第二用户可用其它方式提示第二创作应用1130B 切换到公共操作模式中。在切换操作模式之后,第二创作应用1130B可遵循上面参考图7 描述的公共模式同步过程700开始。例如,第二创作应用1130B可开始共享内容更新以及 元数据更新。在一个实施例中,还共享以前存储的内容更新。在一些实施例中,将创作应用从私有操作模式切换到公共操作模式不会使以前存 储的内容自动地与存储设备共享。相反,切换创作应用1130的模式改变本地高速缓存1135 以后的行为。例如,当创作应用1130被配置为处于公共模式中时用户选择“保存”文档,则 内容改变将被自动地发送到存储设备1120。在一个实施例中,任何以前存储的改变也与新 的内容改变一起发送。然而,在其它实施例中,以前存储的改变可在创作应用1130被切换 到公共模式中时被自动发送到存储设备1120而不需要另外的用户交互。在图16所示的示例中,第二创作应用1130B已经被切换到公共模式中。用户在切 换创作应用1130B之后还没有选择存储内容改变。因此,第二数据单元还没有被发送到存 储设备1120。在图17所示的示例中,第二本地高速缓存1135B从用户接收存储指令并且根 据图7的公共模式同步过程700的第二发布操作712将包含文本(“再见世界”)的第二数 据发送到存储设备1120。在图18中,第一本地高速缓存1135A从存储设备1120获得内容 更新并且,在图19中创作应用1130A将该内容更新实例化到文档的第一用户副本中。现在参考图20-22,具有作为根据本发明的原理的发明性方面的示例的特征的创 作系统2000可使用户即使在创作应用与存储文档的主副本的任何存储设备断开时也能够 创作文档的用户副本。创作系统2000包括执行用于创作文档的用户副本2055的创作应用 2030的用户设备2010。在所示的示例中,用户设备2010是离线的(例如,与网络2060断 开连接)。因此,用户设备2010不共享在创作文档的用户副本2055时生成的内容或元数据 改变,直到连接至网络2060为止。用户设备2010还包括其中存储了有关文档的用户副本2055的元数据2039的本 地高速缓存2035。在一个实施例中,可周期性地更新元数据2039以反映出对文档的本地 高速缓存2055所作的改变。在另一个实施例中,在每一创作会话结束时更新元数据2039。 本地高速缓存2035还包括存储高速缓存2031、上载高速缓存2033、和获得高速缓存2037。创作应用2030周期性地将内容改变保存到存储高速缓存2031中。在一些实施例 中,在整个创作过程中不时地将内容更新存储在存储高速缓存2031中(例如,经由自动保 存功能)。在其它实施例中,创作应用2030可在用户提供保存文档的指令时存储内容改变。 在一个实施例中,存储高速缓存2031根据生成多个内容更新的次序存储这些更新。然而,在另一个实施例中,在创作会话结束时将内容更新存储在存储高速缓存2031中。例如,可 在文档的用户副本2055与文档的初始版本(未示出)之间进行比较并且将差异存储在存 储高速缓存2031中。本地高速缓存2035在用户设备2010连接至网络2060时通过网络2060将存储 在上载高速缓存2033中的任何内容改变发送到存储设备(未示出)。例如,本地高速缓存 2035可在用户设备2010 —连接到网络2060时就共享存储在上载高速缓存2033中的内容 更新。在一个实施例中,本地高速缓存2035即使在创作应用在用户设备2010连接至网络 2060之前停止执行时也可共享存储在上载高速缓存2033中的内容更新。一般而言,创作应用2030被配置为所处的操作模式确定在上载高速缓存2033中 何时安排内容更新。如果创作应用2030被配置为处于公共操作模式中,则本地高速缓存 2035可自动地将内容更新存储在上载高速缓存2033中用于以后发送至网络2060。在一个 实施例中,本地高速缓存2035将来自存储高速缓存2031的内容更新复制到上载高速缓存 2033。然而,如果创作应用2030被配置为处于私有操作模式中,则本地高速缓存2035不 自动将内容改变保存到上载高速缓存2033中。例如,在一个实施例中,可在创作应用2030 被切换到公共模式中时将内容改变存储在上载高速缓存2033中。在另一个实施例中,无论 创作应用2030的操作模式是什么,可在用户提供共享内容改变的指令时将内容改变存储 到上载高速缓存2033中。尚未被实例化到第一用户副本2055中的以前获得的内容更新可被存储在获得高 速缓存2037中。无论用户设备2010是否连接至网络2060,这些内容更新可在任何时间被 实例化到用户副本2055中。在一个实施例中,获得高速缓存2037存储要与用户副本2055 集成的内容更新的有序列表。内容更新可在它们被实例化到文档的用户副本2055中时从 获得高速缓存2037中移除。在一些实施例中,用户可选择“取消”来自获得高速缓存2037 的内容更新的实例化。在一个这样的实施例中,内容更新可在用户取消实例化时被添加回 获得高速缓存2037中。图21示出用于创作过程2100的操作流,创作应用诸如创作应用2030可通过该过 程在创作应用2030离线时编辑文档的用户副本如用户副本2055。创作过程2100在开始模 块2102处初始化和开始并且继续至获得操作2104。获得操作2104接收要在文档的用户副 本2055上实现的编辑指令。通常,获得操作2104接收要在用户副本2055内的一个或多个 数据单元上实现的编辑指令。第一确定模块2106检查要被编辑的数据单元是否被锁。例如,第一确定模块2106 可检查存储在第一用户设备2010的本地高速缓存2035中的元数据2039以确定是否有外 部锁(即关联于另一个用户的锁)与要被编辑的数据单元相关联。如果第一确定模块2106 确定要被编辑的数据单元被另一个用户锁住,则出错操作2108禁止对该数据单元的编辑。 例如,在一个实施例中,出错操作2108可通知创作应用2030的用户不应当编辑该数据单 元。在另一个实施例中,出错操作2108可通知创作应用2030的用户不能编辑该数据单元。 创作应用2100循环回到获得操作2104以再次开始。然而,如果第一确定模块2106确定要被编辑的数据单元未被锁住,则请求操作 2114将对锁的请求添加到存储在本地高速缓存2035中的元数据2039。然而,因为不能将该请求与文档的主副本同步,所以请求操作2114不会真正地将锁指派给该数据单元。在请求 该锁之前,可选的警告操作2110可向创作应用2030的用户发出警告。例如,警告操作2110 可向用户指示创作应用2030离线并且因此不能将对用户副本2055所作的改变与文档的主 副本同步。警告操作2110还可提醒用户在不能同步改变时编辑文档的用户副本2055可能 导致冲突。如果实现警告操作2110,则第二确定模块2112确定创作应用2030是否应当继续 实现编辑指令。例如,第二确定模块2112可通过向用户呈现的用户界面工具从创作应用 2030的用户接收选择。如果第二确定模块2112确定不应当实现编辑指令,则创作过程2100 被指引回到获得操作2104以便再次开始。然而,如果第二确定模块2112确定应当实现编辑指令,则创作过程2100继续至上 述请求操作2114。执行操作2116根据编辑指令编辑用户副本2055。第三确定模块2118确 定是否应当将文档存储在本地高速缓存2035中。在一个实施例中,第三确定模块2118确 定是否已经从用户接收到保存文档的指令。在另一个实施例中,第三确定模块确定是否已 经激活了自动保存功能。如果第三确定模块2118确定不应当保存文档,则创作过程2100循环回到获得操 作2104并且再次开始。然而,如果第三确定模块2118确定应当保存文档,则存储操作2120 将因实现编辑指令导致的文档中的改变的指示添加到本地高速缓存2035的存储高速缓存 2031。例如,存储操作2120可将编辑指令本身添加到存储高速缓存2031。在另一个实施 例中,存储操作2120可将内容增量(例如,因实现编辑指令引起的用户副本中的差异的指 示)添加到存储高速缓存2031。第四确定模块2122确定创作应用2030是被配置为处于公共操作模式中还是处于 私有操作模式中。如果第三确定模块2120确定创作应用2030被配置为处于公共操作模式 中,则发布操作2124与存储设备共享内容更新。例如,本地高速缓存2035可将保存在存储 高速缓存2031中的内容更新复制到上载高速缓存2033并且将上载高速缓存2033发送到 存储设备。在一个实施例中,发布操作2124在第一用户设备连接至网络2060时指示应当 将改变和/或编辑指令实例化到文档的主副本中的次序。创作过程2100在停止模块2128 处完成并结束。然而,如果第四模块2122确定创作应用2030被配置为处于私有操作模式中,则第 五模块2126确定用户是否已经明确提供上载内容改变的指令。如果已经明确提供了上载 内容改变的指令,则创作过程2100继续至发布操作2124。然而,如果尚未提供上载内容改 变的指令,则创作过程2100如上所述地在停止模块2122处完成并结束。一般而言,用户设备诸如用户设备2010在通过网络如网络2060连接至存储设备 时至少同步元数据。在一个实施例中,用户设备即使在创作应用不在执行时也同步元数据。 用户设备是否同步内容可取决于创作应用是被配置为处于公共操作模式还是私有操作模 式中。创作应用被配置为所处的操作模式是相关的,即使在用户设备连接至网络时创作应 用没有在执行。图22示出可由用户设备诸如用户设备2010在该用户设备通过网络如网络2060 连接至存储设备时实现的转换过程2200的操作流。转换过程2200在开始模块2202处初始 化和开始并且继续至连接操作2204,该操作以通信方式将用户设备2010耦合至网络2060。
17用户设备2010可通过网络2060以通信方式连接至存储文档的主副本的存储设备。获得操作2206检索包含内容与元数据的文档的主副本的更新版本以便开始将用 户副本2055与主副本同步。在一个实施例中,获得操作2206向存储设备轮询主副本的最 新近版本。在另一个实施例中,获得操作2206在进行连接时自动从存储设备接收最新近的 版本。在一个实施例中,即使在创作应用2030不在执行时也实现获得操作2206。比较操作2208确定所获得的主副本与用户副本2055之间的任何差异。例如,比 较操作2208确定元数据的任何差异和/或内容的任何差异。第一确定模块2210基于该比 较确定在用户副本2055和所获得的主副本之间是否存在任何冲突。例如,第一确定模块 2210可确定创作应用2030在用户设备2010离线之后是否编辑了在主副本上被锁住和/或 编辑的任何数据单元。在一个实施例中,在用户设备2010连接至网络2060时不管创作应 用2030是否在执行都实现比较操作2208和确定模块2210。如果第一确定模块2210确定没有冲突存在,则转换过程2200继续到第一共享操 作2214,该操作将来自文档的用户副本的元数据更新发送到主副本。例如,第一共享操作 2214可将对创作应用2030编辑的数据单元的锁请求发送到主副本。然而,如果第一确定模 块2210确定冲突存在,则解决操作2212禁止进一步的编辑直至解决冲突为止。—般而言,解决操作2212向创作应用2030的用户提供冲突存在的通知。在一个 实施例中,解决操作2212在创作应用2030被访问时提供通知。在另一个实施例中,解决操 作2212在创作应用2030访问文档的用户副本2055时提供通知。在一个实施例中,解决操 作2212向用户显示冲突并且使用户能够调整冲突。在另一个实施例中,解决操作2212向 用户提供每一冲突的一组可能的解决方案。在已经解决了冲突时,转换过程2200继续至第 一共享操作2214并如上所述地执行该操作。第二确定模块2216查明创作应用2030的操作模式(例如,公共模式或者私有模 式)。如果第二确定操作2216确定创作应用2030正在公共模式中操作,则第二共享操作 2222将内容更新发送到存储设备用于集成到文档的主副本中。在一个实施例中,第二共享 操作2222发送存储在本地高速缓存2035中的上载高速缓存2033 (图21)中的所有内容改 变。转换过程2200在停止模块2224处完成并结束。然而,如果第二确定模块2216确定创作应用2030在私有模式中操作,则第三确定 模块2220确定用户是否已经提供了共享内容更新的指令。例如,第三确定模块2218可通 过创作应用2030的用户界面接收共享改变的指令而不管创作应用2030正被配置为处于私 有操作模式中。在一个实施例中,第三确定模块2218查明通过创作应用2030的用户界面 提供的用户命令。如果第三确定模块2218确定已经提供了共享内容的指令,则转换过程2200继续 至排队操作2220,在该操作中准备内容更新供发送到存储设备。例如,内容更新可存储在更 新高速缓存诸如更新高速缓存2033中(图20)。转换过程2200继续至第二共享操作2222 并且如上所述地执行该操作。本发明的实施例可实现为计算机过程(方法)、计算系统、或者制品诸如计算机程 序产品或计算机可读介质。可用任何数量的方式来实现这些过程(程序),包括在本文档中 描述的结构。一种这样的方式是通过对在本文档中描述的设备类型进行机器操作。另一种 可选方式是在计算设备上执行各方法的各个操作中的一个或多个并结合一个或多个人类操作员执行这些操作中的某些操作。这些人类操作员不需要相互协作,而是只需要每个人 具有执行该程序的一部分的机器。计算机程序产品可以是计算机系统可读并且编码了用于执行计算机过程的指令 的计算机程序的计算机存储介质。计算机程序产品还可以是计算系统可读并且编码了用于 执行计算机过程的指令的计算机程序的在载波上的传播信号。本文使用的术语计算机可读 介质包括存储介质和通信介质两者。本领域的技术人员将会了解,本发明可与其它计算机系统配置一起实践,包括手 持设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机等 等。本发明还可在分布式计算环境中实践,其中任务是由通过通信网络链接的远程处理设 备执行的。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。一般而 言,程序模块包括执行特定任务或实现任何抽象数据类型的例程、程序、组件、数据结构、和 其它类型的结构。
权利要求
一种用于在用户设备(110,610,810,2010)上编辑文档的用户副本(155,655,855,2055)的创作系统,所述用户副本是基于所述文档的主副本(150)生成的,所述创作系统包括存储在所述用户设备上的本地高速缓存(426,635,835,2035),所述本地高速缓存包括存储高速缓存(2031)和上载高速缓存(2033)被配置为在所述用户设备上执行的创作应用(130,424,1130,2030),所述创作应用被配置成编辑文档的用户副本,所述创作应用适于有选择地被配置为处于从由公共操作模式和私有操作模式组成的组中选择的一种操作模式,所述创作应用被配置为基于对所述文档的所述用户副本所作的编辑生成元数据更新并基于对所述文档的所述用户副本所作的编辑生成内容更新;元数据同步模块(639,839,2039),被配置为无论所述创作应用被配置为处于何种操作模式都在所述文档的所述用户副本与所述文档的所述主副本之间同步元数据更新;保护模块(634,834),被配置为在所述保护模块接收到存储所述文档的指令时将所生成的内容更新存储到所述本地高速缓存的存储内容高速缓存中,所述保护模块还被进一步配置为如果所述创作应用被配置为处于所述公共操作模式中则在将所生成的内容更新存储到所述存储高速缓存中时将所述生成的内容更新存储到所述上载高速缓存中;以及发布模块(632,832),被配置为与所述文档的所述主副本共享存储在所述上载高速缓存中的所述内容更新,其中与所述文档的所述主副本共享所述内容更新将所述内容更新集成到所述主副本中。
2.如权利要求1所述的创作系统,其特征在于,还包括获得模块,被配置为不论所述创作应用被配置为处于何种操作模式都从所述文档的所 述主副本获得外部内容更新,所述外部内容更新是由一个或多个其它创作应用生成的;以 及获得高速缓存,所述获得模块将从所述主副本获得的所述外部内容更新存储在所述获 得高速缓存中。
3.如权利要求2所述的创作系统,其特征在于,所述创作应用被配置为在所述获得模 块已经将所述外部内容更新存储在所述第二内容高速缓存中时提供所述外部内容更新可 用的指示,以及其中,所述创作应用被配置为将所述外部内容更新中的一个或多个实例化 到所述文档的所述用户副本中。
4.如权利要求1所述的创作系统,其特征在于,如果所述创作应用被配置为处于所述 私有操作模式中并且所述保护模块已经接收到共享所述内容更新的指令,则所述保护模块 还在将所生成的内容更新存储到所述存储高速缓存中时将所生成的内容更新存储到所述 上载高速缓存中。
5.如权利要求1所述的创作系统,其特征在于,所述创作应用被配置为通过至网络的 连接访问所述文档的所述主副本。
6.如权利要求5所述的创作系统,其特征在于,所述创作应用被配置为在所述创作应 用未连接至所述网络时能够编辑所述文档的所述用户副本。
7.如权利要求5所述的创作系统,其特征在于,所述创作应用被配置为在所述创作应 用未连接至所述网络时提供警告,所述警告指示所述创作应用不能将所述用户副本与所述主副本同步。
8.如权利要求1所述的创作系统,其特征在于,所述元数据更新包括至少一个由所述 创作应用生成的、围绕正在编辑的所述文档的至少一个数据单元的锁,所述锁禁止其它创 作应用在所述文档的相应用户副本上编辑所述数据单元。
9.一种计算机实现的方法,所述方法将文档的用户副本与所述文档的主副本同步,所 述文档的所述用户副本被存储在用户设备(110,610,810,2010)上并且所述文档的所述主 副本(150)被存储在存储设备(120,620,820,1120)上,所述存储设备被配置为以通信方式 耦合至所述用户设备,所述方法包括将所述用户设备(110,610,810,2010)连接至所述存储设备;为创作应用(130,424, 1130,2030)选择私有操作模式;在所述用户设备处用所述创作应用编辑所述文档的所述用户副本(155,655,855, 2055)以生成至少第一内容更新;周期性地从所述用户设备将通过编辑所述文档的所述用户副本生成的任何元数据更 新发送到所述存储设备,其中所述元数据更新被实例化到存储在所述存储设备上的所述主 副本(150);在所述用户设备处存储通过编辑所述文档的所述用户副本生成的所述内容更新; 在所述主副本已经被更新以包括外部元数据更新时,在所述用户设备处周期性地从所 述文档的所述主副本接收所述外部元数据更新;将从所述文档的所述主副本接收到的所述外部元数据更新实例化到所述文档的所述 用户副本中;在所述主副本已经被更新以包括外部内容更新时,在所述用户设备处周期性地从所述 文档的所述主副本接收所述外部内容更新。
10.如权利要求9所述的计算机实现的方法,其特征在于,还包括 接收实例化指令;以及根据实例化指令将所述外部内容更新实例化到所述文档的所述用户副本中。
11.如权利要求9所述的计算机实现的方法,其特征在于,还包括 在所述创作应用中提供所述外部内容更新可用性的指示;在所述创作应用中接收查看所述外部内容更新的指令; 提供用于在所述文档的所述用户副本中实例化所述外部内容更新的选项;以及 实现所选择的用于在所述文档的所述用户副本中实例化所述外部内容更新的选项。
12.如权利要求9所述的计算机实现的方法,其特征在于,还包括 接收将所述创作应用配置为处于公共操作模式中的指令;将所述创作应用切换到所述公共操作模式中;以及与所述文档的所述主副本共享存储在所述用户设备处的所述内容更新。
13.如权利要求12所述的计算机实现的方法,其特征在于,还包括 将所述用户设备与所述存储设备断开连接;继续用所述创作应用编辑所述文档的所述用户副本;在将所述用户设备与所述存储设备断开连接之后,在所述用户设备处存储由所述创作 应用生成的任何内容更新;以及在所述用户设备重新连接至所述存储设备时共享存储在所述用户设备处的所述内容 更新。
14.如权利要求9所述的计算机实现的方法,其特征在于,还包括将所述用户设备与所述存储设备断开连接;继续用所述创作应用编辑所述文档的所述用户副本;以及在将所述用户设备与所述存储设备断开连接之后,在所述用户设备处存储由所述创作 应用生成的任何内容更新;其中在所述用户设备重新连接至所述存储设备时不与所述存储设备共享存储所述在 所述用户设备处的所述内容更新直到所述创作应用被切换到所述公共操作模式中为止。
15.一种存储计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在由 计算设备执行时执行一种创作存储在用户设备(110,610,810,2010)上的文档的用户副本 (155,655,855,2055)的方法,所述方法包括将创作应用(130,424,1130,2030)配置为处于公共操作模式中,其中所述创作应用被 配置为由所述用户设备(110,610,810,2010)执行以创作所述文档的所述用户副本(155, 655,855,2055),其中所述用户设备是离线的;用所述创作应用编辑所述文档的所述用户副本以生成多个内容更新;在所述用户设备处存储由所述创作应用生成的任何元数据;在所述用户设备处的一个队列(2031)中存储由所述创作应用生成的所述内容更新;将所述用户设备连接至所述存储设备;在所述用户设备连接至所述存储设备时,即使所述创作应用在所述用户设备连接之前 被关闭,也要将所述元数据与所述文档的所述主副本(150)共享。
16.如权利要求15所述的计算机可读介质,其特征在于,还包括在所述用户设备连接至所述存储设备时,即使所述创作应用在所述用户设备连接之前 被关闭也共享存储在所述队列中的所述内容更新。
17.如权利要求15所述的计算机可读介质,其特征在于,还包括在将所述用户设备连接至所述存储设备之后从所述文档的所述主副本获得外部元数 据更新;以及自动地将所述元数据更新实例化到所述文档的所述用户副本。
18.如权利要求15所述的计算机可读介质,其特征在于,在所述用户设备处的所述队 列中存储由创作应用生成的所述内容更新包括在所述创作应用从所述用户接收定稿指令 时在所述队列中存储所述内容更新。
19.如权利要求18所述的计算机可读介质,其特征在于,在所述创作应用被配置为处 于所述公共模式中时接收所述定稿指令触发对所述内容更新的共享。
20.如权利要求18所述的计算机可读介质,其特征在于,在所述创作应用被配置为处 于所述私有模式中时接收所述定稿指令不触发对所述内容更新的共享。
全文摘要
协作创作应用提供其中二个或多个用户可以并发编辑文档的创作环境。每一用户编辑文档的一个副本、发送更新到该文档的主副本、以及从该文档的主副本接收更新。创作环境可被配置为处于公共操作模式或者私有操作模式中,在公共操作模式中,自动同步内容和元数据,在私有操作模式中,自动同步元数据并且仅应用户请求同步内容。创作应用可在公共或私有模式中离线编辑文档。
文档编号G06F21/00GK101896915SQ200880121295
公开日2010年11月24日 申请日期2008年11月11日 优先权日2007年12月14日
发明者C·J·安托斯, E·J·伯恩斯坦, J·B·贝勒, M·R·奈特 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1