文档编辑的智能冲突检测和语义表达的制作方法

文档序号:11160938阅读:712来源:国知局
文档编辑的智能冲突检测和语义表达的制造方法与工艺

共享的数据系统允许用户访问文档的副本并离线地进行工作。最终,用户需要将已经发生改变的文档返回至系统。当该文档被提交时,将改变与驻留在系统中的所存储的版本进行合并。通常而言,这样的系统通过用经改变的内容(即,值设置)替换所存储的内容,来合并文档。由单个用户对于文档的标题和摘要的改变可以安全地与所存储的版本进行合并。类似地,当第一用户提交具有经修改的标题的文档并且第二用户提交具有经修改的摘要的文档时,不存在问题。然而,当多个用户访问同一文档并且分别地进行修改时,场景变得更加复杂。第一用户提交具有标题改变的文档的经编辑版本是没有问题的,但当第二用户尝试提交同一文档的也包含标题改变的版本时,将出现冲突。第二用户必须决定保留哪个标题改变。

共享数据系统中的传统的冲突检测和解决方案通常使用基本内容比较来识别所提交的第一文档和所提交的第二文档之间的冲突的改变,特别是在值设置系统中。在字段值中缺少精确的匹配不始终意味着存在冲突,但每次第二文档中的经改变内容与第一文档中的经改变内容不同时,基本内容比较都将提示第二用户解决冲突。用户必须解决的每个冲突都花费时间,并且给用户提供了无意中保存或者丢弃错误数据的机会。当用户尝试决定如何解决冲突时,还可能体验不确定性和挫折。已经关于这些和其他考虑来而进行了本发明。尽管已经讨论了相对具体的问题,但应当理解的是,在本文中所公开的实施例不应当限于解决在

背景技术:
中所标识的具体的问题。



技术实现要素:

提供了该概要以用简化的形式引入将在以下的详细描述中进一步描述的概念的选择。该概要不旨在标识所要求保护的主题的关键特征或本质特征,也不旨在用于帮助确定所要求保护的主题的范围。

智能冲突检测系统的实施例包括用于处理写请求和读请求的分离的层。日志(journal)利用一种分区方案来服务写请求(例如,对文档的写入)。存储利用另一种分区方案来服务读请求(即,对视图的读取),其中该分区方案可以与日志分区方案相同或不同。日志以接收到对文档的编辑的顺序而顺序地向文档应用这些编辑。换句话说,日志用于防止对同一文档的同时的更新。

冲突检测层负责确定对由用户所提交的文档的一个版本的编辑是否与从服务中读取了该文档之后所创建的对该文档的另一个版本的编辑相冲突。将对文档的编辑表达为用于描述该文档将如何被改变的意图,而不是明确地指定所得出的内容。冲突检测层针对包含在该文档的中间版本(即,与源版本相比较新的版本)中的对应的编辑的意图来对编辑的意图进行评估。可以从历史记录中获得关于先前编辑的信息。一些实施例可以可选地包括一组冲突关系。这些冲突关系指示意图是彼此兼容的,还是彼此不兼容的。实施例可以将冲突关系定义为一组冲突规则,冲突检测层可以应用该组冲突规则来确定所提交的编辑是否与先前的编辑相冲突。

在操作时,智能冲突检测允许用户获得文档的副本以供离线使用。副本与在获得该副本时从其得到副本的文档的版本(即,该文档的当前版本)相关联。用户可以修改文档的离线副本。在与正在被修改的数据相对应的意图方面来表达对副本的编辑。意图通常包括旨在实现该意图的动词(即,动作)。意图还可以具有存储动作的任何参数的一个或多个槽(slot)。例如,数字数据类型可以具有以指定的量来调整值的意图,该意图使用动词“递增”,其中槽用于接受待增加至当前字段值的数字。

一旦用户完成对副本的编辑,就将对副本的编辑接收回系统中。当提交编辑时,可以将与经编辑的副本相关联的基线版本同该文档的当前版本进行比较。如果与该文档的源版本相比,存储中的该文档的版本较新(即,存在中间版本),则针对在基线版本之后的该文档的每个版本的编辑来评估对该副本的编辑。冲突检查操作主要聚焦于:针对对在基线版本之后的该文档的每个版本中的对应的数据的编辑的意图而对与对副本的编辑相关联的意图的语义评估;然而,针对没有或不能在意图方面来表达的编辑,冲突检查操作可以采用其他冲突检查技术,例如,内容相等/不等。确定两个编辑是否冲突可以基于一组冲突关系。冲突关系指示意图是彼此兼容的还是彼此不兼容的。实施例可以使用可以由冲突检测层所应用的一组规则来定义冲突关系。

如果针对属于改变的集合的任何编辑而检测到冲突,则系统的实施例可以自动地拒绝改变的整个集合。可替代地,可以使用相关联的意图将不冲突的编辑与文档的所存储的版本进行合并、更新所存储的文档的版本标识符、并且存储对该文档的编辑的记录。在其他实施例中,可以提示用户解决该冲突,并且给用户机会来作为集合或以每个编辑为基础接受或者拒绝这些改变。

附图说明

通过参照以下的附图,本公开的进一步的特征、方面、和优点将变得更好地理解,在附图中,元素不是按比例的以便更加清楚地示出细节,其中,几个视图通篇中的相同的附图标记指示相同的元件:

图1示出了针对智能冲突检测系统的一个实施例的系统架构;

图2是由智能冲突检测系统所采用的智能冲突检测方法的一个实施例的高级流程图;

图3A和图3B共同地示出了根据智能冲突检测系统的一个实施例的针对涉及不会引起冲突的对设置值字段进行编辑的场景的流程图;

图4A到图4C共同地示出了根据智能冲突检测系统的一个实施例的针对涉及引起冲突的对设置值字段进行编辑的场景的流程图;

图5A到图5D共同地示出了根据智能冲突检测系统的一个实施例的针对不会引起冲突的图4A-C的场景的替代的版本的流程图;

图6A和图6B共同地示出了根据智能冲突检测系统的一个实施例的针对涉及不会引起冲突的对计数值字段进行编辑的场景的流程图;

