首页 / 专利库 / 专利权 / 专利合作条约 / 第I章 / 国际申请 / 修改 / 用于使得能够对修改数据进行智能合并的方法、装置和计算机程序产品

用于使得能够对修改数据进行智能合并的方法、装置和计算机程序产品

阅读:280发布:2020-12-04

专利汇可以提供用于使得能够对修改数据进行智能合并的方法、装置和计算机程序产品专利检索,专利查询,专利分析的服务。并且一种用于智能合并冲突数据的装置,包括处理器以及存储可执行计算机代码的 存储器 ,该可执行计算机代码使得该装置能够至少执行包括检测针对数据项目的属性的(多个)改变的操作。该 计算机程序 代码可以进一步使得该装置响应于检测到属性有所改变而确定数据项目的版本以及属性的版本或者并未改变的属性的版本。该计算机程序代码可以进一步使得该装置更新数据项目以指示该数据项目的版本、有所改变的属性的版本以及并未改变的属性的版本。该计算机程序代码可以进一步使得该装置存储更新的数据项目而并不存储该数据的先前版本。该更新的数据项目在解决与其它数据的冲突时被加以利用。还提供了相对应的方法和计算机程序产品。,下面是用于使得能够对修改数据进行智能合并的方法、装置和计算机程序产品专利的具体信息内容。

1.一种方法,包括:
检测针对存储在通信设备上的数据项目的至少一个属性的至少一种改变;
经由处理器响应于检测到属性有所改变而确定该数据项目的版本以及该至少一个属性的版本或者该数据项目中并未改变的一个或多个属性的一个或多个版本;
更新该数据项目以包括指示该数据项目的版本、该至少一个属性的版本以及并未改变的属性的版本的标记;并且
使得能够将更新的数据项目存储在该通信设备上而并不存储该数据项目的一个或多个先前版本,该更新的数据项目被配置为在解决对应于该数据项目的另一个数据项目中的冲突数据时被加以利用。
2.根据权利要求1所述的方法,进一步包括:
将更新的数据项目复制到存储与该数据项目相对应的另一个数据项目的另一个通信设备。
3.根据权利要求2所述的方法,进一步包括:
响应于在将该更新的数据项目复制到另一个通信设备的期间从该另一个通信设备接收到该另一个数据项目而检测到该另一个数据项目和该更新的数据项目同时被修改,该另一个数据项目包括与该更新的数据项目的属性相对应的属性。
4.根据权利要求3所述的方法,进一步包括:
部分基于检测到该另一个数据项目的一个或多个属性是否被更新并且包括比该至少一个属性的版本以及该更新的数据项目中的一个或多个属性的相对应版本更为近期的相应版本而确定该另一个数据项目和更新的数据项目是否冲突。
5.根据权利要求4所述的方法,进一步包括:
在该更新的数据项目中包括至少一个更新的属性和被检测为比该更新的数据项目的相对应属性更为近期的相应版本以便获得包括更新属性的最近版本的经合并数据项目。
6.根据权利要求1所述的方法,其中该属性包括一个或多个层级属性并且该方法进一步包括:
在其中至少一个属性有所改变的情况下将被指定为数据项目被修改之前的该数据项目的版本的版本分配为每个属性的版本。
7.根据权利要求6所述的方法,进一步包括:
增加数据项目在该数据项目被修改之前的版本的数值;并且
将经增加的数值分配为至少一个经改变的属性的版本的一部分。
8.根据权利要求6所述的方法,进一步包括:
确定一个或多个所检测到的孩子属性的最大版本;并且
将该数据项目的版本分配为该孩子属性的最大版本。
9.根据权利要求1所述的方法,进一步包括:
检测该数据项目的另一个属性并且确定该另一个属性最初 包括版本;并且向该另一个属性分配与最接近的祖先属性的版本相对应的版本。
10.一种装置,包括:
至少一个处理器;和
至少一个包括计算机程序代码的存储器,该计算机程序代码被配置为利用该处理器而使得该装置至少执行以下:
检测针对存储在通信设备上的数据项目的至少一个属性的至少一种改变;
响应于检测到属性有所改变而确定该数据项目的版本以及该至少一个属性的版本或者该数据项目中并未改变的一个或多个属性的一个或多个版本;
更新该数据项目以包括指示该数据项目的版本、该至少一个属性的版本以及并未改变的属性的版本的标记;并且
使得能够将更新的数据项目存储在该通信设备上而并不存储该数据项目的一个或多个先前版本,该更新的数据项目被配置为在解决对应于该数据项目的另一个数据项目中的冲突数据时被加以利用。
11.根据权利要求10所述的装置,其中该存储器和计算机程序代码进一步被配置为利用该处理器而使得该装置:
将更新的数据项目复制到存储与该数据项目相对应的另一个数据项目的另一个通信设备。
12.根据权利要求11所述的装置,其中该存储器和计算机程序代码进一步被配置为利用该处理器而使得该装置:
响应于在将该更新的数据项目复制到另一个通信设备的期间从该另一个通信设备接收到该另一个数据项目而检测到该另一个数据项目和该更新的数据项目同时被修改,该另一个数据项目包括与该更新的数据项目的属性相对应的属性。
13.根据权利要求12所述的装置,其中该存储器和计算机程序代码进一步被配置为利用该处理器而使得该装置:
部分基于检测到该另一个数据项目的一个或多个属性是否被更新并且包括比该至少一个属性的版本以及该更新的数据项目中的一个或多个属性的相对应版本更为近期的相应版本而确定该另一个数据项目和更新的数据项目是否冲突。
14.根据权利要求13所述的装置,其中该存储器和计算机程序代码进一步被配置为利用该处理器而使得该装置:
在该更新的数据项目中包括至少一个更新的属性和被检测为比该更新的数据项目的相对应属性更为近期的相应版本以便获得包括更新属性的最近版本的经合并数据项目。
15.根据权利要求10所述的装置,其中该属性包括一个或多个层级属性并且其中该存储器和计算机程序代码进一步被配置为利用该处理器而使得该装置:
在其中至少一个属性有所改变的情况下将被指定为数据项目被修改之前的该数据项目的版本的版本分配为每个属性的版本。
16.根据权利要求15所述的装置,其中该存储器和计算机程序代码进一步被配置为利用该处理器而使得该装置:
增加数据项目在该数据项目被修改之前的版本的数值;并且
将经增加的数值分配为至少一个经改变的属性的版本的一部分。
17.根据权利要求15所述的装置,其中该存储器和计算机程序代码进一步被配置为利用该处理器而使得该装置:
确定一个或多个所检测到的孩子属性的最大版本;并且
将该数据项目的版本分配为该孩子属性的最大版本。
18.根据权利要求15所述的装置,其中该存储器和计算机程序代码进一步被配置为利用该处理器而使得该装置:
检测该数据项目的另一个属性并且确定该另一个属性最初 包括版本;并且向该另一个属性分配与最接近的祖先属性的版本相对应的版本。
19.一种计算机程序产品,包括至少一个具有存储于其中的计算机可执行程序代码指令的计算机可读存储介质,该计算机可执行程序代码指令包括:
被配置为检测针对存储在通信设备上的数据项目的至少一个属性的至少一种改变的程序代码指令;
被配置为响应于检测到属性有所改变而确定该数据项目的版本以及该至少一个属性的版本或者该数据项目中并未改变的一个或多个属性的一个或多个版本的程序代码指令;
被配置为更新该数据项目以包括指示该数据项目的版本、该至少一个属性的版本以及并未改变的属性的版本的标记的程序代码指令;和
被配置为使得能够将更新的数据项目存储在该通信设备上而并不存储该数据项目的一个或多个先前版本的程序代码指令,该更新的数据项目被配置为在解决对应于该数据项目的另一个数据项目中的冲突数据时被加以利用。
20.根据权利要求19所述的计算机程序产品,进一步包括:
被配置为将更新的数据项目复制到存储与该数据项目相对应的另一个数据项目的另一个通信设备的程序代码指令。

说明书全文

用于使得能够对修改数据进行智能合并的方法、装置和计算

机程序产品

技术领域

[0001] 本发明的示例实施例总体上涉及到无线通信技术,尤其涉及到用于对修改数据执行智能合并而并不必保存整个实际的历史数据的方法、装置和计算机程序产品。

背景技术

[0002] 现代通信时代已经带来了有线和无线网络的迅猛发展。计算机网络、电视网络和电话网络在消费者需求的激励下正在经历着前所未有的技术发展。无线和移动网络技术已经解决了相关的消费者需求,同时为信息传输提供了更大的灵活性和快捷性。
[0003] 当前和未来的网络技术继续促进着信息传输的便利和用户的便捷。由于电子通信设备目前普遍存在的属性,所有年龄和教育平的人都在利用电子设备与其它个人或联系人进行通信,接收服务和/或共享信息、媒体以及其它内容。需要增加信息传输便利性的一个领域涉及到通信设备上的数据同步。
[0004] 目前,许多设备经常并未以任何适当的方式进行整合。相反,设备上的数据对于该特定通信设备而言可能是本地的,并且如果具体设备上的用户需要位于另一个设备上的数据,该用户通常必须费地将数据复制到该具体设备上。在其中数据为可编辑的情况下,可能会同时出现数据管理的问题。
[0005] 针对该问题的一种解决方案是数据不仅留存在任何特定设备上,而且还留存在其中每个设备都能够对该数据进行访问端。通过将数据置于云端,这使得所有数据都能够被所有设备所使用并且还可以解决以上所提到的数据管理问题。这种方法所具有的问题或缺陷在于,除非设备具有连续不中断的连接—这在实践中是难以实现的,特别是在移动设备的情况下—否则可能出现该设备表现为无法使用的时刻。
[0006] 另一种解决方案是使用复制将所有数据存储在所有设备上并且保持童心设备同步。例如,在简单的主控方复制中,存在有所有其它节点都与之进行复制的单个节点。然而,单主控方复制受到与基于云端的解决方案的相同弱点的影响。例如,如果主控方节点无法访问,则每个设备都变得孤立。然而,由于大多数数据都能够在每个设备上获取,所以它们仍然可以被使用。在多主控方复制中,任意节点可以与任意其它节点进行复制,这对于连接减少的问题更具弹性。
[0007] 对于消费者而言,最佳的解决方案可能是看上去就像该消费者的所有设备都始终包含该消费者的所有数据。该解决方案可以通过将所有数据保持在所有设备上并且定期将设备互相同步而创建并维护。
[0008] 多主控方复制所存在的问题在于,由于数据不仅在多个地方留存而且还进行修改,所以偶尔可能会出现冲突,因为数据可能同时在两个不同地方被修改。当数据被复制时,该冲突应当被检测并以适当方式予以处理。
[0009] 针对该问题的一种方法是使用一些允许检测冲突的机制,并且一旦检测到冲突,就例如决定性地确定冲突文档中的“胜方(winner)”,并且选择该胜方文档且删除败方(loser)文档。就此而言,例如,如果两个不同设备遇到完全相同的冲突文档,它们都将会决定性地选择相同的胜方。该方法的好处在于其简单而且还使得存储需求最小化。
[0010] 然而,该方法所存在的问题在于,不同于简单地挑选胜方,如果需要将来自两个冲突文档的数据进行合并,其通常难以实现,因为在一般情况下并不知道每个文档版本的哪些确切属性已经发生了变化。例如,考虑以下的示例文档。
[0011]
[0012]
[0013] 进一步考虑该文档处于一个设备上并且被改变为以下文档。
[0014]
[0015] 此外,考虑该文档在另一个设备上被改变为以下文档。
[0016]
[0017] 就此而言,在复制的时候可能出现冲突。这样,在其中应当解决冲突的情况下,一般并不知道哪些属性已经在哪里发生了改变,并且因此设备例如可能无法自动选择来自一个文档的“John”作为firstName而来自其它文档的“Doe”作为lastName,而这无疑才会反映用户的意图。
[0018] 目前,为了能够以智能的方式对文档进行合并,通常需要保存直至最近的共同祖先的历史。以这种方式,可能找出哪些在哪里已经发生了变化并且自动合并文档。再次考虑以上的示例。如果有权访问原始文档,则可以推断出firstName在一个设备上有所改变而lastName在另一个设备上有所改变,并且因此以有意义的方式将它们进行合并并且最终如下结束。
[0019]
[0020] 然而,存在着与保存历史(例如,整个历史)相关的很多问题。例如,保留历史在存储方面是非常昂贵的,因为通常需要对参与复制网络的所有设备配对的最为共同的祖先加以保存。
[0021] 除此之外,目前,决定何时可以删除历史或者其中的一部分通常是非常重要的。除非采取明确的措施,否则一个复制节点的永久消亡意味着历史可能永远被删除。
[0022] 考虑到上述曲线,提供一种有效且可靠的合并修改数据而不必保存所有相对应的历史数据的机制。

发明内容