图7是示出了利用其可以实践本发明的实施例的计算设备的物理组件的一个实施例的框图;以及

图8A和图8B是利用其可以实践本发明的实施例的移动计算设备的简化框图。

具体实施方式

在下文中参照形成了本文的一部分并且示出了具体的示例性实施例的附图来更加全面地描述各种实施例。然而,实施例可以以许多不同的形式来实现,并且不应当被解释为限于在本文中所阐述的实施例;相反,提供了这些实施例以使得该公开将是透彻的和完整的,并且将会向本领域技术人员完全传达实施例的范围。实施例可以被实践为方法、系统、或设备。从而,实施例可以采取硬件实现、完全软件实现、或者组合了软件和硬件方面的实现的形式。因此,以下详细描述将不被理解为限制意义。

本文描述并在附图中示出了智能冲突检测系统的实施例。该系统在可能引起冲突的编辑的、允许多个用户同时地对同一文档进行工作的大规模服务中提供编辑的语义表达和历史感知的冲突检测。当提交时,将对文档的一个版本的改变与对从大规模服务中读取了经编辑的文档之后所创建的文档的所有版本的改变进行比较。基于被编辑的数据的特性,将对文档的编辑表达为在动作和该动作的目标方面来描述改变的意图。将当前的编辑的意图与在源自于同一源文档的先前版本中进行的编辑的历史意图进行比较,允许系统能够智能地评估这些编辑是否有冲突。历史感知语义分析使得更少频率地提示用户解决冲突,这改善了用户体验。

图1示出了针对智能冲突检测系统的一个实施例的系统架构。智能冲突检测系统100可以是以存储可以由多个用户102访问和操纵的信息的服务或应用来实现的。该智能冲突检测系统的实施例适合于与大规模(即,大数据)服务或者较小的多用户服务或应用一同使用,其中,多个用户可以同时地访问和操纵同一文档。用户可以经由诸如但不限于互联网、广域网、局域网及其组合之类的网络106,从多种客户端设备104a-d来访问该服务。合适的客户端设备的示例包括但不限于:台式计算机104a、膝上型计算机104b、平板计算机104c、移动电话104d、个人数字助理、智能手表、和智能电器(例如,智能电视)。

智能冲突检测系统包括提供至服务的进入点的前端层108。在各种实施例中,服务可以提供客户端设备可通过诸如浏览器之类的用户代理来访问的基于网络的用户接口。在一些实施例中,用户代理可以是提供用户接口并且处理与服务的通信的专用客户端应用。

智能冲突检测系统的实施例包括用于处理事务的事务性对象模型110,例如但不限于:写请求和读请求,以允许用户针对服务而对文档和视图进行读、查看(即,显示)、创建、复制、删除、操纵(即,编辑或修改)、共享、协作、或保存(即,写)。术语“文档”宽泛地包含由该服务所处理的任何数据对象。文档可以包括结构化的数据、非结构化的数据、元数据、或其组合。文档还可以与外部数据或者元数据相关联,所述外部数据或元数据例如,由服务使用以识别和追踪该文档的数据。作为示例,对于基于办公或者生产力应用的服务而言,文档可以包括但不限于:文字处理文档、邮件项、任务项、日历项、联系人项、演示、电子表格、或者数据库。术语“视图”宽泛地包含基于向用户呈现文档所使用的一般属性值的文档的任何索引、分组、或者分类。作为示例,视图可以允许根据任务所有者或者根据任务与其相关联的项目来显示任务项的集合。

智能冲突检测系统适合于在这样一种系统中使用:其中,多个用户具有对文档的非排他性访问,并且可以对文档进行改变,所述改变不会同时地反映在由其他用户访问或者操纵的该文档的副本中,并且其中,对文档的冲突的编辑是可能的。一个示例是允许多个用户在同一时间访问和操纵一个文档的大规模服务。当用户访问文档时,大规模服务给每个用户提供源文档的分别的离线副本。当对经编辑的副本进行保存(即,提交包含编辑的写请求)时,将用户对于离线副本进行的任何改变与文档的当前版本进行合并。

除了仅仅允许用户同时地和独立地对同一文档进行编辑之外,大规模服务还通常保存文档的多个复本,以用于高效的访问和可扩展性。必须将对文档的改变传播至所有的复本。直到已经同步了该文档的所有复本为止,在系统内存在该文档的多个版本。取决于向用户提供哪些复本源副本,该用户可能无法访问文档的最新的版本。

在所示出的实施例中,在大规模服务的上下文中将智能冲突检测系统描述为更加复杂的场景中的一个场景中的智能冲突检测系统的效用的一个示例;然而,智能冲突检测系统的使用并不限于大规模服务。在大规模服务内,写请求112和读请求114由分别的层来处理的。日志116利用一种分区方案来服务写请求(例如,对文档的写入)。存储118利用另一种分区方案来服务读请求(即,对视图的读取),其中,该分区方案可以与日志分区方案相同或不同。在所示出的实施例中,将日志和存储表示为通过对应的应用程序接口(API)(日志API 120和存储API 122)来访问的虚拟化存储资源(例如,云存储)。

日志包括用于存储文档的至少一个基于文档的分区124。基于分配给单个资源或查询的数据的最大分组来设置每个分区的大小。随着由大规模服务所处理的数据的量的增加,可以线性地扩展日志并且增加新的分区。无论日志分区的数量是多少,智能冲突检测系统将与任何给定的文档相关联的所有写请求都保存在同一日志分区中。使单个日志分区与每一个文档相关联允许保存针对每个文档的事务性编辑队列。

存储包括用于存储文档的至少一个基于视图的分区126。通过视图来对存储进行分区允许由多个用户在同一时刻对文档进行高效地访问。如果文档与多于一个视图相关联,则每一个视图通常保存其自己的该文档的副本(即,复本)。同日志一样,可以线性地扩展存储并且增加新的分区来处理额外的文档或者视图。

当用户执行诸如创建文档、修改文档、或者删除文档之类的动作时,将写请求传送至智能冲突检测系统。在接收到写请求之后,智能冲突检测系统首先将写请求保存至日志。在将写请求保存至日志之后,对文档的改变被认为是要接受的,但是在写请求中所反映的改变通常不是对所有用户都可见的,直到它们被合并至存储为止。当日志包括多个分区时,智能冲突检测系统可以确定指示写请求应当被写入的分区的分区标识符。在各种实施例中,分区标识符可以是基于与写请求相关联的文档的文档标识符的。

智能冲突检测系统将日志用作暂存区域(staging area)以保存写请求直到它们被合并到合适的视图中为止。当检测对文档的冲突编辑时也可以使用该日志。为了实现这些功能,可扩展的最终一致性系统的实施例可以在接收到写请求之后,将该写请求保存至日志至少两次。可以将该写请求的一个副本保存成运行记录128,其充当标识还没有与存储完全融合的写请求的动作项。无法将写请求复制到存储可以是分区或者日志与存储之间的通信信道(例如,互联网)暂时无法访问(例如,资源故障或停机)的结果。可以将该写请求的另一个副本保存为历史记录130。可以出于诸如检测对文档的冲突编辑或维护审计日志之类的目的来使用历史记录。

改变提交层132负责将写请求从日志传播至存储。文档写从日志流动至存储部分,因此不存在复杂的同步机制。在各种实施例中,该可扩展最终一致性系统可以当在日志中创建运行记录时首次尝试将其复制到存储。一旦已经成功地复制了运行记录,就将该运行记录从该日志中删除。

一致性恢复层134负责该改变提交层的循环操作并最后提供最终一致性。一致性恢复层提示改变提交层通读由日志所保存的现有的记录并且将任何运行记录复制至存储。在各种实施例中,该改变提交层以最老的运行记录开始,按照编辑被该可扩展最终一致性系统所接收的顺序来对文档进行事务性编辑。该一致性恢复层可以基于各种事件的发生和/或定期地(例如,每N分钟、小时、或天)发起改变提交层的操作。可以用来触发改变提交层的操作的事件的示例包括但不限于:系统启动、错误恢复、以及接收写请求。

冲突检测层136负责确定在写请求中提交的对文档的一个版本的编辑是否与对自从该文档从大规模服务中被读取(即,获取(sourced))以来所创建的该文档的另一个版本的编辑相冲突。将对文档的编辑表达为描述将如何改变该文档的意图,而不是明确地指定所得出的内容。冲突检测层针对包含在该文档的中间版本(即,与从大规模服务中所读取的版本相比较新的版本)中的对应的编辑的意图来对编辑的意图进行评估。可以从历史记录中获得关于先前的编辑的信息。

一些实施例可以可选地包括一组冲突关系138。冲突关系指示意图是彼此兼容的还是彼此不兼容的。实施例可以将冲突关系定义为一组冲突规则,冲突检测层可以应用该组冲突规则来确定对文档的编辑是否与先前的编辑相冲突。

尽管已经描述了大规模服务的具体的实施例,但智能冲突检测系统不限于使用包括图1的示例性大规模服务在内的任何特定的大规模服务。此外,智能冲突检测系统不限于包含文档的多个副本的存储模型或者对任何特定的同步机制的使用,所述特定的同步机制例如由日志、存储、改变提交层、或者一致性恢复层的组合所提供的那些同步机制。该智能冲突检测系统适合于与存储每个文档的单个副本的服务或者系统一起使用。

图2是由智能冲突检测系统所采用的智能冲突检测方法的一个实施例的高级流程图。该智能冲突检测方法200开始于文档读取操作202,其中,将源文档的副本提供给用户。关于源文档而离线地获得副本,并且在将改变反映在源文档中之前,用户通常必须采取一些动作来保存修改。例如,可能要求用户使用基于网络的表格来提交文档,或者要求用户经由用户接口来发起文档保存功能。多个用户可以获得同一文档的副本。对一个副本的修改不影响其他现有的副本。

版本控制操作204将副本与在获得该副本时从其获得该副本的文档的版本(即,该文档的当前版本)相关联。从其获得该副本的文档的版本可以被称为该副本的基线版本。在一些实施例中,将版本关联与副本存储在一起,例如存储为作为元数据或者文档属性值。可替代地,可以将与副本相对应的标识符链接至基线版本或者由系统存储,例如,与文档一起、在数据库中、或者使用另一个合适的数据存储对象。

可以使用版本标识符来指定当前文档版本和基线版本。版本标识符可以由形成标识符的一个或多个数字或字母组件组成,所述标识符可以递增或者以其他方式顺序地更新,以区分文档的不同版本。字母数字版本的标识符的示例包括但不限于:“1A”、“1B”、…、“4D”等,以及“1.2.2.2”、“1.2.2.1”、…、“3.1.2.313”等。在各种实施例中,版本标识符可以是或者可以包括但不限于以下中的一项或多项:日期戳、时间戳、日期/时间戳、散列、校验和、全局唯一标识符、或者其他参考值。

用户可以修改文档的离线副本。编辑可以涉及但不限于该副本中或者与该副本相关联的结构化数据或字段(例如,元数据)的改变。编辑表达操作206可以在与正在修改的数据相对应的意图方面来表达对副本的编辑。

意图通常包括旨在实现该意图的动词(即,动作)。意图还具有将动作的参数作为槽值来存储的一个或多个槽。表1示出了针对各种数据类型的代表性意图。在表1中所示出的数据类型、动词、槽、和动作不旨在是限制性的。槽对于一些意图而言是可选的,一些意图被定义为没有槽。例如,递增动作可以总是以一的大小来增加值,并且将不需要该意图具有槽。可替代地,递增动作可以默认地将值增加一的大小,除非槽包含针对值增加而设置不同的大小的不同的值。在一些实施例中,槽还可以保存复合值。例如,向集合添加成员的意图可以接受经限制的成员的列表。可以对该列表进行解析,并且智能冲突检测系统使用与该意图相关联的动词来对该列表中的每个值进行分别地处理。其他实施例可以将槽限制为单个值。例如,向集合添加多个成员的编辑可以引起生成对应数量的分别的意图,每个成员一个意图。