[0023] 因此,提供了用于使得能够执行修改/冲突数据的智能合并而不必保存整个实际的历史数据的方法、装置和计算机程序产品。就此而言,示例实施例可以提供一种使得能够以保存来自(多个)数据项目(例如,文档)的两个版本的最近改变的方式自动合并该(多个)数据项目的架构,上述数据项目已经同时在不同通信设备上被修改。
[0024] 作为先决条件,数据项目(例如,文档)可以以允许检测到数据中的冲突的方式而被设置以版本。在其中(多个)数据项目(例如,文档)的属性发生改变的情况下,示例实施例可以在其中特定属性被修改的情况下在该(多个)数据项目(例如,文档)自身中存储指示该(多个)数据项目的版本的信息。如以下更为全面描述的,在其中特定属性被修改的情况下指示该(多个)数据项目的版本使得能够执行冲突信息的智能合并,而不必保存与该数据项目相关联的实际的整个历史信息并且不要求用户交互来解决该冲突信息。
[0025] 在一个示例实施例中,提供了一种使得能够进行冲突数据的智能合并的方法。该方法可以包括检测针对存储在通信设备上的数据项目的至少一个属性的至少一种改变。该方法可以进一步包括响应于检测到属性有所改变而确定该数据项目的版本以及该至少一个属性的版本或者该数据项目中并未改变的一个或多个属性的一个或多个版本。该方法可以进一步包括更新该数据项目以包括指示该数据项目的版本、该至少一个属性的版本以及并未改变的属性的版本的标记。该方法可以进一步包括使得能够将更新的数据项目存储在该通信设备上而并不存储该数据项目的一个或多个先前版本。该更新的数据项目被配置为在解决对应于该数据项目的另一个数据项目中的冲突数据时被加以利用。
[0026] 在另一个示例实施例中,提供了一种用于使得能够对冲突数据进行智能合并的装置。该装置可以包括处理器和包括计算机程序代码的存储器。该存储器和该计算机程序代码被配置为利用该处理器而使得该装置至少执行包括检测针对存储在通信设备上的数据项目的至少一个属性的至少一种改变的操作。该存储器和该计算机程序代码进一步被配置为利用该处理器而使得该装置响应于检测到属性有所改变而确定该数据项目的版本以及该至少一个属性的版本或者该数据项目中并未改变的一个或多个属性的一个或多个版本。该存储器和该计算机程序代码进一步被配置为利用该处理器而使得该装置更新该数据项目以包括指示该数据项目的版本、该至少一个属性的版本以及并未改变的属性的版本的标记。该存储器和该计算机程序代码进一步被配置为利用该处理器而使得该装置使得能够将更新的数据项目存储在该通信设备上而并不存储该数据项目的一个或多个先前版本。该更新的数据项目被配置为在解决对应于该数据项目的另一个数据项目中的冲突数据时被加以利用。
[0027] 在另一个示例实施例中,提供了一种用于使得能够对冲突数据进行智能合并的计算机程序产品。该计算机程序产品包括至少一个具有存储于其中的计算机可执行程序代码指令的计算机可读存储介质。该计算机可执行程序代码指令包括被配置为检测针对存储在通信设备上的数据项目的至少一个属性的至少一种改变的程序代码指令。该程序代码指令还被配置为响应于检测到属性有所改变而确定该数据项目的版本以及该至少一个属性的版本或者该数据项目中并未改变的一个或多个属性的一个或多个版本。该程序代码指令还被配置为更新该数据项目以包括指示该数据项目的版本、该至少一个属性的版本以及并未改变的属性的版本的标记。该程序代码指令还被配置为使得能够将更新的数据项目存储在该通信设备上而并不存储该数据项目的一个或多个先前版本。该更新的数据项目被配置为在解决对应于该数据项目的另一个数据项目中的冲突数据时被加以利用。附图说明
[0028] 因此已经在总体上对本发明进行了描述,现在将对附图加以参考,其并非依比例进行绘制,并且其中:
[0029] 图1是根据本发明的示例实施例的系统的示意性框图
[0030] 图2是根据本发明的示例实施例的装置的示意性框图;
[0031] 图3是根据本发明的示例实施例的系统的框图;和
[0032] 图4图示了根据本发明的示例实施例的使得能够执行冲突数据的智能合并的流程图

具体实施方式