意图表达操作意味着什么而不是操作做什么。参考表1中的文本数据类型,两个意图均替代整个文本,但用于实现不同的目标。对编辑的对象进行区分允许更有意义的冲突检测,并产生更好的结果。以下的示例展示了基于意图的编辑所提供的智能的重要性,将文本值从“与客户会面”改变成“状态报告会议”是改变该文本的含义的内容改变。相反,将文本值从“Meett with th client from one to three pm(下午一点到三点与客户会面)”改变成“Meet with the client(1PM-3PM)(与客户会面(下午1点到3点))”是涉及次要的拼写错误校正和时间格式化的编辑性改变,但不改变含义。在语义上,编辑性改变与所接受的内容改变相冲突。换句话说,尝试对原始内容进行次要的编辑而同时另外的某人改变整个含义产生了冲突。然而,内容改变不与所接受的编辑性改变相冲突,这是因为编辑性改变实质上不改变原始值。换句话说,对于冲突检测目的而言,当另一个用户在同一时间进行内容改变时,由一个用户进行的编辑性改变可以被视为是非事件,这是因为面对实质性改变而言,编辑性改变是无关的。

表1

根据数据类型的示例性意图

一旦用户完成对于副本进行编辑,写操作208就将这些编辑接收到系统中。由于多个用户可以同时地并且独立地访问和修改同一个文档,因此可能发生对该文档的冲突编辑。通常,写操作以编辑被接收的顺序来对其进行处理。换句话说,在没有任何冲突的情况下,接受所提交的对字段的第一编辑,而针对冲突的编辑来筛查对该字段的随后的编辑,该冲突的编辑必须例如由提交这些编辑的用户或者具有解决冲突的权利和/或责任的授权的用户手动地解决。一些冲突可以在没有用户干预的情况下基于一组规则而自动地解决。例如,如果两个同级别的员工对同一字段创建了冲突编辑,则可以拒绝较后的编辑;然而,如果经理的编辑与较低级别员工的编辑相冲突,则解决方案可以自动地接受经理的编辑。

当编辑被提交时,版本检查操作210可以将经编辑的副本的基线版本与文档的当前版本进行比较。版本检查可以基于与该副本相关联的基线版本标识符和该文档版本标识符的等同/不等。例如,文档版本号大于基线版本号指示自从获取了该副本以来该文档已经发生了改变,或者在版本标识符序列(或系列)中比基线版本标识符更晚出现的文档版本标识符可以对应于该文档的较晚(即,较新)的版本,其可以指示自从获取该副本以来该文档已经进行了更新。对文档进行保存可以对应于在一些系统中提交包含编辑的写请求。

该方法的实施例可以使用版本检查的结果作为初步(即,阈值)测试,以确定是否应当针对冲突而筛选这些编辑。副本的基线版本和文档的当前版本的相等指示自从该副本被获取以来该文档还没有发生过改变。换句话说,版本相等指示正在提交的编辑是所提交的第一编辑。通常而言,可以接受所提交的第一编辑而不用担心冲突编辑。

在一些实施例中,版本检查操作不涉及对版本标识符的任何直接比较。替代地,版本检查识别副本的基线版本,该基线版本产生被提交以用于在取回相关的文档修订历史记录时使用的编辑。

与获取的文档的版本相比,如果存储中的文档的版本较新,或者版本检查操作不涉及版本比较,则修订历史收集操作212收集已经与基线版本之后的文档合并了的编辑相对应的信息。在一个示例中,可以从在本文中所描述的大规模服务的日志中所保存的历史记录(即,写请求)中获得修订历史。类似类型的修订记录可以由其他系统来存储。无论版本比较是否作为版本检查的一部分而被执行,该修订历史收集操作都可以发出针对具有相比于由版本检查操作所识别的基线版本较新的版本号的历史记录的查询。该方法的实现可以以版本比较操作和修订历史收集操作的相对效率为条件。

一旦已经取回了相关的修订历史,则冲突检查操作214针对对基线版本之后的文档的每个版本的编辑而评估对副本的编辑。实施例可以以从最早的版本开始并且在最新的版本之前的版本顺序来对所述编辑进行评估。冲突检查操作主要聚焦于:针对对在基线版本之后的该文档的每个版本中的对应的数据的编辑的意图而对与对副本的编辑相关联的意图的语义评估;然而,针对不能在意图方面来表达的编辑,冲突检查操作可以采用其他冲突检查技术,例如,内容相等/不等。如果针对所提交的改变中的任何编辑而检测到冲突,则系统的实施例可以自动地拒绝改变的整个集合。可替代地,可以将不冲突的编辑与所存储的版本进行合并,并且仅仅拒绝冲突的编辑。在其他实施例中,可以提示用户解决该冲突,并且给用户机会来作为集合或以每个编辑为基础接受或者拒绝这些改变。

确定两个编辑是否冲突可以基于一组冲突关系。冲突关系指示意图是彼此兼容的还是彼此不兼容的。实施例可以使用可以由冲突检测层所应用的一组规则来定义冲突关系。

某些冲突关系可以是全局适用的。基于设置动词的值(例如,设置或者清除)的意图通常与其他意图是全局不兼容的,这是因为该动作将替代或者清除目标字段的内容。基于限制性动词(例如,锁定)的意图与其他意图是全局不兼容的,这是因为该动作将阻止对目标字段进行改变。类似地,基于许可动词(例如,解锁)与其他意图是全局兼容的,这是因为该动作允许对目标字段进行改变。

意图的兼容性或者不兼容性可以是以动词或者动词与槽的组合为条件的。一些冲突关系可以仅仅考虑与意图相关联的动词。基于与算数运算(例如,递增或者递减)相关联的动词的意图应当很少冲突或者决不会冲突,无论槽值是什么。在合并以设置用于递增或递减的大小期间,可以使用槽值,但是可以进行冲突确定而不需要知道槽值。

其他冲突关系可以考虑与意图相关联的动词或者动词和槽值二者。与对值进行替代的意图相反,对值进行修改的意图(与进行替代相比)(例如,设置操纵意图)。使用相同的值修改动词的意图(例如,两个编辑均使用动词“添加”或者两个编辑均使用动词“移除”)可以是重复的,但应当很少冲突或者决不会冲突。例如,添加值“蓝色”的意图和添加值“绿色”的意图是不冲突的。类似地,移除值“蓝色”的两个意图将是重复的,但不冲突。针对于诸如这些之类的情况的冲突关系可以在进行冲突确定时可选地忽略槽值(例如,颜色)。对于使用相反的值修改动词的意图而言,槽值将变得与冲突确定有关(例如,一个使用动词“添加”,而另一个使用动词“移除”)。例如,添加值“蓝色”的意图和移除值“蓝色”的意图将是冲突的,而添加值“蓝色”的意图和移除值“红色”的意图将是不冲突的。

合并操作216对其中没有编辑与先前的编辑相冲突的编辑的集合、不与先前编辑相冲突的个体的编辑、或者由用户使用相关联的意图可选地保留到文档中的冲突编辑进行合并。版本更新操作218对文档的版本标识符进行更新。例如,可以将版本标识符递增。

历史管理操作220将编辑的记录存储在与文档相关联的修订历史中。在各种实施例中,所述编辑可以个体地存储,或者作为改变的集合来存储。可以将在解决操作期间所丢弃的冲突的编辑从记录中排除或者标记为已丢弃。

图3A和图3B共同地示出了根据智能冲突检测系统的一个实施例的针对涉及不引起冲突的对设置值字段的编辑的多用户文档编辑场景的流程图。在该流程的开始处,在存储118中保存的文档302处于由文档版本标识符304所表示的版本1。该文档的作者字段306是包含具有一个成员(Alice)的集合的设置值字段。两个用户Bob 308b和Chris 308c独立地访问310该文档。每个用户具有利用其进行工作的该文档的分别的副本312b、312c。在访问该文档的时刻,该文档的版本标识符与作为基线版本314的副本相关联。在该场景中,Bob和Chris两者都获得该文档的版本1的副本。

Bob对作者字段进行编辑316以将他自己添加为作者。将该编辑表达为由动词“添加”和槽值“Bob”组成的意图318以描述将成员(Bob)添加至集合。Bob是提交320对该文档的他的副本的编辑的第一人。当该编辑被提交时,智能冲突检测系统的实施例可以执行版本检查322,该版本检查322将与所提交的编辑相关联的副本的基线版本同由存储所保存的该文档的当前版本进行比较。由于比较324确定该文档的存储版本与副本的基线版本相同,因此不存在与该编辑的冲突,并且智能冲突检测系统可以将该编辑与存储中的该文档进行合并326。在Bob的副本的情况下,通过将Bob添加至所述集合中而用Bob的编辑328来更新存储文档的作者字段。智能冲突检测系统还可以使存储文档的版本标识符递增330(或者以其他方式更新)至版本3,以便指示该文档已经与提供给Bob的源版本发生了改变。额外地,将Bob的编辑添加至可以在日志116中所存储的修订历史332。

Chris也同时地对作者字段进行编辑316,以将Bob和David添加为作者。可以将该编辑表达为一对意图318,一个意图将Bob添加至作者集合,而另一个意图将David添加至作者集合,如在所示出的流程中所示。现在转到图3B,Chris在Bob之后提交320对该文档的他的副本的编辑。当执行版本检查322时,智能冲突检测系统确定由存储所保存的该文档包含有提供给Chris的副本中所没有包括的改变,这是因为存储版本更高324。从而,智能冲突检测系统执行修订历史分析334,其针对在修订历史332中出现的自从获取了Chris的副本以来所创建的该文档的所有历史版本336,来评估该编辑的意图。在该场景中,唯一的中间版本是存储中的文档的当前版本,即版本3。修订历史分析的实施例针对所提交的改变的意图,对在中间版本中所反映的改变的历史意图338进行评估,以提供超出该文档的中间版本的内容的有意义的冲突检测。

使用传统的冲突检查,Chris的改变将被认为是冲突的编辑,这是因为由Bob和Chris所编辑的作者字段的内容是不相同的。替代地,通过根据意图而在语义上对编辑进行评估,智能冲突检测系统确定Bob和Chris二者对作者字段的所有改变都是对所述集合的添加。确定由Chris将Bob添加为作者是由Bob进行的相同的改变的重复,并且不产生冲突340。同样,Chris的添加David的编辑不与Bob将其自己添加为作者的编辑发生冲突342。应当理解的是,智能冲突检测系统可以以各种方式来处理重复的编辑,例如,当Bob已经是该集合的成员时,又向该集合添加Bob。例如,可以忽略重复编辑(即,可以不进行合并尝试),或者可以对合并规则进行配置,以使得重复的编辑不会产生具有冗余的成员的集合(即,Bob不会出现两次)。

因此,智能冲突检测系统接受Chris的编辑328,将它们合并326到该文档的当前版本,并且将存储文档的版本标识符递增330(或者以其他方式更新)至版本4,以指示该文档与Bob所提交的版本发生了改变。将Chris的编辑添加至修订历史332。

图4A到图4C共同地示出了根据智能冲突检测系统的一个实施例的针对涉及引起冲突的对设置值字段的编辑的多用户文档编辑场景的流程图。该流程的大部分类似于结合图3A和图3B所描述的内容,除了Chris在Bob之前提交对他的副本的编辑,以及Chris的编辑将Eve(而不是Bob)添加至作者字段之外。由于Chris的副本的基线版本与存储中的该文档的当前版本相同,因此没有冲突发生。Chris的编辑被接受,并且被合并至该文档以创建该文档的版本3。