[0033] 现在将参考附图对本发明的一些实施例进行更为全面地描述,附图中示出了本发明的一些而非全部实施例。实际上,本发明的各个实施例可以以许多不同方式来实现,而并不应当被理解为局限于这里所给出的实施例。相同的附图标记通篇指代相同要素。如这里所使用的,术语“数据”、“内容”、“信息”以及类似术语可以互换使用以指代能够依据本发明的实施例而被传送、接收和/或存储的数据。此外,如这里所使用的,术语“示例性”并非被提供以传递任何量化声明,而仅是用来传递示例的说明。因此,使用这样的术语并不应当被理解为对本发明实施例的精神和范围进行限制。
[0034] 此外,如这里所使用的,术语“电路”是指:(a)仅硬件实现(例如模拟和/或数字电路的实施方式);(b)电路和(多个)计算机程序产品的组合,上述计算机程序产品包括存储在一个或多个计算机可读存储器上一起工作以使得装置执行这里所描述的一个胡多个功能的软件和/或固件;以及(c)例如(多个)微处理器或(多个)微处理器的一部分的电路,其即使在软件或固件并不物理存在的情况下也需要软件或固件以便进行操作。“电路”的这个定义应用于这里使用该术语的所有情况,包括任意权利要求。作为另外的示例,如这里所使用的,术语“电路”还将包括仅一个或多个处理器和/或其(多个)部分以及所附软件和/或固件的实施方式。作为另一个示例,如这里所使用的术语“电路”例如还包括用于移动电话的基带集成电路或应用处理器集成电路,或者服务器、蜂窝网络设备、其它网络设备和/或其它计算设备中的类似集成电路。
[0035] 如这里所定义的,指代物理存储介质(例如,易失性或非易失性存储设备)的“计算机可读存储介质”可以与指代电磁信号的“计算机可读传输介质”有所不同。
[0036] 如这里所使用的,术语“复制”可以是指将相同数据存储在多个设备的概念(“所复制数据”)以及在两个或多个设备之间同步数据的动作(“复制数据”)。如这里所引用的,“复制”可以被用来使得每个设备上的数据保持为最新(例如,尽量是可行且合理的)并且术语“复制”和“同步”可以互换使用。此外,如这里所应用的,术语“复制”可以表示以使得每个设备上的存储器(例如,数据库)相同为目标而在设备之间共享信息的处理。“复制”也可以是异步的,这意味着不同系统和/或设备上的修改可以完全独立地进行处理并且可能的冲突可以在后续得到解决。
[0037] 图1图示了示例通信环境中的总体系统示图,其中诸如移动终端10之类的设备。如图1所示,依据本发明的示例实施例的系统的实施例可以包括能够经由网络30互相通信的第一通信设备(例如,移动终端10)和第二通信设备(20)。在一些情况下,本发明的实施例可以进一步包括一个或多个附加的通信设备,它们中的一个在图1中被描述为第三通信设备25。在一个实施例中,并非采用本发明实施例的所有系统都可以包括这里所图示和/或描述的所有设备。虽然移动终端10和/或第二和第三通信设备20和25的实施例可以出于示例的目的而被图示并且在随后进行描述,但是诸如便携式数字助理(PDA)、寻呼机、移动电视、移动电话、游戏设备、膝上计算机、相机、视频录影机、音/视频播放器、无线电、全球定位系统(GPS)设备、蓝牙机、通用串行总线(USB)设备的其它类型的终端或者以上所提到的任意组合以及其它类型的语音和文本通信系统能够轻易地采用本发明的实施例,此外,诸如服务器和个人计算机之类的并非移动的设备也可以轻易地采用本发明的实施例。
[0038] 网络30可以包括可以经由相对应的有线和/或无线接口互相通信的各种不同节点(第二和第三通信设备20和25可以作为其示例)、设备或功能的集合。这样,图1的图示应当被理解为系统的某些部件的宽泛视图的示例而并不是系统或网络30的无所不包的或详细的视图。虽然并非必然,但是在一个实施例中,网络30能够支持依据多种第一代(1G)、第二代(2G)、2.5G、第三代(3G)、3.5G、3.9G、第四代(4G)移动通信协议、长期演进(LTE)或演进通用陆地无线电接入网络(E-UTRAN)、自优化/组织网络(SON)、LTE内、无线电接入技术(RAT)间网络等之中的任意一种或多种的通信。在一个实施例中,网络30可以是点对点(P2P)网络。
[0039] 诸如移动终端10以及第二和第三通信设备20和25之类的一个或多个通信终端可以经由网络30互相通信并且均可以包括用于往来于一个或多个基点传送信号以及接收信号的一个或多个天线。该基点例如可以是作为一个或多个蜂窝或移动网络的一部分的一个或多个基站(BS)或者可以耦合至数据网络的一个或多个接入点(AP),上述数据网络诸如局域网(LAN)、无线局域网(WLAN)、城域网(MAN)和/或诸如互联网的广域网(WAN)。进而,诸如处理部件的其它设备(例如,个人计算机、服务器计算机等)可以经由网络30耦合至移动终端10以及第二和第三通信设备20和25。通过直接或间接地将移动终端10以及第二和第三通信设备20和25(和/或其它设备)连接至网络30,可以使得移动终端10以及第二和第三通信设备20和25能够与其它设备或互相进行通信。例如,移动终端10以及第二和第三通信设备20和25以及其它设备可以根据包括超文本传输协议(HTTP)等的多种通信协议进行通信,由此分别执行移动终端10以及第二和第三通信设备20和25的各种通信或其它功能。
[0040] 此外,虽然图1中并未示出,但是移动终端10以及第二和第三通信设备20和25例如可以依据射频(RF)、近场通信(NFC)、蓝牙(BT)。红外(IR)或者任意多种不同的有线或无线通信技术进行通信,上述通信技术包括局域网(LAN)、无线LAN(WLAN)、国际微波接入互操作性(WiMAX)、无线保真度(WiFi)、超宽带(UWB)、Wibree技术等。这样,使得移动终端10以及第二和第三通信设备20和25能够通过任意多种不同访问机制与网络30以及互相进行通信。例如,可以支持诸如宽带码分多址(W-CDMA)、CDMA2000、全球移动通信系统(GSM)、通用分组无线业务(GPRS)等的移动访问机制以及诸如WLAN、WiMAX等的无线访问机制和诸如数字订户线路(DSL)、有线调制解调器、以太网等的固定访问机制。
[0041] 在示例实施例中,该第一通信设备(例如,移动终端10)可以是移动通信设备,例如,诸如无线电话或其它设备,诸如个人数字助理(PDA)、移动计算设备、相机、视频录影机、音/视频播放器、定位设备、游戏设备、电视设备、无线电设备或者其它类似设备或它们的组合。第二通信设备20和第三通信设备25可以是移动或固定通信设备。然而,在一个示例中,第二通信设备20和第三通信设备25可以是服务器、远程计算机或者诸如个人计算机(PC)或膝上计算机的终端。
[0042] 在一个示例实施例中,网络30可以是被部署为智能空间的专设或分布式网络。因此,设备能够进入和/或离开网络30并且网络30的设备能够基于其它设备的进入和/或退出而调节操作从而考虑到相应设备或节点以及它们相对应的能力的增加或减少。
[0043] 在示例实施例中,移动终端10以及第二和第三通信设备20和25可以采用能够采用本发明实施例的装置(例如,图2的装置)。
[0044] 图2图示了用与执行冲突数据的智能合并的装置的示意性框图。现在将参考图2对本发明的示例实施例进行描述,其中显示了装置50的某些部件。图2的装置50例如可以在移动终端10(和/或第二通信设备20或第三通信设备25)上得以被采用。可替换地,装置50可以被体现于网络30的网络设备上。然而,装置50可替换地可以在移动和固定的各种其它设备(例如,诸如以上所列出的任意设备)得以体现。在一些情况下,实施例可以在设备的组合上被采用。因此,本发明的一个实施例可以完全在单个设备(例如,移动终端10)处体现,由多个设备以分布式方式来体现(例如,在P2P网络中的一个或多个设备上)或者由处于客户端/服务器关系的设备所体现。此外,应当注意的是,以下所描述的设备或部件可能并非强制性的并且因此一些在某些实施例中可能被省略。
[0045] 现在参考图2,装置50可以包括处理器70、用户接口67、通信接口74、存储器设备76,其可以包括数据库72、显示器85和冲突合并模78,或者以其它方式与它们进行通信。
在一个示例中,显示器85可以是触摸屏显示器。存储器设备76例如可以包括易失性和/或非易失性存储器。例如,存储器设备76可以是电子存储设备(例如,计算机可读存储介质),其包括被配置为存储可由机器(例如,如处理器70的计算设备)所获取的数据(例如,比特)的电路。在示例实施例中,存储器设备76可以是并非瞬态的有形存储器设备。存储器设备76可以被配置为存储信息、数据、文件、应用、指令等以便使得装置能够执行依据本发明示例实施例的各种功能。例如,存储器设备76能够被配置为缓冲输入数据以供处理器70进行处理。除此之外或可替换地,存储器设备76可以被配置为存储指令以便由处理器70执行。存储器76可以包括被配置为存储内容(例如,文档、冲突信息等)的数据库72。作为又另一种替换形式,存储器设备76可以是存储信息和/或媒体内容(例如,图片、视频等)的多个数据库之一。
[0046] 在一个实施例中,装置50可以是被配置为采用本发明的示例实施例的移动终端(例如,移动终端10)或固定通信设备或计算设备。然而,在一些实施例中,装置50可以被体现为芯片或芯片组。换句话说,装置101可以包括一个或多个物理封装(例如,芯片),其包括结构性配件(例如,基板)上的材料、组件和/或连线。该结构性配件可以为包括于其上的组件电路提供物理强度、尺寸保留和/或电气交互限制。因此,在一些情况下,装置50可以被配置为在单个芯片上实施本发明的实施例或者将其实施为单个“片上系统”。这样,在一些情况下,芯片或芯片组可以构成用于执行一个或多个操作以便提供这里所描述的功能的器件。除此之外或可替换地,芯片或芯片组可以构成用于使得能够关于这里所描述的功能和/或服务而进行用户界面导航的器件。
[0047] 处理器70可以以多种不同方式来实现。例如,处理器70可以被实现为各种处理器件中的一个或多个,诸如微处理器、控制器数字信号处理器(DSP)、具有或没有所附DSP的处理设备或者包括集成电路的其它处理设备,该集成电路例如ASIC(应用特定集成电路)、FPGA(现场可编程门阵列)、微控制器单元(MCU)、硬件加速器、专用计算机芯片、处理电路等。在示例实施例中,处理器70可以被配置为执行存储器设备76中或者能够以其它方式被处理器70所访问的指令。可替换地或除此之外,处理器70可以被配置为执行硬编码功能。这样,无论是由硬件还是软件方法或者其组合进行配置,处理器70都可以在被相应配置时表示能够执行根据实施例的操作的实体(例如,以电路物理实现)。因此,例如,当处理器70被实现为ASIC、FPGA等时,处理器70可以是用于进行这里所描述的操作的专门配置的硬件。可替换地,作为另一个示例,当处理器70被实现为软件指令的执行器时,该指令可以对处理器进行特殊配置以在该指令被执行时实施这里所描述的算法和/或操作。然而,在一些情况下,处理器70可以是适于通过用于执行这里所描述的算法和/或操作的指令而以处理器另外的配置来采用本发明示例性实施例的处理器或具体设备(例如,移动终端10或其它通信设备)。除其它之外,处理器70可以包括被配置为支持处理器70的操作的时钟、算术逻辑单元(ALU)和逻辑门
[0048] 在一个示例实施例中,处理器70可以被配置为操作连接程序,和/或协同处理器等可以执行浏览器、Web浏览器等。就此而言,例如,该连接程序可以使得装置50能够根据无线应用协议(WAP)而传送并接收Web内容,例如,诸如基于位置的内容或者任意其它适当内容。
[0049] 与此同时,通信接口74可以是诸如以硬件、软件或者硬件和软件的组合所实现的设备或电路的任意器件,其被配置为往来于网络和/或与装置50进行通信的其它设备或模块接收和/或传送数据。就此而言,通信接口74例如可以包括天线(或多个天线)以及用于使得能够与无线通信网络(例如,网络30)进行通信的支持硬件和/或软件。在固定环境中,可替换地或除此之外,通信接口74可以支持有线通信。这样,通信接口74例如可以包括通信调制解调器和/或用于支持经由线缆、数字用户线缆(DSL)、通用串行总线(USB)或其它机制的通信的其它硬件/软件。
[0050] 用户接口67可以与处理器70进行通信以在用户接口67处接收用户输入的指示和/或向用户提供听觉、视觉、机械或其它输出。这样,用户接口67例如可以包括键盘鼠标、操纵杆、显示器、触摸屏、麦克、扬声器或者其它输入/输出机制。在装置被实现为服务器或者一些其它网络设备的示例实施例中,用户接口67可以是受限的、位于远程或者被排除。处理器70可以包括被配置为对用户接口的例如扬声器、响铃、麦克风、显示器等的一个或多个部件的至少一些功能进行控制的用户接口电路。处理器70和/或包括处理器70的用户接口电路可以被配置为通过存储在处理器70可访问的存储器(例如,存储器设备76等)上的计算机程序指令(例如,软件和/或固件)来控制用户接口的一个或多个部件的一个或多个功能。
[0051] 在示例实施例中,处理器70可以被体现为、包括冲突合并模块,或者以其它方式对其进行控制。冲突合并模块78可以是诸如依据软件进行操作或者以其它方式以硬件或者硬件和软件的组合进行体现的设备或电路(例如,在软件控制下进行操作的处理器70,被体现为专门配置为执行这里所描述的操作的ASIC或FPGA的处理器70,或者它们的组合)由此对设备或电路进行配置以执行如以下所描述的冲突合并模块78的相对应功能。因此,在其中采用软件的示例中,执行该软件的设备或电路(例如,一个示例中的处理器)形成与这样的器件相关联的结构。
[0052] 冲突合并模块78可以检测一个或多个通信设备(例如,多个装置50)中的冲突数据,并且可以执行该冲突数据的智能合并从而对一个或多个通信设备上的冲突数据进行更新,而并不必保存一个或多个通信设备的整个实际上的历史数据。
[0053] 就此而言,例如,冲突合并模块78可以以允许冲突合并模块78检测到冲突的方式向数据(例如,文档、联系人等)分配以版本。例如,作为先决条件,冲突合并模块78可以向装置50的(多个)数据项目(例如,(多个)文档)的每一个分配以一个版本,其允许冲突模块78检测到相同数据项目(例如,文档)已经在一个或多个其它通信设备(例如,一个或多个其它装置50)上被修改。在一个示例实施例中,冲突合并模块78可以利用版本矢量来向(多个)数据项目分配版本,其使得冲突合并模块78能够检测到数据的两个或更多版本(例如,两个文档版本)何时相同、存在冲突或者在一定程度上可以被利用。然而,冲突合并模块78可以采用向多个)数据项目生成并分配(多个)版本的任意其它适当机制而并不背离本发明的精神和范围。(多个)版本可以由冲突合并模块78存储在字段中,例如使用适用于数据项目的元数据的字段(例如,meta.version字段)(其中“数据项目”例如可以是文档)。
[0054] 就此而言,版本矢量可以是用于追踪针对其中多个节点可以更新数据的通信系统中的数据的改变的机制。每次(多个)节点经历更新事件,冲突合并模块78都可以将该矢量中的计数器加1。在一个示例实施例中,该版本矢量中的第一数字可以表示特定节点上(例如,第一节点)的数据版本,并且该版本矢量中的第二数字可以表示另一个节点(例如,第二节点)上的数据版本。
[0055] 这样,在其中数据(例如,文档)的属性发生变化的情况下,冲突合并模块78可以在该数据(例如,文档)自身中存储有关该数据版本在该特定属性被修改时是什么的信息。如以下更为全面描述的,这允许冲突合并模块78执行冲突数据的智能合并,而并不必保存实际的历史数据。
[0056] 例如,冲突合并模块78可以无需存储(多个)数据项目(例如,文档)的任何先前版本。相反,冲突合并模块78可以将(多个)数据项目(例如,文档)的单个版本存储在通信设备上。通过将(多个)数据项目(例如,文档)的单个版本存储在通信设备上,冲突合并模块78可以用来通过不像常规方法所作的那样保存(多个)数据项目的所有先前版本而优化并节省存储空间。由于冲突合并模块78可以扩充(多个)数据项目以指示变化和相对应的版本,所以冲突合并模块78可以不需要促成对指示改变的信息的任何先前/较早版本进行存储。
[0057] 现在参考图3,提供了使得能够对冲突/修改数据进行智能合并的系统的示例实施例。系统7可以包括一个或多个通信设备165和167(例如,装置50(例如,移动终端10))。虽然图3示出了两个通信设备165、167,但是应当指出的是,任意适当数量的通信设备165、167都可以是系统7的一部分而并不背离本发明的精神和范围。
[0058] 什么样的文档在两个进行复制的通信设备(例如,第一和第二设备(例如,通信设备165和167))中开上去相似的示例如下。
[0059]
[0060] 当应用更新(多个)文档时,应用提供至冲突合并模块78的文档版本应当与存储在数据库(例如,数据库72)中当前所存储的文档的版本相同。例如,在其中应用想要更正firstName的情况下,其可以如下进行:
[0061] contact.firstName=“John”;
[0062] db.updateDocument(contact,...);
[0063] 此外,在其中冲突合并模块78所提供的文档版本与数据库(例如,数据库72)中的相对应文档的相同的情况下,该版本依据所采用的版本设置方案(例如,以下示例使用版本矢量)而被增加(例如,加1)并且被允许进行更新。就此而言,最终结果是数据库(例如,数据库72)中的文档可以变为如下。
[0064]
[0065] 该版本现在为[2,1],其中版本数量的第一个数字2表示在第一设备(例如,通信设备165)上发生了变化。
[0066] 利用这种类型的覆盖(blanket)更新,并没有对什么已经有所改变进行记录,这可能导致合并数据的困难,因为并不确切知晓什么已经发生了变化。
[0067] 在其中能够自动或以其它方式对在不同节点(例如,通信设备165和167)上进行修改的文档进行合并非常重要的情况下,应用能够如下更新存储在数据库(db)中的属性。
[0068] db.updateProperty(contact“,lastName”“,Doe 2nd”)
[0069] 就此而言,应用的调用方仍然提供整个文档,但是该文档可以仅被用于检查该应用是以该文档的最新版本进行工作。如以下所示出的,此时,冲突合并模块78可以在实际将文档例如存储在存储器(例如,存储器设备76的数据库72)中之前进行标记并且指示发生改变的属性(例如,lastName)以及所处的文档版本(例如,[3,1])。
[0070]
[0071]
[0072] 如在正常更新中,整个文档的版本也被冲突合并模块78更新为[2,1],因为该文档的版本从其之前的版本2(例如,[2,1])增加为第一设备(例如,通信设备165)上的当前版本3(例如,[3,1])。冲突合并模块78还可以记录并未更新的属性firstName的版本,其在该示例中是[2,1],因为firstName属性在该firstName属性并未被更新的情况下取用先前文档的版本(例如,[2,1])。就此而言,在示例实施例中,无论属性(例如,lastName)何时被修改,冲突合并模块78都可以确保所有其它属性(例如,属性firstName)也具有版本编号(例如,[2,1])。
[0073] 进一步考虑其中文档被复制到第二设备(例如,通信设备167)的示例,属性firstName在其中随后被改变为“Johnny”(例如,使用updateProperty)机制。为了将该文档(例如,具有标识符(id)4711的联系人文档)复制到第二设备(例如,通信设备167),冲突合并模块78可以将该文档拷贝至第二设备,随后第二设备的冲突合并模块(例如,冲突合并模块78)可以检查其已经在本地存储的文档(例如,具有id 4711的联系人文档)与从第一设备(例如,通信设备165)所接收的文档的版本之间的关系。在该示例中,由于第二设备所接收的文档是比第二设备已经在本地存储的相同版本更新的直接后代,所以第二设备的冲突合并模块可以更新第二设备上的文档以包括任何的改变。就此而言,第二设备(例如,通信设备167)上的文档可以由冲突合并模块如下修改/生成:
[0074]
[0075] 以这种方式,文档自身的版本被冲突合并模块78增加为[3,2],这是因为具有版本[3,1]的先前文档被复制到第二设备(例如,通信设备167)。firstName属性可以被冲突合并模块78增加为[2,2],因为在第二设备(例如,通信设备167)上发生了属性firstName到“Johnny”的改变并且其是从被指定为版本[2,1]的属性firstName“John”所进行的改变。此外,冲突合并模块78可以将属性lastName保持为其先前版本[3,1],因为属性lastName并没有在第二设备(例如,通信设备167)上发送改变。
[0076] 与此同时,进一步考虑属性lastName在第一设备上从“Doe 2nd”被修改和改变为“Doe second”(例如,在文档被复制到第二设备之后)并且因此该文档在第一设备上可以如下:
[0077]
[0078]
[0079] 就此而言,第一设备的冲突合并模块78将第一设备上的文档的版本从第一设备上的先前版本[3,1]增加为[4,1]。此外,第一设备的冲突合并模块78可以将第一设备上具有版本[3,1]的属性lastName增加为版本[4,1],这是因为属性lastName在第一设备上有所修改。第一设备的冲突合并模块78可以将属性firstName的版本保持为[2,1],这与第一设备上的文档中的属性firstName的先前版本[2,1]相同,这是因为并没有针对属性firstName的改变。
[0080] 此外,在其中第一设备的冲突合并模块78执行复制并且检测到文档(例如,第一和第二设备上被分配以id 4711的联系人文档)同时在第一设备(例如,通信设备165)和第二设备(例如,通信设备167)上被修改,则冲突合并模块78可以利用唯一技术而以具有意义的方式对文档的数据进行合并。
[0081] 例如,从在第二设备(例如,通信设备167)上被修改的文档(例如,被分配以id 4711的联系人文档),第二设备的冲突合并模块可以选择属性firstName,原因在于版本[2,
2]比属性firstName的版本[2,1]更近,并且从在第一设备(例如,通信设备165)上被修改的文档(例如,被分配以id 4711的联系人文档),第一设备的冲突合并模块78可以选择属性lastName,这是因为版本[4,1]比属性lastName的版本[3,1]更近。这样,所产生的可以被第一设备和第二设备二者进行存储的文档可以如下:
[0082]
[0083] 这样,第一和第二设备的冲突合并模块(例如,冲突合并模块78)可以生成包括任何被更新属性的最近版本的文档。以这种方式,冲突合并模块78可以在检测到相同文档的冲突数据时自动执行数据的智能合并,而并不保存该文档的整个实际的历史数据并且不要钱用户交互来合并冲突数据。
[0084] 另一方面,所指出的是,如果冲突合并模块在属性lastName被修改时并没有存储属性firstName的版本,则冲突合并模块可能无法推断出属性firstName的哪个版本是更为适宜的版本。
[0085] 在层级属性的情况下,即使仅对特定的一个或者整个的子属性进行修改,冲突合并模块78也可以确保针对每个叶子属性(例如,没有子属性的属性)存储版本。就此而言,叶子属性可以是其数值为原语值(例如,串、证书、浮点数、布尔数)的属性而并不是对象({…})。子属性可以是其数值并非原语值的属性。考虑以下文档作为起始点的示例。
[0086]
[0087]
[0088] 此外,假设该文档已经被复制到第二设备(例如,通信设备167)。在其中属性a.e在第一设备(例如,通信设备165)上被使用以下updateProperty机制进行了修改[0089] db.updateProperty(doc“,a.e”“,hi there”)
[0090] 所产生的文档可以如下:
[0091]
[0092]
[0093] 就此而言,在其中任何属性以保存版本信息的方式被修改的情况下,冲突合并模块78都可以确保所有叶子属性都有明确的版本条目。并且,在其被修改之前,叶子属性的版本是文档的版本。这样,叶子属性a.b.c和a.b.d的版本被冲突合并模块78分配以[3,7],这是该文档(例如,被分配以id 4712的文档)在其被修改之前的版本。此外,该文档的版本被冲突合并模块78针对第一设备进行增加,而使得针对第一设备的版本为[4,7]。在该示例中,属性a.e被应用所修改并且因此冲突合并模块78可以将累加或增加第一设备上该文档的先前版本[3,7]而使得冲突合并模块78向属性a.e分配以版本[4,7]。此外,中间属性的版本是其孩子属性的最大版本。
[0094] 在其中自属性被整体更新的情况下,冲突合并模块78可以针对该子属性中的所有叶子属性存储版本信息。
[0095] 例如,在其中属性a.b在第二设备(例如,通信设备167)上通过使用以下updateProperty机制而被修改的情况下
[0096] db.updateProperty(doc“,a.b”,{c:“hello”,d:“hello”})
[0097] 所产生的文档可以如下
[0098]
[0099]
[0100] 以这种方式,第二设备(例如,通信设备167)的冲突合并模块78可以累加或增加第二设备上的先前文档的版本[3,7]并且向该文档(例如,被分配以id 4712的文档)分配以版本[3,8]。由于属性a.e并没有在第二设备上所分配的任何先前版本信息,并且由于属性a.e在该示例中并未被改变,所以冲突合并模块78可以分配该文档的先前版本[3,7]—这是其被修改之前的版本—作为属性a.e的当前版本[3,7]。此外,在该示例中,由于属性a.b.c被修改为“hello”并且属性a.b.d被修改为“hello”,所以冲突合并模块78可以累加或增加该文档的先前版本[3,7]并且向属性a.b.c和a.c.d分配以版本[3,8]。
[0101] 在该示例中,在执行复制时(这里也被称作复制时间),冲突合并模块78可以检测到冲突,因为文档已经在两个不同设备(例如,第一和第二设备(例如,通信设备165和167))上被独立修改。然而,由于已经被修改的实际属性在冲突中并不独立,所以冲突合并模块可以合并两个文档版本。例如,在第二设备(例如,通信设备167)上被修改的版本可以被复制(例如,拷贝)到第一设备(例如,通信设备165),并且随后这两个文档可以被第一设备的冲突合并模块进行合并并且被存储在第一设备上(例如,在存储器(例如,存储器设备76或数据库72)中)。此外,在第一设备(例如,通信设备165)上被修改的版本可以被复制到第二设备(例如,通信设备167),并且被第二设备的冲突合并模块进行合并并且被存储在第二设备上(例如,在存储器(例如,存储器设备76或数据库72)中)。现在,所产生的文档在第一设备和第二设备上是相同的并且可以被如下表示
[0102]
[0103]
[0104] 如在上述所产生文档中所示,属性a.b.c和a.b.d反映了针对具有版本[3,8]的“hello”的改变。此外,属性a.e反映了针对具有版本[4,7]的“hi there”的改变。此外,冲突合并模块78可以实施并执行指定非叶子属性(例如,具有子属性的属性)的版本为其任意子对象(Children)的最大版本的规则,并且该规则可以被应用于该文档自身的版本。非叶子属性可以是其属性并非诸如串、整数、浮点数、布尔数的原语值的属性,而是包括其它属性的对象或属性。这样,在该示例中,冲突合并模块78可以对属性的每个版本的最大编号进行分析并且可以分配这些数值作为所产生文档的版本。例如,属性版本的最大编号是4和8。由此,冲突合并模块78可以向所产生的文档分配以版本[4,8]。
[0105] 以下考虑从起始点具有更深层级的文档的示例:
[0106]
[0107]
[0108] 在该示例中,冲突合并模块78可以对该文档进行分析并且检测到没有特定于属性的版本。由此,冲突合并模块78可以将该文档的版本[1]分配作为所有属性的版本。此外,该示例是从单个节点/设备(例如,通信设备165)的视进行考虑。例如,在该示例中,该文档可以仅被存储在一个设备上。
[0109] 进一步考虑属性a.b.c从属性“hello”被修改并改变为属性“HELLO”。就此而言,冲突合并模块78可以在该文档的meta.properties中存储有关所有叶子属性的版本信息。由此,所产生的文档可以如下:
[0110]
[0111] 由于针对该文档的属性a.b.c有所修改,所以冲突合并模块78可以将该文档的版本增加为[2]。此外,在属性a.b.c被修改的情况下,冲突合并模块78可以将属性的版本增加为[2]。此外,由于属性a.b.d.e和a.f并未被修改,所以冲突合并模块78可以为属性a.b.d.e和属性a.f分配以对应于该文档的先前版本的版本[1]。
[0112] 考虑其中属性a.b.d.e被修改以将“world”改变为“WORLD”的另一个示例。根据示例实施例,在其中特定属性被修改的情况下,该属性的数值基于文档自身在其被修改之前的数值加上1。就此而言,冲突合并模块78可以为属性a.b.d.e分配并存储版本信息[3],这是由于文档的先前版本为[2]并且因为冲突合并模块78可以将该文档的版本数值[2]增加1。冲突合并模块78还可以将文档自身的版本增加1从而为当前文档分配以数值[3]。由于属性a.b.c和属性a.f在该示例中并未修改,所以冲突合并模块78可以分配属性a.b.c的先前数值[2]作为属性a.b.c的当前数值[2]并且分配属性a.f的先前数值[1]作为a.f的当前数值[1]。这样,由冲突合并模块78修改/生成的所产生文档可以如下。
[0113]
[0114]
[0115] 作为另一个示例,考虑属性a.b在一个操作中被修改(例如,具有相同的子属性,虽然它们可以有所不同)。就此而言,冲突合并模块78可以在文档中如下包括有关所有叶子属性的版本信息。
[0116]
[0117] 在该示例中,冲突合并模块78可以为属性a.b.c和属性a.b.d.e分配并存储版本信息[4],这是由于该文档的先前版本为[3]并且因为冲突合并模块78将文档的版本[3]增加了1。冲突合并模块78还可以将文档自身的版本增加1以向当前文档分配以数值[4]。由于属性a.f在该示例中并未被修改,所以冲突合并模块78可以分配属性a.f的先前数值[1]作为属性a.f的当前数值[1]。
[0118] 在该示例中,针对每个属性明确存储版本信息可能是多余的,因为属性a.b.c和a.b.d.e的版本是相同的,并且因此冲突合并模块78可以通过在文档中去除一下条目而节约/节省存储器(例如,存储器设备76)的存储空间。
[0119] “a.b.c”:[4]
[0120] “a.b.d.e”:[4]
[0121] 相反,冲突合并模块78可以利用单个条目“a.b”:[4]替换这些条目。
[0122] 就此而言,冲突合并模块78可以实施以下规则,其指定在没有针对特定叶子属性标记明确版本的情况下,该叶子属性的版本是具有版本的最接近祖先属性的版本。其要求在于在每个属性分支上(例如,属性a.b.c或属性a.b.d.e)可以有最多一个版本条目。实际上,这将意味着在如上述情形中,在仅标记出属性a.b的版本为[4]的情况下(例如,暗示属性a.b.c、属性a.b.d和属性a.b.d.e的版本同样为[4]),则如果属性a.b.d.e被修改,则其版本变为[5],冲突合并模块78将必须移除属性a.b的条目并且为属性a.b.c增加条目[4]。应当指出的是,可能需要该要求来确保所存储的版本根据非叶子属性的版本是其任意孩子(例如,孩子属性)的最大版本的要求是正确的。
[0123] 这样,在示例实施例中,冲突合并模块78可以应用以下概念性规则,其中每个叶子属性的版本被分配并存储(例如,在文档自身中),并且非叶子属性的版本是其任意孩子(例如,孩子属性)的最大版本。此外,该规则始终都可以被应用于文档自身的版本。
[0124] 在另一个示例实施例中,我们允许属性分支具有若干版本条目。在这种情况下,属性的版本是其任意孩子的最大版本(例如,无论该属性是否具有所标记的版本),或者在其没有孩子或者孩子没有所标记的版本的情况下,该属性的版本因此是针对其存在版本的最接近的祖先属性(例如,包括其自身)的版本。该更为复杂的要求允许版本更为紧凑地进行存储。例如,在之前的其中属性a.b的版本为[4]并且a.b.d.e被修改的示例中,针对属性a.b.d.e存储版本[5]就将是足够的。针对全部都拥有具有所标记版本的孩子a.b.d.e的a、a.b和a.b.d而言,版本就是其任意孩子的最大版本,例如[5]。对于a.b.c而言,版本是具有所标记版本的最接近祖先属性的版本,其包括a.b.c自身。这样的最接近属性是a.b,其具有版本[4]。类似地,针对a.b.d.e而言,版本是具有所标记版本的最接近祖先属性的版本,其包括a.b.d.e自身。这样的最接近属性是a.b.d.e,其具有版本[5]。该示例实施例的优势在于更为紧凑地存储版本信息。另一方面,在该示例实施例中,获得非叶子属性的版本可能要求通过其所有孩子进行迭代。这可以通过仅针对持久性存储使用更为紧凑的表示形式并且当数据被加载到存储器以便进行处理时转换为另一种表示形式而有所缓解。
[0125] 现在参考图4,提供了用于使得能够对冲突数据进行智能合并的示例方法的流程图。在操作400,通信设备(例如,装置50(例如,通信设备165))可以包括诸如冲突合并模块78、处理器70等的器件,以用于检测针对该通信设备上所存储(例如,在存储器设备76或存储器设备76的数据库72中)的数据项目(例如,文档)的至少一个属性(例如,属性lastName等)的至少一种改变或修改。
[0126] 在操作405,该通信设备(例如,装置50(例如,通信设备165))可以包括诸如冲突合并模块78、处理器70等的器件,以用于响应于检测到属性有所改变/修改而确定数据项目(例如,文档)的版本(例如,[3,1])以及该属性(例如,属性lastName等)的版本(例如,[3,1])或该数据项目中并未改变的一个或多个属性(例如,属性firstName)的一个或多个版本(例如,[2,1])。在操作410,该通信设备(例如,装置50(例如,通信设备165))可以包括诸如冲突合并模块78、处理器70等的器件,以用于更新数据项目以包括指示数据项目的版本、至少一个有所改变/修改的属性的版本以及并未改变的属性的版本的标记。
[0127] 在操作415,该通信设备(例如,装置50(例如,通信设备165))可以包括诸如冲突合并模块78、处理器70等的器件,以用于使得能够将更新的数据项目存储在通信设备上而并不存储该数据项目的一个或多个先前版本。该更新的数据项目被配置为在解决对应于该数据项目的另一个数据项目(这里也被称作其它数据项目)(例如,另一个通信设备(例如,通信设备167)上的另一个文档)中的冲突数据时被加以利用。在示例实施例中,存储在该通信设备(例如,通信设备165)上的更新的数据项目可以对应于文档而该其它数据项目可以对应于另一个通信设备(例如,通信设备167)上的相同文档(例如,相同文档的一个版本)。
[0128] 应当指出的是,图4是根据本发明的示例实施例的系统、方法和计算机程序产品的流程图。将要理解的是,流程图中的每个框以及流程图中框的组合可以通过各种手段来实施,诸如硬件、固件、和/或包括一个或多个计算机程序指令的计算机程序产品。例如,以上所描述的一个或多个过程可以由计算机程序指令来实现。就此而言,在示例实施例中,体现以上所描述过程的计算机程序指令被存储器设备(例如,存储器设备76)所存储并且由处理器(例如,处理器70、冲突合并模块78)来执行。如将要意识到的,任何这样的计算机程序指令都可以被加载到计算机或其它可编程装置(例如,硬件)上以生产机器,以使得在计算机或其它可编程装置栅执行的指令使得该流程图的中所指定的功能得以被实施。在一个实施例中,该计算机程序指令存储在计算机可读存储器中,后者能够指示计算机或其它可编程装置以特定方式工作,以使得存储在计算机可读存储器中的指令产生包括实施流程图的框中所指定的(多个)功能的指令的制造品。计算机程序指令还可以被加载到计算机或其它可编程装置上以使得一系列操作在计算机或其它可编程装置上得以执行从而产生计算机实施的处理,而使得在该计算机或其它可编程装置上执行的指令实施流程图的框中所指定的功能。
[0129] 因此,流程图中的框支持用于执行指定功能的手段的组合。还将要理解的是,流程图中的一个或多个框以及流程图中框的组合可以由执行所指定功能的基于专用硬件的计算机系统或者特殊用途的硬件和计算机指令的组合来实施。
[0130] 在示例实施例中,用于执行以上图4中的方法的装置可以包括处理器(例如,处理器70、冲突合并模块78),其被配置为执行以上所描述的一些或每种操作(400-415)。该处理器例如可以被配置为通过执行硬件所实施的逻辑功能,执行所存储的指令或者执行用于执行每种操作的算法而执行该操作(400-415)。可替换地,该装置可以包括用于执行以上所描述的每种操作的器件。就此而言,根据示例实施例,用于执行操作(400-415)的器件的示例例如可以包括处理器(例如,用于执行以上所描述的任意操作的器件)、冲突合并模块78和/或用于执行指令或执行算法以便处理如以上所描述的信息的设备或电路。
[0131] 这里给出的本发明的许多修改和其它实施例将被已经从之前描述和相关联附图中所给出的教导所获益的与这些发明相关领域的技术人员所意识到。因此,所要理解的是,本发明并不局限于所公开的具体实施例并且修改和其它实施例意在被包括在所附权利要求的范围之内。此外,虽然以上描述和相关联附图以部件和/或功能的某些示例组合为背景对示例实施例进行了描述,但是应当意识到的是,可以由可替换实施例提供部件和/或功能的不同组合而并不背离所附权利要求的范围。就此而言,例如,不同于以上所明确描述的部件和/或功能的不同组合也预期在一些所附权利要求中被给出。虽然这里采用了具体术语,但是它们仅以一般和描述性含义被使用而并非用于限制的目的。
相关专利内容
标题 发布/更新时间 阅读量
一种环保修改液 2020-05-12 731
一种修改纸 2020-05-11 105
修改对象的基层 2020-05-12 525
修改图表 2020-05-11 469
多功能修改器 2020-05-12 619
已修改流同步 2020-05-12 202
一种修改液 2020-05-12 551
修改设备通知 2020-05-13 292
错字修改笔 2020-05-12 761
错字修改笔 2020-05-12 958
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