在该场景中,流程不同在于:在Bob提交对该文档的他的副本的编辑之前,Fred访问该文档的版本3。现在转到图4B,Fred不认为Eve是作者,并且将Eve从作者列表中删除。将Fred的编辑表达为由动词“删除”和槽值“Eve”组成的意图318,以描述从所述集合中移除成员(Eve)。Fred在Bob之前提交320对该文档的他的副本的编辑。同样,由于Fred的副本的基线版本与存储中的该文档的当前版本相同(即,不存在中间版本),因此没有冲突发生。尽管Fred的编辑具有与Chris的编辑相反的意图,但由于Chris的编辑被包括在提供给Fred的该文档的版本之中并且不存在中间版本,因此不存在冲突。从而,Fred的编辑被接受,并且被合并至该文档以创建版本4。

与此同时,Bob一直在编辑该文档的他的副本,并且他的编辑包括将Eve添加至作者字段中。现在转到图4C,当Bob提交对他的副本的编辑时,Chris的版本(版本3)和Fred的版本(版本4)两者都是相对于Bob的基线版本(版本1)的该文档的中间版本。从而,修订历史分析通过将Bob的编辑的意图与Chris所进行的编辑(即,所接受的第一编辑)进行比较而开始。由Bob和Chris两者所进行的编辑的意图是将Eve添加为作者,因此不存在冲突340。接着,修订历史分析将Bob的编辑的意图与Fred所进行的编辑(即,所接受的第二编辑)进行比较。移除作为作者的Eve的Fred的编辑与将Eve添加为作者的Bob的编辑具有相反的意图。换句话说,这些编辑是不兼容的。由于Fred的编辑是在Bob获得该文档的副本之后才被接受的(即,其在相对于Bob的副本的基线版本的中间版本中出现),因此相反的意图触发了冲突344。随着智能冲突检测系统向Bob示出该冲突,并且提示346他解决该冲突,流程继续。将Bob对于该冲突的解决方案348应用至存储中的文档,无论是覆盖Fred的编辑、是将Eve添加为作者、还是从作者字段中省略Eve(如Fred所最后修改的)。如果Bob的编辑包括其他改变,则将创建该文档的新版本。相反,如果Bob的唯一的编辑是将Eve添加为作者,并且Bob通过尊重Fred将Eve从作者中删除(例如,Fred可以具有监督权力)而解决了该冲突,则没有任何内容需要合并并且将不会创建新的版本。

图5A到图5D共同地示出了根据智能冲突检测系统的一个实施例的针对不会引起冲突的先前的场景的替代的版本的流程图。到将Fred的编辑合并至版本2为止,流程是相同的,Fred的编辑移除作为作者的Eve以生成版本3。随后,Fred决定应当将Eve列为作者(例如,Eve可以针对她作为作者的情况而向Fred进行辩护并获胜)。作为结果,Fred再一次访问310该文档。这次,Fred的副本312f的基线版本314是版本3,该版本没有将Eve包括为作者。转到图5C,Fred将Eve添加为作者,并且将他的编辑316表达为由动词“添加”和槽值“Eve”组成的意图318,以描述向所述集合添加成员(Eve)。再一次,Fred在Bob之前提交320对他的副本的编辑,并且由于Fred的副本的基线版本与存储中的该文档的当前版本相同(即,不存在中间版本),因此没有冲突发生。将该文档更新至版本4,并且将Eve包括为作者集合中的成员。

与此同时,Bob 308b一直对文档的他的副本312b和他的编辑316进行编辑,其中,他的编辑包括将Eve添加至作者字段的意图318。现在转到图5D,当Bob提交对他的副本320的编辑时,Chris的版本(版本2)和Fred的两个版本(版本3和4)都是相对于Bob的基线版本(版本1)的该文档的中间版本。在Bob的编辑和Chris的编辑之间不存在冲突340。Bob的编辑潜在地与Fred的将Eve从作者中移除的第一编辑发生冲突344;然而,Fred的将Eve恢复成作者的第二编辑是最新的编辑,并且优先于较早的冲突编辑。来自版本4的编辑有效地解决350了与来自版本3的编辑的潜在的冲突。尽管在所示出的流程中,Fred进行了两次编辑,但不是必须由进行了潜在的冲突的编辑的同一用户来进行该解决编辑。从而,接受了Bob的编辑而没有冲突解决提示。

图6A和图6B共同地示出了根据智能冲突检测系统的一个实施例的针对涉及引起冲突的对计数值字段的编辑的多用户文档编辑场景的流程图。一般流跟踪图3A和图3B的流程。主要差别在于对计数值字段606的编辑316的对待,其中该计数值字段606被示出为具有为六的开始值。在该场景中,计数值字段跟踪总项目销售。Bob 308b是将对他的副本312b的编辑提交320至项目销售总数的第一人,该编辑被表达为以2(即,槽值)对计数值进行递增(即,动词)的意图。应当注意的是,在一些实施例中,Bob可以已经输入了值八,并且通过确定源值与由Bob所输入的值之间的差而将该改变转换成意图318。在其他实施例中,可以给Bob呈现输入对该值的改变的机会,并且将计算总项目销售并且结果用于填充总项目销售字段。由于Bob的副本的基线版本与存储中的该文档的当前版本(版本1)相同,因此没有冲突发生。通过按2来递增总项目销售字段以将总项目销售字段的值变成八来对Bob的编辑进行合并,并且所述合并产生该文档304的版本2。

随后,Chris 308c提交对项目销售总数的编辑316,该编辑316被表达为以按一来递增计数值的意图318。文档304的版本2充当相对于Chris的副本的基线版本的中间版本。所示出的流程示出:由于中间版本的存在而执行的修订历史分析334,其确定不存在冲突(340)。从而,通过按一来递增总项目销售字段以将总销售量字段606的值变成九,来对Chris的编辑进行合并326。对Chris的编辑进行合并引起该文档304的版本3的创建。

该智能冲突检测系统的实施例的操作可以不同而仍然产生没有冲突的期望的结果。例如,当处理某些数据类型(例如,计数值数据类型)时,该智能冲突检测系统的实施例可以采用不需要完整的修订历史分析的一些规则。

与限于值设置的编辑相比,该场景还示出了使用意图的语义表达如何允许智能冲突检测系统接受具有相反的效果的编辑(例如,一个对值进行递增,另一个对值进行递减),而不触发冲突。例如,在图6A和图6B的流程中,对计数值进行递增(例如,指示已售的项目)的意图之前或者之后的对计数值进行递减(例如,指示返回的项目)的意图将不会产生冲突。相比之下,对于被表达为最终值的同时的编辑进行比较的传统的冲突检测系统需要冲突解决方案。Bob的编辑将在项目销售总数中设置值八,而Chris的编辑将针对项目销售总数设置最终值七。由于针对项目销售总数的值是不同的,因此常规冲突检测系统不能解决Chris的编辑与Bob的编辑,并且将提示Chris进行解决。

该申请的主题可以以多种系统、设备、和其他制品来实现或者被实践为方法。实施例可以被实现为硬件、软件、计算机可读介质或者其组合。在本文中所描述的实施例和功能可以经由多种计算系统来操作,所述计算系统包括但不限于:台式计算机系统、有线和无线计算系统、移动计算系统(例如,移动电话、上网本、平板或板式计算机、笔记本计算机、以及膝上型计算机)、手持式设备、多处理器系统、基于微处理器的或可编程的消费型电子产品、小型计算机、以及大型计算机。

各种类型的用户界面和信息可以经由板载计算设备显示器或者经由与一个或多个计算设备相关联的远程显示单元来显示。例如,各种类型的用户界面和信息可以在各种类型的用户界面和信息所透射到的墙面上显示并且与这样的墙面进行交互被投射在其上。与本发明实施例可以利用其实践的多种计算系统的交互包括:键击输入、触摸屏输入、语音或其他音频输入、在相关联的计算设备装备有用于捕捉和解译用户手势的检测(例如,相机)功能以用于控制计算设备的功能等的情况下的手势输入。

图7和图8以及相关联的描述提供了对其中可以实践本发明的实施例的多种操作环境的讨论。然而,所图示和讨论的设备和系统是出于示例和说明的目的,而不限于可以用于实践在本文中所述的本发明的实施例的大量计算设备配置。

图7是示出了利用其可以实践本发明的实施例的计算设备700的物理组件(即,硬件)的框图。在下文中所描述的计算设备组件可以适用于实施计算设备,其包括但不限于:个人计算机、平板计算机、平面计算机和智能电话、或者在文本中所讨论的任何其他计算设备。在基本配置中,计算设备700可以包括系统存储器704以及至少一个处理单元702。取决于计算设备的配置和类型,系统存储器704可以包括但不限于:易失性存储(例如,随机存取存储器)、非易失性存储(例如,只读存储器)、闪速存储器、或者这样的存储器的任何组合。系统存储器704可以包括操作系统705和适用于运行软件应用720的一个或多个程序模块706,例如智能冲突检测系统100的组件。例如,操作系统705可以适用于控制计算设备700的操作。此外,本发明的实施例可结合图形库、其他操作系统或任何其他应用程序来实践,并且不局限于任何特定的应用或系统。由虚线708内的那些组件示出了该基本配置。计算设备700可以具有额外的特征或功能。例如,计算设备700还可以包括诸如例如磁盘、光盘或磁带之类的额外的数据存储设备(可移动的和/或不可移动的)。由可移动存储设备709和不可移动存储设备710示出了这样额外的存储。

如上所述,可以将多个程序模块和数据文件存储在系统存储器704中。当在处理单元702上执行时,软件应用720可以执行包括但不限于智能冲突检测方法200的一个或多个阶段的过程。可以根据本发明的实施例而使用的其他程序模块可以包括以下应用,例如电子邮件及联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、画图或计算机辅助应用程序等。

此外,可以在包括分立电子元件的电路、包含逻辑门的封装或集成的电子芯片、利用微处理器的电路、或者在包含电子元件或微处理器的单个芯片上实现本发明的实施例。例如,可以经由其中所示出的每个或许多组件可以集成在单个集成电路上的片上系统(SOC)来实践本发明的实施例。这样的SOC设备可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元、以及各种应用功能,其全部作为单个集成电路而被集成(或“烧”)到芯片基底上。当经由SOC进行操作时,可以经由在单个集成电路(芯片)上与计算设备700的其他组件集成的专用逻辑来对在本文中所描述的关于应用720的功能进行操作。还可以使用能够执行逻辑操作(例如AND、OR和NOT)的其他技术来实践本发明的实施例,所述其他技术包括但不限于机械、光学、流体、和量子技术。另外,可以在通用计算机内或在任何其他任何电路或系统中实践本发明的实施例。

计算设备700还可以具有一个或多个输入设备712,例如键盘、鼠标、笔、语音输入设备、触摸输入设备等。还可以包括输出设备714,例如显示器、扬声器、打印机等。前述设备是示例并且也可以使用其他设备。计算设备700可以包括允许与其他计算设备718进行通信的一个或多个通信连接716。合适的通信连接716的示例包括但不限于:RF发射机、接收机和/或收发机电路;通用串行总线(USB)、并行和/或串行端口。

如在本文中所使用的术语计算机可读介质可以包括计算机存储介质。计算机存储介质可以包括以任何用于存储信息(例如,计算机可读指示、数据结构、或程序模块)的方法或技术来实现的易失性的和非易失性的、可移动的和不可移动的介质。系统存储器704、可移动存储设备709、和不可移动存储设备710都是计算机存储介质的示例(即,存储器存储)。计算机存储介质可以包括RAM、ROM、电可擦只读存储器(EEPROM)、闪速存储器或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储、盒式磁带、磁带、磁盘存储器或其他磁存储设备、或者可用于存储信息且可以由计算机设备700访问的任何其他制品。任何这样的计算机存储介质都可以是计算设备700的一部分。

图8A和8B图示了利用其可以实践本发明的实施例的移动计算设备800。合适的移动计算设备的示例包括但不限于:移动电话、智能电话、平板计算机、平面计算机、以及膝上型计算机。在基本配置中,移动计算设备800是具有输入元件和输出元件两者的手持式计算机。移动计算设备800通常包括显示器805以及允许用户将信息输入到移动计算设备800中的一个或多个输入按钮810。移动计算设备800的显示器805也可以充当输入设备(例如,触摸屏显示器)。如果被包括在内,则可选的侧输入元件815允许进一步的用户输入。侧输入元815可以是旋转开关、按钮、或任何其他类型的手动输入元件。在可替代的实施例中,移动计算设备800可包含更多或更少的输入元件。例如,在一些实施例中,显示器805可以不是触摸屏。在另一个可替代的实施例中,移动计算设备800是诸如蜂窝电话之类的便携式电话系统。移动计算设备800还可以包括可选的小键盘835。可选的小键盘835可以是物理小键盘或者是在触摸屏显示器上生成的“软”小键盘。在各种实施例中,输出元件包括用于示出图形用户界面(GUI)的显示器805、视觉指示器820(例如,发光二极管)、和/或音频换能器825(例如,扬声器)。在一些实施例中,移动计算设备800包含用来向用户提供触觉反馈的振动换能器。在另一个实施例中,移动计算设备800包含用于向外部设备发送信号或者从外部设备接收信号的输入和/或输出端口,例如音频输入端(例如,麦克风插孔)、音频输出端(如耳机插孔)、以及视频输出端(例如,HDMI端口)。

图8B是示出了移动计算设备的一个实施例的架构的框图。即,移动计算设备800可以包含用于实现一些实施例的系统(即,架构)802。在一个实施例中,系统802被实现为能够运行一个或多个应用(例如浏览器、电子邮件、日历、联系人管理器、消息传送客户端、游戏、以及媒体客户端/播放器)的“智能电话”。在一些实施例中,将系统802集成为诸如集成的个人数字助理(PDA)和无线电话之类的计算设备。

一个或多个应用程序865可被加载到存储器862中,并且在操作系统864上运行或者结合操作系统864运行。应用程序的示例包括电话拨号程序、电子邮件程序、个人信息管理(PIM)程序、文字处理程序、电子表格程序、互联网浏览器程序、消息传送程序等。系统802还包括存储器862内的非易失性存储区868。非易失性存储区868可以用于存储如果系统802断电而不应该丢失的持续的信息。应用程序865可以使用非易失性存储区868中的信息并将信息存储在非易失性存储区868中,所述信息例如由电子邮件应用等所使用的电子邮件或其他消息。同步应用(未示出)也驻留在系统802上并且被编程为与驻留在主机计算机上的对应的同步应用进行交互,以保持存储在非易失性存储区域868中的信息与存储在主机计算机处的对应的信息相同步。应当理解的是,包括在本文中所描述的软件应用720在内的其他应用也可被加载到存储器862中并且在移动计算设备800上运行。

系统802具有可以被实现为一个或多个电池的电源870。电源870还可以包括外置电源,例如交流的(AC)适配器或给电池供电或充电的加电对接托架。

系统802还可以包括执行发送和接收射频通信的功能的无线电设备872。无线电设备872经由通信载波或服务供应商来促成系统802与外部世界之间的无线连通性。来往无线电设备872的传输是在操作系统864的控制下进行的。换句话说,可以将由无线电设备872所接收的通信经由操作系统864散播至应用程序865,反之亦然。

视觉指示符820可以用于提供视觉通知和/或音频接口874可以用于经由音频换能器825产生能够听到的通知。在所示出的实施例中,视觉指示符820是发光二极管(LED),而音频换能器825是扬声器。这些设备可直接地耦合至电源870,使得当被激活时,即使处理器860和其他组件可以关闭以节省电池电量,这些设备也能保持通电并持续由通知机制所指示的一段时间。LED可被编程为无限期地保持通电,直到用户采取动作来指示该设备的通电状态为止。音频接口874用于向用户提供能够听到的信号并且从用户处接收能够听到的信号。例如,除了耦合至音频换能器825之外,音频接口874还可耦合至麦克风以接收能够听到的输入,例如,促进电话会话。根据本发明的实施例,麦克风还可以充当音频传感器以促进对通知的控制,如在下文中描述的。系统802还可以包括支持用于记录静止的图像、视频流等的板载相机830的操作的视频接口876。

实现系统802的移动计算设备800可以具有额外的特征或功能。例如,移动计算设备800还可以包括额外的数据存储设备(可移动的和/或不可移动的),例如磁盘、光盘、或磁带。由非易失性存储区868示出了这样额外的存储设备。

如在上文中所描述的,可以将由移动计算设备800所生成或捕获的数据/信息以及经由系统802所存储的数据/信息本地地存储在移动计算设备800上,或者可以将数据存储在可以经由无线电设备872或经由移动计算设备800和与移动计算设备800相关联的单独的计算设备(例如,分布式计算网络(例如,互联网)中的服务器计算机)之间的有线连接由设备来访问的任何数量的存储介质上。应当理解的是,可以经由移动计算设备800、经由无线电872、或经由分布式计算网络来访问这样的数据/信息。类似地,根据公知的数据/信息传输和存储方式(包括电子邮件和协同数据/信息共享系统),这样的数据/信息可以容易地在计算设备之间传输以供存储和使用。

在该公开中所提供的一个或多个实施例的描述或图示旨在向本领域技术人员提供对主题的完整范围的完全彻底和完整的公开,而不旨在以任何方式限制或约束所要求保护的发明的范围。在该公开中所提供的实施例、示例、和细节被认为足以传达所有物,并且使得本领域技术人员能够制造并使用所要求保护的发明的最佳模式。被认为是对本领域技术人员公知的对结构、资源、操作、和行为的描述可以是简要的或者被省略,以避免使得该申请的主题的较少人知道的或者独特的方面难以理解。所要求保护的发明不应该被解释为限于在该申请中所提供的任何实施例、示例、或细节。无论是共同地还是单独地示出或描述,(结构上和方法上两者的)各种特征旨在选择性地包括或省略,以产生具有特定组的特征的实施例。此外,可以以任何顺序或者同时地执行所示出或描述的功能和行为中的任何一个或全部。在已经提供有本申请的描述和图示之后,本领域技术人员可以预想落入在该申请中所实施的一般的发明概念的更宽泛的方面的精神内的变型、修改和替代实施例,而不脱离所要求保护的发明的更宽泛的范围。

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