将规则应用于客户端对共享记录的更新以触发系统生成的更新的制作方法

文档序号:29853455发布日期:2022-04-30 08:37阅读:88来源:国知局
将规则应用于客户端对共享记录的更新以触发系统生成的更新的制作方法

1.本公开涉及基于多个用户输入在单个记录中记录和显示更改。特别地,本公开涉及将规则应用于从多个用户对共享记录的汇集(collated)更改以触发系统生成的对共享记录的更新。


背景技术:

2.为了允许一个以上的用户共享和修改文档或数据记录,软件提供商通常依赖于用以控制数据记录编辑的三种方法中的一种。第一种方法利用锁定限制,其中一个用户锁定数据记录以允许该用户对数据记录执行编辑,而所有其它用户必须在队列中等待轮到他们个人应用他们期望的更改。由于只有单个用户能够在任何给定时间编辑数据记录,因此必须以顺序方式应用更改。
3.第二种方法利用签出和签入限制,其中在将任何冲突更改合并到数据记录之前执行手动冲突解决。通常用于简单的文档协作的第三种方法利用数据变换来同步数据记录的视图。
4.本部分中描述的方法是可以采用的方法,但不一定是先前已经设想或采用的方法。因此,除非另有说明,否则不应假定本部分中描述的任何方法仅因其包含在本部分中就有资格视为现有技术。
附图说明
5.在附图的各图中,实施例是通过示例的方式而不是限制的方式示出的。应当注意的是,在本公开中对“一”或“一个”实施例的引用不一定是指同一实施例,并且它们意味着至少一个实施例。在附图中:
6.图1图示了根据一个或多个实施例的协作数据管理系统;
7.图2图示了根据一个或多个实施例的协作数据管理系统的另一个视图;
8.图3图示了根据一个或多个实施例的协作数据管理系统的功能块;
9.图4图示了根据一个或多个实施例的用于基于触发的检测来提供对共享数据记录的更新的示例方法;
10.图5图示了根据一个或多个实施例的用于基于接收到来自客户端的请求提供共享数据记录的差异的示例方法;
11.图6图示了根据一个或多个实施例的用于基于接收到来自客户端的更改请求提供共享数据记录的差异的示例方法;以及
12.图7示出了图示根据一个或多个实施例的计算机系统的框图。
具体实施方式
13.在以下描述中,出于解释的目的,阐述了许多具体细节以便提供透彻的理解。可以
在没有这些具体细节的情况下实践一个或多个实施例。在一个实施例中描述的特征可以与在不同的实施例中描述的特征组合。在一些示例中,众所周知的结构和设备参考框图形式描述,以避免不必要地模糊本发明。
14.1.总体概述
15.2.系统体系架构
16.2.1数据记录管理服务器
17.2.2跨多个客户端的协作数据记录管理
18.3.共享数据记录的协作数据记录管理
19.3.1接收更新/更改请求
20.3.2解决未决的更改
21.3.3整合更改
22.3.4对共享数据记录应用特定规则
23.3.5向访问共享数据记录的特定客户端中继更新
24.4.示例实施例
25.4.1基于更新请求提供更新的共享数据记录
26.4.2提供差异以基于更改请求更新共享数据记录
27.5.计算机网络和云网络
28.6.其它;扩展
29.7.硬件概述
30.1.总体概述
31.一个或多个实施例确定系统生成的更新并将其应用于可由客户端集合中的每个客户端访问的共享记录。系统确定共享记录的更新,该更新(a)尚未被可以访问共享记录的客户端集合中的任何客户端请求,并且(b)由对至少一个客户端请求的更新应用规则而触发。系统可以将规则应用于包含客户端请求的更新的修订记录。替代地或附加地,系统可以将规则应用于客户端请求的更新的独立版本。系统向客户端集合中的一个或多个客户端分发最终修订记录,该最终修订记录包含(一个或多个)客户端请求的更新和(一个或多个)系统生成的更新两者。最终修订记录还可以包含存储在公共分类账中的未决的(pending)更改。将最终修订记录分发给客户端可以包括分发与客户端可访问的共享记录的版本的差异集合。替代地或附加地,最终修订记录的分发可以包括最终修订记录的整体分发。
32.在本说明书中描述的和/或在权利要求书中叙述的一个或多个实施例可能没有被包括在本总体概述部分中。
33.2.系统体系架构
34.2.1数据记录管理服务器
35.图1图示了根据一个或多个实施例的系统100。如图1中所示,系统100包括与数据记录管理服务器124通信的客户端102。数据记录管理服务器124包括多个组件,包括更改整合引擎106和客户端记录比较引擎114。数据记录管理服务器124还被配置为与存储到计算机可读存储介质、公共分类账120和客户端高速缓存116的数据储存库(db)118通信。这些组件中的任何组件都可以以各种方法并入到数据记录管理服务器124或系统100内的单独组件中。在一个或多个实施例中,系统100可以包括比图1中所示的组件更多或更少的组件。图
1中所示的组件可以在彼此本地或彼此远离。图1中所示的组件可以用软件和/或硬件来实现。每个组件可以分布在多个应用、设备和/或机器上。多个组件可以组合成一个应用、设备和/或机器。相对于一个组件描述的操作可以替代地由另一个组件执行或跨多个组件共享。
36.与可以用于在图1的各种组件之间进行通信的计算机网络相关的附加实施例和/或示例在下面的第5部分“计算机网络和云网络”中进行描述。
37.在一个或多个实施例中,数据储存库118可以是用于存储数据的任何类型的存储单元和/或设备(例如,文件系统、数据库、表集合或任何其它存储机制)。另外,数据储存库118可以包括多个不同的存储单元和/或设备。多个不同的存储单元和/或设备可以是或可以不是相同类型或位于相同物理站点。另外,数据储存库118可以在与数据记录管理服务器124或客户端102相同的计算系统上实现或执行。替代地或附加地,数据储存库118可以在与数据记录管理服务器124或客户端102分离的计算系统上实现或执行。数据储存库118可以经由直接连接、经由无线连接、经由网络或对本领域普通技术人员来说显而易见的一些其它连接通信地耦合到数据记录管理服务器124和/或客户端102。
38.在一个或多个实施例中,公共分类账120被配置为存储对由数据记录管理服务器124管理的共享数据记录所做的每个更改和/或更新的离散条目。公共分类账120可以存储对共享数据记录的未解决的更改(尚未反映到由客户端102正在查看的共享数据记录的版本的更改和/或更新)。在一种实施方式中,公共分类账120存储由有权访问由数据记录管理服务器124管理的特定共享数据记录的每个特定客户端对特定共享数据记录所做的更改的日志。
39.在实施例中,公共分类账120可以存储到任何类型的计算机可读存储介质和/或存储设备,例如,硬盘驱动器、光盘驱动器、闪存、非易失性随机存取存储器(nvram)、参数随机存取存储器(pram)或本领域已知的任何其它存储介质。另外,在一种方法中,公共分类账120可以具有本领域普通技术人员已知的任何格式、数据结构或分层级布置。公共分类账120可以位于或不位于与数据记录管理服务器124、客户端高速缓存116、数据储存库118或客户端102相同的(一个或多个)物理站点。
40.在一种方法中,公共分类账120可以在与数据记录管理服务器124或客户端102相同的计算系统上实现或存储。替代地或附加地,公共分类账120可以在与数据记录管理服务器124或客户端102分离和/或远程的计算系统上实现或存储。公共分类账120可以经由直接连接、经由无线连接、经由网络或对本领域普通技术人员来说显而易见的一些其它连接通信地耦合到数据记录管理服务器124。
41.在一个或多个实施例中,客户端高速缓存116被配置为至少存储由数据记录管理服务器124管理的每个共享数据记录与其由客户端102和与数据记录管理服务器124通信的任何其它客户端访问的版本之间的差异。
42.在实施例中,客户端高速缓存116可以存储对客户端102可访问的共享数据记录的未解决的更新和/或更改。在这个实施例中,客户端高速缓存116存储对客户端102可访问的每个共享数据记录所做的所有更新/更改的合并视图以及由客户端102正在访问的每个共享数据记录的当前版本的指示。
43.在还有的实施例中,客户端高速缓存116可以是全局高速缓存,其存储对由多个客户端(包括客户端102)可访问的数据记录管理服务器124管理的所有共享数据记录的未解
决的更新和/或更改。在这个实施例中,客户端高速缓存116存储对多个客户端可访问的每个共享数据记录所做的所有更新/更改的合并视图以及由多个客户端中的每个客户端正在访问的每个共享数据记录的当前版本的指示。
44.在一个或多个实施例中,客户端高速缓存116可以存储到任何类型的计算机可读存储介质和/或存储设备,例如,硬盘驱动器、光盘驱动器、闪存、nvram、pram或本领域已知的任何其它存储介质。另外,在一种方法中,客户端高速缓存116可以具有本领域普通技术人员已知的任何格式、数据结构或分层级布置。客户端高速缓存116可以或可以不位于与数据记录管理服务器124、公共分类账120、数据储存库118或客户端102相同的(一个或多个)物理站点。
45.在一种方法中,客户端高速缓存116可以在与数据记录管理服务器124或客户端102相同的计算系统上实现或存储。替代地或附加地,客户端高速缓存116可以在与数据记录管理服务器124或客户端102分离和/或远程的计算系统上实现或存储。客户端高速缓存116可以经由直接连接、经由无线连接、经由网络或对本领域普通技术人员来说显而易见的一些其它连接通信地耦合到数据记录管理服务器124。
46.在实施例中,数据记录管理服务器124在一个或多个数字设备上实现。术语“数字设备”通常是指包括处理器的任何硬件设备。数字设备可以指执行应用或虚拟机的物理设备。数字设备的示例包括计算机、平板电脑、膝上型电脑、台式机、上网本、服务器、web服务器、网络策略服务器、代理服务器、通用机器、特定于功能的硬件设备、硬件路由器、硬件交换机、硬件防火墙、硬件防火墙、硬件网络地址转换器(nat)、硬件负载均衡器、大型机、电视、内容接收器、机顶盒、打印机、移动手机、智能电话、个人数字助理(“pda”)、无线接收器和/或发送器、基站、通信管理设备、路由器、交换机、控制器、接入点和/或客户端设备。在替代实施例中,数据记录管理服务器124可以部分或完全实现为在硬件环境内操作的软件组件。
47.在一个实施例中,客户端102在一个或多个数字设备上实现,如上所述。在替代实施例中,客户端102可以部分或完全实现为在硬件环境内执行的软件组件。
48.在各种示例中,客户端102可以是台式计算机、膝上型计算机、平板计算机、智能电话、服务器、专用于与数据记录管理服务器124一起操作的客户端设备、或者能够与数据记录管理服务器124进行通信的一些其它硬件设备。
49.在一个或多个实施例中,可以在硬件和/或软件中实现接口以促进客户端102和数据记录管理服务器124之间的通信。接口可以呈现用户接口元素并经由用户接口元素接收输入。接口的示例包括图形用户接口(gui)、命令行接口(cli)、触觉接口、语音命令接口等。用户接口元素的示例包括复选框、单选按钮、下拉列表、列表框、按钮、切换、文本字段、日期和时间选择器、命令行、滑块、页面和表单。
50.在实施例中,接口的不同组件可以用不同的语言来指定。每个用户接口元素的行为可以用动态编程语言(诸如javascript)来指定。用户接口元素的内容可以用标记语言来指定,诸如超文本标记语言(html)、可扩展标记语言(xml)、xml用户接口语言(xul)等。此外,用户接口元素的布局可以在样式表语言中指定,诸如层叠样式表(css)。替代地,可以用一种或多种其它语言(诸如java、c、c++等)来指定接口。
51.在实施例中,客户端102向数据记录管理服务器124发送请求(“req”)104。在一种
方法中,请求104可以是包括一个或多个更新或更改以应用于存储到数据储存库118并由数据记录管理服务器124管理的特定共享数据记录的更改请求。在另一种方法中,请求104可以是被配置为触发数据记录管理服务器124来用共享数据记录的更新版本进行响应的更新请求。
52.根据另一个实施例,数据记录管理服务器124可以在没有从客户端102发送请求104的情况下执行本文描述的功能,诸如根据预定时间表、响应于触发事件(诸如另一个客户端请求对共享数据记录的更新/更改、设备的启动、对网络的更改等)、定期等。
53.响应于接收请求104,数据记录管理服务器124将请求104引导到更改整合引擎106。更改整合引擎106可以在硬件和/或软件中实现,并且被配置为响应于触发事件(诸如接收请求104)而执行某些功能和/或逻辑。此外,更改整合引擎106被配置为与客户端高速缓存116、公共分类账120和数据储存库118进行通信。
54.在实施例中,更改整合引擎106确定客户端102访问的共享数据记录的版本与请求104中指示的任何更改之间的第一差异集合。在一种方法中,第一差异集合可以包括在请求104中。如本领域普通技术人员将理解的,差异可以影响共享数据记录的任何部分或全部,并且可以包括对共享数据记录的任何类型的修改、删除、添加和/或调整。
55.在实施例中,更改整合引擎106将来自请求104的任何请求的更新和/或更改与尚未应用于由其它源请求或由一个或多个事件触发的共享数据记录的任何更新和/或更改整合。源可以包括但不限于公共分类账120和客户端高速缓存116。
56.尚未应用于共享数据记录的这些更新和/或更改被称为未决的更新。所有这些未决的更新以智能方式与来自请求104的任何请求的更新和/或更改整合在一起,用以为共享数据记录创建整合的更新,该整合的更新在应用于共享数据记录时,将导致共享数据记录累积反映所有未决的和请求的更新和/或更改,并使共享数据记录保持最新。
57.在一种方法中,更改整合引擎106可以在生成整合的更新之前简化未决的更新和来自请求104的所请求的更新和/或更改,如稍后更详细描述的。
58.更改整合引擎106将整合的更新应用于由客户端102访问的共享数据记录的版本,以产生第一修订数据记录(“rdr1”)108。在一种方法中,共享数据记录的这个版本将来自请求104的所有未决的更新和任何请求的更新和/或更改反映为完全和完整的数据记录。一旦产生了第一修订数据记录108,更改整合引擎106就将第一修订数据记录108发送到规则应用引擎110以供进一步处理。
59.在替代方法中,更改整合引擎106可以仅发送第一修订数据记录108与客户端102访问的共享数据记录的版本之间的差异,以减少传送数据时的资源使用。
60.规则应用引擎110可以在硬件和/或软件中实现,并且被配置为响应于触发事件(诸如接收到第一修订数据记录108、第一修订数据记录108与客户端102访问的共享数据记录的版本之间的差异等)而执行某些功能和/或逻辑。此外,规则应用引擎110被配置为与客户端记录比较引擎114和数据储存库118进行通信。
61.规则应用引擎110被配置为将规则集合(其可以包括一个或多个规则、条件、等效物、方程式、操作、过程等)应用于第一修订数据记录108,以确定针对共享数据记录的第二更新。该第二更新基于对客户端102访问的共享数据记录的版本的任何更改,来考虑对底层原始共享数据记录的此类更改。换句话说,作为应用第一更新的结果,需要第二更新。此外,
客户端102或有权访问共享数据记录的任何其它客户端不请求应用第二更新。替代地,规则应用引擎110确定第一修订数据记录108是否遵守规则集合,如果它不遵守,那么规则应用引擎110生成第二更新,该第二更新在应用于第一修订数据记录108时,将导致第一修订数据记录108遵守规则集合。
62.规则集合可以包括用于检查第一修订数据记录108、操纵和/或更改第一修订数据记录108、撤销或回滚对第一修订数据记录108的更改等的任何操作。一些示例操作包括但不限于:确定请求配置的可行性、计算定价、计算库存、配置产品、基于多个定价计算来确定配置产品的报价等。
63.一旦将规则集合应用于第一修订数据记录108,当认为合适时,就生成共享数据记录的第二更新以纠正由于客户端102对共享数据记录的更改而可能存在于第一修订数据记录108中的任何缺陷、误差、错误等。当由于规则应用引擎110应用规则而不存在对第一修订数据记录108的更改时,可以不需要这种第二更新。在这种情况下,规则应用引擎110将保持第一修订数据记录108不变,并将其传输到客户端记录比较引擎114。
64.在示例中,共享数据记录可以是配置产品的报价,规则集合可以包括基于配置产品的定价和报价指令,并且客户端102可能已经重新配置产品以移除特征。在这个示例中,由规则应用引擎110应用于第一修订数据记录108的规则集合可以分析配置产品(其包括移除特征的指示)并且为第一修订数据记录108描述的配置产品提供修订总价格,其不包括与移除特征相关联的任何价格或成本。
65.在另一个示例中,共享数据记录可以是由客户通过客户端102指定的复杂服务器机架系统配置,并且规则集合可以包括用于服务器机架系统的配置指令,该配置指令确保由共享数据记录指定的组件和选项是可行的并且可与其它选择互操作。如果客户端102向服务器机架添加硬件(诸如架顶式(tor)交换机),那么由规则应用引擎110应用于第一修订数据记录108的规则集合可以分析修改后的复杂服务器机架系统配置(其包括添加的tor交换机),以基于整体系统要求和所选择的其它组件确定配置是否合适。在这个示例中,规则应用引擎110可以将客户端102选择的特定tor交换机模型更改为与先前在复杂服务器机架系统配置中指定的其它组件兼容的不同tor交换机模型,并且修订复杂服务器机架系统配置以包括更合适的tor交换机。
66.在一个或多个实施例中,规则应用引擎110可以将第二更新、第一修订数据记录108和/或第二修订数据记录112存储到数据储存库118。此外,为了在更改整合引擎106仅向规则应用引擎110发送差异而不是完全修订数据记录时将规则应用于共享数据记录,规则应用引擎110可以从数据储存库118访问由客户端102访问的共享数据记录的版本,以便在向其应用规则集合之前应用第一更新来生成第一修订数据记录108。
67.一旦第二更新由规则应用引擎110生成,第二更新就被应用于第一修订数据记录108以产生第二修订数据记录(“rdr2”)112。此后,规则应用引擎110将第二修订数据记录112传输到客户端记录比较引擎114。如前所述,当由于应用规则而认为不需要第二更新时,规则应用引擎110将第一修订数据记录108传输到客户端记录比较引擎114。
68.客户端记录比较引擎114可以在硬件和/或软件中实现,并且被配置为响应于触发事件(诸如接收到第一修订数据记录108、接收到第二修订数据记录112等)执行某些功能和/或逻辑。此外,客户端记录比较引擎114被配置为与客户端高速缓存116和客户端102进
行通信。
69.在一个或多个实施例中,客户端记录比较引擎114被配置为将第二修订数据记录112与客户端102访问的共享数据记录的版本进行比较以确定共享数据记录的两个版本之间的差异集合。一旦确定了这些差异,为了节省资源,指示这些差异的响应(“resp”)122就可以被发送到客户端102。
70.客户端记录比较引擎114可以从客户端高速缓存116访问客户端102所访问的共享数据记录的版本。由于客户端102请求访问共享数据记录的先前与客户端的交互,客户端高速缓存116将具有存储在其中的副本,并且在客户端高速缓存102中创建条目,存储或以其它方式指示该共享数据记录的版本以供将来参考。
71.在实施例中,客户端记录比较引擎114可以在客户端高速缓存116中存储第二修订数据记录112和/或第二修订数据记录112与客户端102访问的共享数据记录的版本之间所确定的差异以供以后参考。
72.在另一种方法中,发送到客户端102的响应122可以包括第二修订数据记录112,而不是第二修订数据记录112与客户端102访问的共享数据记录的版本之间所确定的差异。在这种方法或任何其它方法中,客户端记录比较引擎114可以在客户端高速缓存116中存储第二修订数据记录112以供将来参考。
73.2.2跨多个客户端的协作数据记录管理
74.图2图示了根据一个或多个实施例的系统200。如上关于图1描述的组件可以在如图2中所示的另一个示例环境中实现,图2示出了包括多个客户端(客户端a 202、客户端b 226、...、客户端n 228)的系统200,每个客户端与数据记录管理服务器230进行通信。数据记录管理服务器230的设置类似于图1中的数据记录管理服务器124,不同的是,在图2中,数据储存库118和公共分类账120被包括在数据记录管理服务器230内。此外,在数据记录管理服务器230内包括多个客户端高速缓存(客户端a高速缓存220、客户端b高速缓存222、
……
、客户端n高速缓存224)。但是,不要求这些组件被包括在数据记录管理服务器230中,并且在一个或多个实施例中这些组件可以是单独的组件。
75.每个共享数据记录可以由多个客户端中的一个以上的客户端同时访问,其中多个客户端中的每个特定客户端被提供对由数据记录管理服务器230托管的一个或多个共享数据记录的编辑特权。
76.在实施例中,各种客户端高速缓存(例如,客户端a高速缓存220、客户端b高速缓存222、
……
、客户端n高速缓存224)中的每一个可以至少为每个客户端单独存储由数据记录管理服务器230管理的共享数据记录与其由特定客户端(例如,客户端a 202、客户端b 226、
……
、客户端n 228)访问的版本之间的差异。
77.在这个实施例中,每个客户端高速缓存可以存储对可由向其指定高速缓存的单独客户端访问的共享数据记录的未解决的更新和/或更改(例如,客户端a高速缓存220为客户端202存储未解决的更新和/或更改)。在这个实施例中,客户端a高速缓存220存储对客户端a 202可访问的每个共享数据记录所做的所有更新/更改的合并视图以及客户端a 202正在访问的每个共享数据记录的当前版本的指示。
78.在替代实施例中,单个全局客户端高速缓存可以提供图2中所示的各种客户端高速缓存的功能。
79.在一个或多个实施例中,每个客户端高速缓存可以存储到任何类型的计算机可读存储介质和/或存储设备,例如,硬盘驱动器、光盘驱动器、闪存、nvram、pram或本领域已知的任何其它存储介质。另外,在一种方法中,客户端高速缓存可以具有本领域普通技术人员已知的任何格式、数据结构或分层级布置。
80.在实施例中,客户端高速缓存(例如,客户端a高速缓存220、客户端b高速缓存222、
……
、客户端n高速缓存224)中的一个或多个可以位于与数据记录管理服务器230、公共分类账120、数据储存库118或各种客户端(例如,客户端a 202、客户端b 226、
……
、客户端n 228)相同的(一个或多个)物理站点。此外,在实施例中,客户端高速缓存(例如,客户端a高速缓存220、客户端b高速缓存222、
……
、客户端n高速缓存224)中的一个或多个可以不位于与数据记录管理服务器230、公共分类账120、数据储存库118或各种客户端(例如,客户端a 202、客户端b 226、
……
、客户端n 228)相同的(一个或多个)物理站点。
81.图2中所示和描述的任何组件可以以各种方式并入到数据记录管理服务器230中或作为系统200内的单独组件进行操作。
82.在一个或多个实施例中,系统200可以包括比图2中所示的组件更多或更少的组件。图2中所示的组件可以在彼此本地或远离。图2中所示的组件可以用软件和/或硬件来实现。每个组件可以分布在多个应用、设备和/或机器上。多个组件可以组合成一个应用、设备和/或机器。相对于一个组件描述的操作可以替代地由另一个组件执行或跨多个组件共享。
83.与可以用于在图2的各种组件之间进行通信的计算机网络相关的其它实施例和/或示例在下面的第5部分“计算机网络和云网络”中进行描述。
84.在实施例中,数据记录管理服务器230在一个或多个数字设备上实现。在替代实施例中,数据记录管理服务器230可以部分或完全实现为在硬件环境内操作的软件组件。
85.在实施例中,多个客户端(例如,客户端a 202)中的一个或多个可以在一个或多个数字设备上实现,如上所述。在替代实施例中,客户端a 202(或任何其它客户端)可以部分或完全地实现为在硬件环境内执行的软件组件。
86.在一个或多个实施例中,可以在硬件和/或软件中实现接口以促进多个客户端和数据记录管理服务器230之间的通信。
87.数据记录管理服务器230包括事件队列206,该事件队列206被配置为接收来自多个客户端的请求、存储各种请求,并且然后根据一些预定方案(诸如根据接收到的顺序,例如,先进先出(fifo)、先进后出(filo)、后进先出(lifo)等、根据在请求内指定的或由事件队列206确定的优先级等),将请求传递到更改整合引擎106。可以在事件队列206内采用用于确定中继接收到的请求的顺序的任何方法、技术或方案,如对于本领域普通技术人员来说将显而易见的。
88.在实施例中,事件队列206还可以将来自多个客户端的请求发送到公共分类账120,使得公共分类账120可以存储请求或其一部分(例如,数据记录之间的差异、请求的更新/更改等),以供将来参考。
89.在一个或多个实施例中,事件队列206可以存储到任何类型的计算机可读存储介质和/或存储设备,例如,硬盘驱动器、光盘驱动器、闪存、nvram、pram或本领域已知的任何其它存储介质。另外,在一种方法中,事件队列206可以具有本领域普通技术人员已知的任何格式、数据结构或分层级布置。
90.当客户端发送更改请求,诸如客户端a 202向数据记录管理服务器230发送更改请求(“req”)204时,在事件队列206处接收到请求204。根据事件队列206所采用的方案(或按照没有这种方案的接收顺序),请求被提供给更改整合引擎106进行处理,如参考图1所描述的。
91.如图2中所示,更改整合引擎106生成第一更新并将第一更新应用于由客户端a 202访问的共享数据记录的版本,这基于客户端a202在请求204中请求的更新/更改产生第一修订数据记录(“rdr1”)208。由客户端a 202访问的共享数据记录的版本可以各种方式包括在请求204中、从数据储存库118中检索、从客户端a高速缓存220中检索、和/或从公共分类账120中检索。更改整合引擎106将第一修订数据记录208发送到规则应用引擎110以供进一步处理,如参考图1所描述的。
92.再次参考图2,在替代方法中,更改整合引擎106可以仅将第一修订数据记录208与客户端a 202访问的共享数据记录的版本之间的差异发送到规则应用引擎110,从而减少传送数据时的资源使用。
93.规则应用引擎110被配置为将规则集合(其可以包括一个或多个规则、条件、等效物、方程式、操作、过程等)应用于第一修订数据记录208,以确定针对共享数据记录的第二更新210。该第二更新210基于对客户端a 202访问的共享数据记录的版本的任何更改,以考虑对底层原始共享数据记录的此类更改。换句话说,作为应用第一更新的结果,需要第二更新210。此外,客户端a 202或多个客户端中的任何其它客户端(例如,客户端b 226、...、客户端n 228)不请求应用第二更新210。替代地,规则应用引擎110确定第一修订数据记录208是否遵守规则集合,如果它不遵守,那么规则应用引擎110生成第二更新210,该第二更新210在应用于第一修订数据记录208时,将导致第一修订数据记录208遵守规则集合。
94.一旦将规则集合应用于第一修订数据记录208,当认为合适时,就生成共享数据记录的第二更新210以根据将用于纠正由于客户端a202对共享数据记录的更新和/或更改而可能存在于第一修订数据记录208中的缺陷、误差、错误等的规则来更新共享数据记录。当由于规则应用引擎110应用规则而不存在对第一修订数据记录208的更改时,可以不需要这种第二更新210。在这种情况下,规则应用引擎110将保持第一修订数据记录208不变,并将其传输到客户端记录比较引擎114而不是第二修订数据记录214。
95.一旦第二更新由规则应用引擎110生成,第二更新210就被应用于第一修订数据记录208以产生第二修订数据记录(“rdr2”)214。
96.规则应用引擎110还可以被配置为将第二更新210存储到数据储存库118以供将来参考。在更多的方法中,规则应用引擎110可以存储第一修订数据记录208和/或第二修订数据记录214,以代替第二更新210或作为第二更新210的附加。
97.在客户端请求对共享数据记录进行更新但未提供任何更改,或者事件触发对共享数据记录的更新(诸如,由另一个客户端请求的更新)的情况下,规则应用引擎110被配置为从数据储存库118中提取共享数据记录(“patch”)212的最新版本(或如何创建最新版本的指示,例如,第二更新210)以便向请求客户端提供这样的数据记录。
98.规则应用引擎110还被配置为将第二修订数据记录214传输到客户端记录比较引擎114。如前所述,当由于应用规则而认为不需要第二更新210时,规则应用引擎110将第一修订数据记录208传输到客户端记录比较引擎114。
99.在一个或多个实施例中,客户端记录比较引擎114被配置为将第二修订数据记录214与客户端a 202访问的共享数据记录的版本进行比较以确定共享数据记录的两个版本之间的差异集合。一旦确定了这些差异,为了节省资源,指示这些差异的第一响应(“resp1”)216就可以被发送到客户端a 202。
100.客户端记录比较引擎114可以访问客户端a 202从客户端a高速缓存220访问的共享数据记录的版本。由于客户端a高速缓存220与客户端a 202存在先前交互(其中客户端a 202请求访问共享数据记录),客户端a高速缓存220将具有存储在其中的副本,并且在客户端a高速缓存220中创建条目,其存储或以其它方式指示共享数据记录的这个版本以供将来参考。
101.在实施例中,客户端记录比较引擎114可以在客户端a高速缓存220中存储第二修订数据记录214和/或第二修订数据记录214与客户端a 202访问的共享数据记录的版本之间所确定的差异以供将来参考。
102.在另一种方法中,对客户端a 202的第一响应216可以包括第二修订数据记录214,而不是第二修订数据记录214与客户端a 202访问的共享数据记录的版本之间所确定的差异。在这种方法或任何其它方法中,客户端记录比较引擎114可以在客户端a高速缓存220中存储第二修订数据记录214以供将来参考。
103.在各种方法中,当处理来自其它客户端(诸如客户端b 226)的请求时,更改整合引擎106可以从客户端b 226发送的请求(“req”)232、从数据储存库118、从客户端b高速缓存222和/或从公共分类账120中检索由客户端b 226访问的共享数据记录的版本。请求232可以是更改请求、更新请求或指示客户端b 226正在访问关于由其它客户端所做的更新/更改可能不是最新的共享数据记录的某种其它类型或形式的消息。
104.在一个或多个实施例中,客户端记录比较引擎114被配置为将第二修订数据记录214与客户端b 226访问的共享数据记录的版本进行比较以确定共享数据记录的两个版本之间的差异集合。一旦确定了这些差异,为了节省资源,就可以将指示这些差异的第二响应(“resp2”)218发送到客户端b 226。
105.响应于来自客户端b 226的对最新共享数据记录的请求232,客户端记录比较引擎114可以从客户端b高速缓存222访问由客户端b226访问的共享数据记录的版本。由于客户端b高速缓存222与客户端b 226存在先前交互(其中客户端b 226请求访问共享数据记录),客户端b高速缓存222将具有存储在其中的副本,并且在客户端b高速缓存222中创建条目,存储或以其它方式指示共享数据记录的这个版本以供将来参考。在一个或多个实施例中,客户端记录比较引擎114可以在客户端b高速缓存222中存储第二修订数据记录214和/或第二修订数据记录214与客户端b 226访问的共享数据记录的版本之间所确定的差异以供将来参考。
106.在另一种方法中,对客户端b 226的第二响应218可以包括第二修订数据记录214,而不是第二修订数据记录214与客户端b 226访问的共享数据记录的版本之间所确定的差异。在这种方法或任何其它方法中,客户端记录比较引擎114可以在客户端b高速缓存222中存储第二修订数据记录214以供将来参考。
107.图3图示了根据一个或多个实施例的协作数据记录管理系统300的功能块。多个客户端304与事件高速缓存分派模块306通信耦合,该模块充当分类账服务302的前端。事件高
速缓存分派模块306被配置为接收来自多个客户端304的请求,并且智能地将这些请求分派到一个或多个分类账310和视图状态机308。
108.一个或多个分类账310中的每一个被配置为存储由协作数据记录管理系统300管理并且能够由多个客户端304中的至少一个访问和修改的单个共享数据记录的未解决的更新/更改信息。在一种方法中,存储到各种分类账310的未解决的更新/更改信息包括尚未反映到正在由多个客户端304中的一个查看/访问的特定共享数据记录的版本的更改和/或更新。
109.在实施例中,分类账310的数量可以大约等于跨多个客户端304共享的数据记录的数量。在一个或多个实施例中,分类账310可以在接收到对共享数据记录中的一个的更新/更改时被创建,并且在协作数据记录管理系统300接收和/或识别这样的更新/更改之前可能不存在。在另一个实施例中,可以在(由于创建或者由于指示共享)建立其对应的共享数据记录时创建对应的分类账。
110.在一种实施方式中,每个分类账310可以存储由有权访问由协作数据记录管理服务器300管理的特定共享数据记录的每个特定客户端对特定共享数据记录所做的更改的日志。
111.查看状态机308被配置为确定和维护一个或多个共享数据记录中的特定客户端304被授权查看、访问和/或编辑的哪些完整记录和/或记录的哪些部分。换句话说,视图状态机308从一个或多个分类账310以及从事件高速缓存分派模块306接收信息,并且协调每个客户端当前正在访问的每个共享数据记录的状态,以确保仅在对各种共享数据记录进行更新和更改时特定客户端才被提供授权访问。
112.请求响应分派模块312从分类账310和视图状态机308接收输入,以便确定对各个客户端304中的每一个可用的所有共享数据记录的当前状态。一旦该信息被分类,请求响应分派模块312就将来自多个客户端304的请求以及任何有用和/或需要的信息(共享数据记录的状态或当前版本、不同客户端的访问/编辑特权、更新/更改等)转发到服务层314。
113.在服务层314中,来自请求响应分派模块312的信息在请求路由模块316处被接收,该请求路由模块316被配置为确定将各种信息(诸如来自多个客户端304中的一个的更新/更改请求)发送到何处。请求路由模块316被配置为将数据存储在共享数据高速缓存320和特定于客户端的视图状态高速缓存318中。共享数据高速缓存320包括用于应用于各种共享数据记录的规则,以及对处理客户端请求有用的任何其它信息。每个特定于客户端的状态高速缓存318存储特定于客户端的信息,该特定于客户端的信息跟踪和记录不同数据记录的视图状态、客户端访问和编辑特权等。
114.3.共享数据记录的协作数据记录管理
115.在实施例中,协作数据记录管理系统中的每个客户端可以访问与协作数据记录管理系统的许多客户端共享的特定数据记录。该特定共享数据记录可以由数据记录管理服务器管理,该数据记录管理服务器同时向多个客户端提供特定共享数据记录的副本或实例。
116.3.1接收更新/更改请求
117.在实施例中,协作数据记录管理系统中的每个客户端可以请求将更新和/或更改应用于特定的共享数据记录。
118.在一种方法中,该请求可以因对客户端之一的设备上的特定共享数据记录所做的
更改而触发,被称为更改请求。在另一种方法中,该请求可以由客户端打开和/或查看不是最新的特定共享数据记录的版本而触发,并且该动作导致客户端发送所谓的针对特定共享数据记录的更新请求。在任一情况下,该请求由数据记录管理服务器接收,并且包括可以用于确定该请求源自哪个客户端上的共享数据记录的当前状态或版本的信息,以及(在适用的情况下)由始发客户端请求的任何更新/更改。
119.例如,用户可以删除正在特定客户端处查看的表中的字段。一旦数据记录管理服务器被通知正在另一个客户端处查看/访问的实例已过时,那么该字段的删除将随后传播到正在由其它客户端查看和/或访问的表的所有其它实例。
120.3.2解决未决的更改
121.一旦在数据记录管理服务器处接收到请求、更新和/或更改,数据记录管理服务器就确定对于特定共享数据记录是否存在任何未决的更新/更改。这些未决的更新/更改可能由一个或多个其它客户端提交。当一个以上的客户端同时访问特定共享数据记录时,可能存在在多个客户端处生成相同数据记录的版本之间的差异。随着时间的推移,这些差异可能会变得非常大,并且如果被允许传播太久,可能非常难以协调。
122.因此,在实施例中,即使在具有打开的特定共享数据记录的每个客户端处没有对特定共享数据记录进行任何更改的情况下,该客户端也将发送更新请求,以便协调已在其它客户端处所做的未决的更新/更改。在接收到更新请求时,数据记录管理服务器可以发出响应,该响应包括客户端正在查看/访问的特定共享数据记录的版本与由数据记录管理服务器管理的最新版本之间的差异。
123.在一个或多个实施例中,数据记录管理服务器可以向当前或先前已访问特定共享数据记录的所有客户端发出定期消息。这些定期消息将是特定于客户端的,并指示每个单独的客户端正在查看/访问的特定共享数据记录的版本与由数据记录管理服务器管理的最新版本之间的差异。
124.3.3整合更改
125.在一种方法中,更改整合引擎可以在生成整合的更新之前简化任何未决的更新和来自请求的任何请求的更新和/或更改。这种简化可以包括但不限于移除重复的动作和/或操作、消除由于执行另一个动作和/或操作而没有实际意义的动作和/或操作、为对共享数据记录执行(一个或多个)更新所需的多个操作生成操作顺序、对操作顺序重新排序以减少执行(一个或多个)更新时的处理和/或资源使用等。
126.在实施例中,操作的顺序可以基于接收到更改和/或更新的时间,例如,fifo、filo、lifo等。在另一个实施例中,操作的顺序可以基于执行各种操作中的每个操作所需的资源使用情况,例如,消耗最少资源的操作可以在资源更密集的操作之前执行,反之亦然。在另一种方法中,操作的顺序可以基于更改和/或更新的确定的或隐含的优先级。
127.作为将所有未决的更新/更改与特定共享数据记录的更改请求中指示的更改进行整合的结果,生成整合的更新。一旦创建该整合的更新,它就可以应用于由提交更改请求的客户端访问的特定共享数据记录的版本,以便应用由该特定客户端和对特定共享数据记录具有编辑特权的所有其它客户端指示的所有更新和更改。
128.3.4对共享数据记录应用特定规则
129.在将所有请求的和未决的更新和/或更改应用于共享数据记录之后,使其通过规
则应用引擎以确保所得记录遵守特定规则。规则应用引擎可以应用规则来确定共享数据记录中的问题,然后生成可以应用于被配置为克服检测到的问题的共享数据记录的更新。
130.由于整合未决的更改和请求的更改并将它们应用于共享数据记录,由规则应用引擎生成的更新可能是需要或必需的。此外,由规则应用引擎生成的更新导致不是由任何客户端请求的,而是由规则本身规定的对共享数据记录的更改,并且这些更改可能独立于对共享数据记录所做的更改。
131.在一种方法中,规则可以针对确定所请求配置的可行性、计算定价、计算库存、配置产品和/或基于多个定价计算来确定配置产品的报价。
132.可以将规则分类为许多不同的类别,每个类别都针对数据记录的某个方面。例如,规则的一些类别可以包括组织和形式(formalities)、配置、定价和成本,以及用户授权和特权。
133.组织和形式规则可以检测和纠正由于客户端对数据记录做出看似非期望的更改而引起的任何问题。可能错误或意外做出的一些示例更改包括但不限于重复条目、删除重要内容、键入错误或拼写错误的条目、格式不一致、(一个或多个)错误语言等。这些类型的错误可以通过应用检查常见组织和格式问题的规则并应用已知解决方案来克服这些问题被检测到并进行纠正。
134.当共享数据记录针对某种物品、系统、设备或产品的配置时,配置规则可以检测并纠正由于客户端对数据记录做出导致错误、不可能或通常不可用的配置的更改而引起的任何问题。可能导致不可用的配置的一些示例更改包括但不限于指定不匹配的组件(例如,为螺母指定尺寸错误的螺栓、为台式计算机指定了移动电话电池等)、为整个系统指定不合适的组件(太弱而无法为单元供电的电池、太小而无法移动足够的空气来冷却处理器的风扇等)、指定不兼容的组件(例如,带有标准螺母的公制螺栓、ac电网中的dc风扇等)等。可以通过应用检查常见配置问题的规则并应用克服这些问题的已知解决方案来检测和纠正这些类型的错误。
135.定价和成本规则可以检测和纠正由于客户端对数据记录做出导致组件变化(从而增加或降低配置的物品、系统、设备或产品内的组件的成本)、组件数量变化(从而增加或降低成本因素的倍数)和/或配置的物品、系统、设备或产品的数量变化的更改而引起的任何问题。这可以是典型的配置-价格-报价机制和逻辑,其允许客户端各自对配置进行更改,然后该配置基于可用库存、定时要求、组件位置等进行定价和报价,以便生成针对配置的物品、系统、设备或产品的能够以所报价格进行生产的报价。
136.用户授权和特权规则可以检测并纠正由于基于做出更改的用户的身份、不允许某些更改的系统设置等而不允许的对数据记录的更改引起的任何问题。应用规则之后可能导致不允许的一些示例更改(例如,更改将不被允许进行并且共享数据记录将恢复到先前版本)包括但不限于没有删除特权的用户进行删除、没有管理员特权的用户更改数据记录的格式、来自组织的第一部分的客户端试图更改组织的第二部分拥有的数据记录等。可以通过应用检查常见用户授权和特权问题的规则并应用克服这些问题的已知解决方案来被检测并纠正这些类型的未经授权的更改。
137.在应用所有未决的和请求的更改之后应用于共享数据记录的规则不限于上述类别,因为根据规则应用引擎的体系架构师的期望,任何可设想类型的规则、算法、计算和操
作都可以应用于更新后的数据记录。
138.3.5向访问共享数据记录的特定客户端中继更新
139.当客户端正在访问特定共享数据记录时,其它客户端可以生成对特定共享数据记录的更新/更改。此外,可以修改由规则应用引擎应用的规则,从而导致特定共享数据记录需要更新。
140.在实施例中,为了在具有访问权限的所有客户端之间维持特定共享数据记录的一致性,可以将定期更新发送到正在主动访问特定共享数据记录的每个客户端。在另一个实施例中,可以向对特定共享数据记录具有访问特权的所有客户端发送定期更新,而不管与特定共享数据记录的任何当前活动。根据另一个实施例,可以向连接到数据记录管理服务器的每个客户端发送对由数据记录管理服务器管理的每个共享数据记录的定期更新。
141.然而,为了最小化处理和传输资源的使用,在实施例中,只有发送更新请求或更改请求的那些客户端将接收到更新由特定客户端在任何给定时间正在访问的特定共享数据记录的版本所需的信息。因为其它客户端没有发送请求,因此预计这些客户端没有使用这个特定的共享数据记录。此外,一旦特定共享数据记录在任何客户端上被打开和/或访问,该动作就可能触发更新请求被发送到数据记录管理服务器,从而导致特定共享数据记录被自动更新.
142.4.示例实施例
143.为了清楚起见,下面描述了详细的示例。下面描述的组件和/或操作应被理解为可能不适用于某些实施例的一个具体示例。因此,下面描述的组件和/或操作不应被解释为限制任何权利要求的范围。
144.4.1基于触发提供对共享数据记录的更新
145.图4图示了根据一个或多个实施例的用于基于触发的检测来提供对共享数据记录的更新的示例方法400。图4中所示的一个或多个操作可以被一起修改、重新布置或省略。因此,图4中所示的特定操作顺序不应被解释为限制一个或多个实施例的范围。
146.在操作402中,可以检测用于更新共享数据记录的一个或多个触发事件。响应于检测到(一个或多个)触发事件,方法400继续到操作404。否则,方法400继续等待在操作402中检测到触发事件中的一个。
147.(一个或多个)触发事件可以对应于和/或导致共享数据记录被更新,并且可以采取任何合适的形式、可检测的条件、状态和/或用于发起方法400的提示。一些示例触发事件包括但不限于客户端请求对共享数据记录的更新/更改、客户端请求访问共享数据记录、设备启动、设备关闭和/或休眠/睡眠、更改网络、添加或移除协作数据记录管理系统中的设备、接收对共享数据记录的更新/更改、打开数据记录、存储数据记录等。
148.(一个或多个)触发事件被满足的检测可以由能够进行这种检测的任何设备执行,其中设备包括但不限于以下中的一个:协作数据记录管理系统中的客户端、协作数据记录管理服务器、普通分类账等。
149.在操作404中,作为检测到(一个或多个)触发事件的结果,将至少一个更新和/或更改应用于共享数据记录。在一种方法中,更新/更改可以被包括在从协作数据记录管理系统的客户端中的一个客户端接收到的更改请求中。此外,更新/更改可以由协作数据记录管理系统的组件提供,并在客户端中的一个客户端访问共享数据记录时应用于共享数据记
录。
150.在一种方法中,对共享数据记录的更新/更改可以从公共分类账获得。公共分类账存储协作数据记录管理系统的每个特定客户端对由特定客户端访问的共享数据记录的版本所做的更新的日志。
151.在实施方式中,对共享数据记录的更新/更改可以从客户端高速缓存中获得。客户端高速缓存存储由请求客户端对共享数据记录所做的所有更新的合并视图以及由请求客户端正在访问的共享数据记录的当前版本的指示。
152.在操作406中,特定于协作数据记录管理系统的规则在应用更新/更改之后被应用于共享数据记录,以便生成记录的更新。这种基于规则的更新作为应用由客户端请求的先前更新/更改的结果是需要的和/或规定的,并且尚未被协作数据记录管理系统的任何客户端请求。
153.这些规则可以针对某些类型的数据记录,并且可以特定于请求客户端对共享数据记录所做的先前更新/更改。任何类型的商业程序、组织、格式、定价、成本分析、库存、计算、算法和/或操作都可以被包括在应用的规则中,如协作数据记录管理系统的体系架构师所期望的。
154.此外,可能存在许多不同的规则集合,其中一个规则集合被应用于一种类型的数据记录(例如,操作信息日志、传感器数据、生产和输出记录等),并且第二规则集合被应用于第二种类型的数据记录(例如,文字处理文档、电子表格等)。
155.在操作408中,将基于规则的更新应用于共享数据记录。当规则的应用没有导致对共享数据记录的任何进一步更新时,那么在操作408中不应用更新。
156.在操作410中,向对共享数据记录具有访问特权的至少一个客户端发送消息,该消息包括更新、更新后的数据记录或两者。(一个或多个)客户端可以利用更新后的数据记录来代替以前用来使其共享数据记录的当前视图最新的任何版本。
157.当仅发送更新时,(一个或多个)客户端可以使用更新来修改本地存储的共享数据记录的版本,以使其与由于应用规则而做出的最新更改保持最新。
158.4.2提供差异以基于更新请求更新共享数据记录
159.图5图示了根据一个或多个实施例的用于基于接收到来自客户端的请求来提供共享数据记录的差异的示例方法500。图5中所示的一个或多个操作可以被一起修改、重新布置或省略。因此,图5中所示的特定操作顺序不应被解释为限制一个或多个实施例的范围。
160.在操作502中,从协作数据记录管理系统中的客户端接收更新共享数据记录的请求。客户端可以请求更新共享数据记录、请求将更改应用于共享数据记录,或请求访问共享数据记录。该请求向协作数据记录管理系统指示该共享数据记录的任何未决的更改应该应用于其以更新在请求客户端上访问的版本。
161.在操作504中,确定对于共享数据记录是否已经存在任何未决的更改。未决的更改包括其它客户端已请求对同一共享数据记录的更新和/或更改,并且可以在应用于共享数据记录之前被聚合并简化为单个更新。
162.在操作506中,由于接收到请求并确定存在这样的未决的更改,未决的更改被应用于共享数据记录。在基于未决的更改生成更新之后,更新被应用于共享数据记录。但是,该更新可能导致对共享数据记录的非期望的和/或不允许的更改。因此,在操作508的方法中,
将规则应用于共享数据记录以确定所有更改是否适当和允许。
163.在一种方法中,对共享数据记录的未决的更改可以从公共分类账获得。公共分类账存储由协作数据记录管理系统的每个特定客户端对特定客户端访问的共享数据记录的版本所做的更新的日志。
164.在实施方式中,对共享数据记录的未决的更改可以从客户端高速缓存中获得。客户端高速缓存存储请求客户端对共享数据记录所做的所有更新的合并视图以及请求客户端正在访问的共享数据记录的当前版本的指示。
165.在操作508中,特定于协作数据记录管理系统的规则在应用基于未决的更改的更新之后被应用于共享数据记录,以便生成记录的更新。这种基于规则的更新作为应用由客户端请求的先前更新/更改的结果是需要的和/或规定的,并且尚未被协作数据记录管理系统的任何客户端请求。
166.这些规则可以针对某些类型的数据记录,并且可以特定于请求客户端对共享数据记录所做的先前更新/更改。任何类型的商业程序、组织、格式、定价、成本分析、库存、计算、算法和/或操作都可以被包括在应用的规则中,如协作数据记录管理系统的体系架构师所期望的。
167.此外,可能存在许多不同的规则集合,其中一个规则集合被应用于一种类型的数据记录(例如,操作信息日志、传感器数据、生产和输出记录等),并且第二规则集合被应用于第二种类型的数据记录(例如,文字处理文档、电子表格等)。
168.在操作510中,将基于规则的更新应用于共享数据记录。当规则的应用没有导致对共享数据记录的任何进一步更新时,那么在操作510中不应用更新。
169.在操作512中,确定由请求客户端访问的共享数据记录的版本与应用基于规则的更新之后的更新数据记录之间的差异。通过确定这些差异,并将它们存储为数据记录以用于更新请求客户端访问的共享数据记录的版本,在向请求客户端提醒对共享数据记录的更改时,可以节省处理能力和通信资源。在一种方法中,可以将差异发送到公共分类账以存储在其中。
170.在操作514中,向请求客户端发送消息,该消息包括差异和/或更新后的数据记录或两者。该消息可以发送给请求客户端之外的其它客户端,并且当更新后的数据记录被发出时,它可以被发送给任何客户端,用于在每个客户端处更新数据记录。当仅在消息中发送差异时,可以将它们发送给正在访问与请求客户端相同版本的共享数据记录的任何客户端,以便维持协作数据记录管理系统中所有客户端之间的一致性并修改本地存储的共享数据记录的版本,以使其与由于应用规则所做的最新更改保持最新。
171.请求客户端和接收消息的任何其它客户端可以利用更新后的数据记录来代替先前用来使它们的共享数据记录的当前视图最新的任何版本。
172.4.3提供差异以基于更改请求来更新共享数据记录
173.图6图示了根据一个或多个实施例的用于基于从客户端接收到更改请求来提供共享数据记录的差异的示例方法600。图6中所示的一个或多个操作可以被一起修改、重新布置或省略。因此,图6中所示的特定操作顺序不应被解释为限制一个或多个实施例的范围。
174.在操作602中,从协作数据记录管理系统中的客户端接收对共享数据记录应用更改的更改请求。客户端可以基于在客户端处执行的活动或出于客户端能够检测到的任何其
它原因请求将更改应用于共享数据记录。
175.在操作604中,确定对于共享数据记录是否存在任何未解决的更改。响应于发现这种未解决的更改,在操作606中访问公共分类账以获得共享数据记录的未解决的更改。在另外的方法中,未解决的更改也可以存储在特定于请求客户端的客户端高速缓存中,并且可以从除了公共分类账之外或不包括公共分类账的这个源中获得。
176.否则,方法600继续到操作608,其中未解决的更改(如果可用的话)可以与在操作602中接收到的请求中的所请求更改一起整合。此后,可以简化和/或以智能方式应用整合的更改,以减少资源消耗并确保从不同来源应用的更改的一致性(例如,使得在已删除的部分中不修改文本)。一旦未解决的更改被简化(如果可能的话),它们将被应用于共享数据记录,以根据所有请求的和未解决的更改来生成修订数据记录。
177.未解决的更改可以包括其它客户端已请求对同一共享数据记录的更新和/或更改、请求客户端指示的其它更改、由于应用规则而做出的修改等。修订数据记录可以包括对共享数据记录的非期望和/或不允许的更改。因此,在操作610中,将规则应用于修订数据记录来确定所有更改是否适当和允许。
178.在操作610中,特定于协作数据记录管理系统的规则被应用于修订数据记录以生成更新后的数据记录。这种基于规则的更新作为应用先前未解决的更改和由客户端请求的更新/更改的结果是需要的和/或规定的,并且尚未被协作数据记录管理系统的任何客户端请求。
179.这些规则可以针对某些类型的数据记录,并且可以特定于请求客户端对共享数据记录所做的先前更新/更改。任何类型的商业程序、组织、格式、定价、成本分析、库存、计算、算法和/或操作都可以被包括在应用的规则中,如协作数据记录管理系统的体系架构师所期望的。
180.此外,可能存在许多不同的规则集合,其中一个规则集合被应用于一种类型的数据记录(例如,操作信息日志、传感器数据、生产和输出记录等),并且第二规则集合被应用于第二种类型的数据记录(例如,文字处理文档、电子表格等)。
181.当规则的应用没有导致对修订数据记录的任何进一步更新时,那么修订数据记录在应用规则之后保持不变。
182.在操作612中,确定由请求客户端访问的共享数据记录的版本与应用基于规则的更新之后的更新数据记录之间的差异。通过确定这些差异,并将它们存储为数据记录以用于更新请求客户端访问的共享数据记录的版本,在向请求客户端提醒对共享数据记录的更改时,可以节省处理能力和通信资源。
183.在一种方法中,可以将差异发送到公共分类账以在其中存储。
184.在操作614中,向请求客户端发送消息,该消息包括差异和/或更新后的数据记录或两者。该消息可以发送给请求客户端之外的其它客户端,并且当更新后的数据记录被发出时,它可以被发送给任何客户端,用于在每个客户端处更新数据记录。当仅在消息中发送差异时,可以将它们发送给正在访问与请求客户端相同版本的共享数据记录的任何客户端,以便维持协作数据记录管理系统中所有客户端之间的一致性并修改本地存储的共享数据记录的版本,以使其与由于应用规则所做的最新更改保持最新。
185.请求客户端和接收消息的任何其它客户端可以利用更新后的数据记录来代替先
前用来使它们的共享数据记录的当前视图最新的任何版本。
186.5.计算机网络和云网络
187.在一个或多个实施例中,计算机网络提供节点集合之间的连接。节点可以在彼此本地和/或远离。节点通过一组链路连接。链路的示例包括同轴线缆、非屏蔽绞合线缆、铜缆、光纤和虚拟链路。
188.节点子集实现计算机网络。这样的节点的示例包括交换机、路由器、防火墙和网络地址转换器(nat)。另一个节点子集使用计算机网络。这样的节点(也称为“主机”或“客户端”)可以执行客户端进程和/或服务器进程。客户端进程做出对计算服务(诸如,特定应用的执行和/或特定量的数据的存储)的请求。服务器进程通过执行所请求的服务和/或返回对应的数据来响应。
189.计算机网络可以是物理网络,包括通过物理链路连接的物理节点。物理节点是任何数字设备。物理节点可以是特定于功能的硬件设备,诸如硬件交换机、硬件路由器、硬件防火墙和硬件nat。附加地或替代地,物理节点可以是被配置为执行各种虚拟机和/或执行相应功能的应用的通用机器。物理链路是连接两个或更多个物理节点的物理介质。链路的示例包括同轴线缆、非屏蔽绞合线缆、铜缆和光纤。
190.计算机网络可以是覆盖网络。覆盖网络是在另一个网络(诸如,物理网络)之上实现的逻辑网络。覆盖网络中的每个节点对应于底层网络中的相应节点。因此,覆盖网络中的每个节点与覆盖地址(寻址到覆盖节点)和底层地址(寻址实现覆盖节点的底层节点)两者相关联。覆盖节点可以是数字设备和/或软件进程(诸如虚拟机、应用实例或线程)。连接覆盖节点的链路被实现为通过底层网络的隧道。隧道任一端处的覆盖节点将它们之间的底层多跳路径视为单个逻辑链路。隧道处理(tunneling)通过封装和解封装来执行。
191.在实施例中,客户端可以位于计算机网络的本地和/或远离计算机网络。客户端可以通过其它计算机网络(诸如专用网络或互联网)访问计算机网络。客户端可以使用通信协议(诸如超文本传输协议(http))将请求传送到计算机网络。通过诸如客户端接口(诸如web浏览器)、程序接口或应用编程接口(api)之类的接口来传送请求。
192.在实施例中,计算机网络提供客户端和网络资源之间的连接。网络资源包括被配置为执行服务器进程的硬件和/或软件。网络资源的示例包括处理器、数据存储装置、虚拟机、容器和/或软件应用。网络资源在多个客户端之间共享。客户端彼此独立地从计算机网络请求计算服务。网络资源按需动态分配给请求和/或客户端。分配给每个请求和/或客户端的网络资源可以基于例如(a)由特定客户端请求的计算服务、(b)由特定租户请求的聚合计算服务和/或(c)计算机网络的所请求的聚合计算服务来扩大或缩小。这种计算机网络可以被称为“云网络”。
193.在实施例中,服务提供商向一个或多个最终用户提供云网络。云网络可以实现各种服务模型,包括但不限于软件即服务(saas)、平台即服务(paas)和基础设施即服务(iaas)。在saas中,服务提供商向最终用户提供使用服务提供商的正在网络资源上执行的应用的能力。在paas中,服务提供商向最终用户提供将定制应用部署到网络资源上的能力。可以使用由服务提供商支持的编程语言、库、服务和工具来创建定制应用。在iaas中,服务提供商向最终用户提供供应由网络资源提供的处理、存储、网络和其它基本计算资源的能力。可以在网络资源上部署任何任意应用,包括操作系统。
194.在实施例中,计算机网络可以实现各种部署模型,包括但不限于私有云、公共云和混合云。在私有云中,网络资源被供应给一个或多个实体的特定组独占使用(如本文所使用的术语“实体”是指企业、组织、个人或其它实体)。网络资源可以在特定实体组的处所本地和/或远离特定实体组的处所。在公共云中,云资源被供应给彼此独立的多个实体(也称为“租户”或“客户”)。计算机网络及其网络资源由与不同租户对应的客户端访问。这样的计算机网络可以被称为“多租户计算机网络”。若干租户可以在不同时间和/或相同时间使用相同的特定网络资源。网络资源可以在租户的处所本地和/或远离租户的处所。在混合云中,计算机网络包括私有云和公共云。私有云和公共云之间的接口允许数据和应用的可移植性。存储在私有云处的数据和存储在公共云处的数据可以通过接口交换。在私有云处实现的应用和在公共云处实现的应用可能具有彼此依赖性。可以通过接口执行从私有云处的应用到公共云处的应用的调用(反之亦然)。
195.在实施例中,多租户计算机网络的租户彼此独立。例如,一个租户的业务或操作可以与另一个租户的业务或操作分离。不同的租户可能对计算机网络具有不同的网络要求。网络要求的示例包括处理速度、数据存储量、安全要求、性能要求、吞吐量要求、时延要求、弹性要求、服务质量(qos)要求、租户隔离和/或一致性。相同计算机网络可能需要实现由不同租户所要求的不同网络要求。
196.在一个或多个实施例中,在多租户计算机网络中,实现租户隔离以确保不同租户的应用和/或数据彼此不共享。可以使用各种租户隔离方法。
197.在实施例中,每个租户与租户id相关联。多租户计算机网络的每个网络资源用租户id标记。仅当租户和特定网络资源与相同租户id相关联时,才允许该租户访问特定网络资源。
198.在实施例中,每个租户与租户id相关联。由计算机网络实现的每个应用用租户id标记。附加地或替代地,由计算机网络存储的每个数据结构和/或数据集用租户id标记。仅当租户和特定应用、数据结构和/或数据集与相同租户id相关联时,才允许租户访问特定应用、数据结构和/或数据集。
199.作为示例,由多租户计算机网络实现的每个数据库可以用租户id标记。只有与对应租户id相关联的租户才可以访问特定数据库的数据。作为另一个示例,由多租户计算机网络实现的数据库中的每个条目可以用租户id标记。只有与对应租户id相关联的租户才可以访问特定条目的数据。但是,数据库可以由多个租户共享。
200.在实施例中,订阅列表指示哪些租户有权访问哪些应用。对于每个应用,存储被授权访问该应用的租户的租户id列表。仅当租户的租户id被包含在与特定应用对应的订阅列表中时,才允许该租户访问特定应用。
201.在实施例中,与不同租户对应的网络资源(诸如数字设备、虚拟机、应用实例和线程)被隔离到由多租户计算机网络维护的特定于租户的覆盖网络。作为示例,来自租户覆盖网络中的任何源设备的分组可以仅被发送到相同租户覆盖网络内的其它设备。封装隧道用于禁止从租户覆盖网络上的源设备到其它租户覆盖网络中的设备的任何传输。具体而言,从源设备接收的分组被封装在外部分组内。外部分组从第一封装隧道端点(与租户覆盖网络中的源设备通信)发送到第二封装隧道端点(与租户覆盖网络中的目的地设备通信)。第二封装隧道端点对外部分组进行解封装,以获得由源设备发送的原始分组。原始分组从第
二封装隧道端点发送到相同特定覆盖网络中的目的地设备。
202.6.其它;扩展
203.实施例针对具有一个或多个设备的系统,该一个或多个设备包括硬件处理器并且被配置为执行本文描述的和/或以下权利要求中任一项所述的任何操作。
204.在实施例中,非暂态计算机可读存储介质包括指令,该指令在由一个或多个硬件处理器执行时,使得执行本文描述的和/或权利要求中任一项所述的任何操作。
205.根据一个或多个实施例,可以使用本文描述的特征和功能的任何组合。在前述说明书中,已经参考许多具体细节描述了实施例,这些具体细节可能因实施方案而不同。因此,应当在说明性而不是限制性的意义上看待说明书和附图。本发明范围的唯一且排他的指示以及申请人意在要作为本发明范围的是以由本技术产生的一组权利要求的具体形式的所产生权利要求的字面和等同范围,包括任何后续的校正。。
206.7.硬件概述
207.根据一个实施例,本文描述的技术由一个或多个专用计算设备来实现。专用计算设备可以是硬连线的以执行本技术,或者可以包括被永久性地编程以执行本技术的数字电子设备,诸如一个或多个专用集成电路(asic)、现场可编程门阵列(fpga)或网络处理单元(npu),或者可以包括被编程为根据固件、存储器、其它存储装置或组合中的程序指令执行本技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、asic、fpga或npu与定制的编程组合来实现本技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或结合硬连线和/或程序逻辑来实现技术的任何其它设备。
208.例如,图7是图示可以在其上实现本发明的实施例的计算机系统700的框图。计算机系统700包括总线702或用于传送信息的其它通信机制,以及与总线702耦合用于处理信息的硬件处理器704。硬件处理器704可以是例如通用微处理器。
209.计算机系统700还包括耦合到总线702用于存储信息和要由处理器704执行的指令的主存储器706,诸如随机存取存储器(ram)或其它动态存储设备。主存储器706也可以用于存储在要由处理器704执行的指令的执行期间的临时变量或其它中间信息。这种指令当被存储在处理器704可访问的非暂态存储介质中时,使得计算机系统700成为被定制用于执行指令中指定的操作的专用机器。
210.计算机系统700还包括耦合到总线702用于存储静态信息和处理器704的指令的只读存储器(rom)708或其它静态存储设备。诸如磁盘或光盘之类的存储设备710被提供并且被耦合到总线702,以用于存储信息和指令。
211.计算机系统700可以经由总线702耦合到用于向计算机用户显示信息的显示器712,诸如阴极射线管(crt)。包括字母数字键和其它键的输入设备714耦合到总线702,用于将信息和命令选择传送到处理器704。另一种类型的用户输入设备是光标控件716,诸如鼠标、轨迹球或光标方向键,用于向处理器704传送方向信息和命令选择并且用于控制显示器712上的光标移动。这种输入设备典型地具有两个轴(第一轴(例如,x)和第二轴(例如,y))上的两个自由度,以允许设备在平面中指定位置。
212.计算机系统700可以使用定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑来实现本文描述的技术,该定制的硬连线逻辑、一个或多个asic或fpga、固件和/
或程序逻辑与计算机系统结合使计算机系统700成为专用机器或将计算机系统700编程为专用机器。根据一个实施例,本文的技术由计算机系统700响应于处理器704执行主存储器706中包含的一条或多条指令的一个或多个序列而执行。这些指令可以从另一个存储介质(诸如存储设备710)读取到主存储器706中。在主存储器706中包含的指令序列的执行使处理器704执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路系统代替软件指令或与软件指令组合使用。
213.如本文使用的术语“存储介质”是指存储有使机器以特定方式操作的数据和/或指令的任何非暂态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备710。易失性介质包括动态存储器,诸如主存储器706。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁性数据存储介质、cd-rom、任何其它光学数据存储介质、具有孔图案的任何物理介质、ram、prom和eprom、flash-eprom、nvram、任何其它存储器芯片或盒式磁带、内容可寻址存储器(cam)和三态内容可寻址存储器(tcam)。
214.存储介质与传输介质不同但可以与传输介质结合使用。传输介质参与在存储介质之间传递信息。例如,传输介质包括同轴线缆、铜线和光纤,包括包含有总线702的引线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信期间生成的那些波。
215.各种形式的介质可以涉及将一条或多条指令的一个或多个序列携带到处理器704以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统700本地的调制解调器可以在电话线上接收数据并使用红外线发射器将数据转换为红外线信号。红外线检测器可以接收红外线信号中携带的数据,并且适当的电路系统可以将数据放置在总线702上。总线702将数据携带到主存储器706,处理器704从主存储器706中检索并执行指令。由主存储器706接收的指令可以可选地在由处理器704执行之前或之后存储在存储设备710上。
216.计算机系统700还包括耦合到总线702的通信接口718。通信接口718提供耦合到网络链路720的双向数据通信,其中网络链路720连接到本地网络722。例如,通信接口718可以是综合业务数字网络(isdn)卡、线缆调制解调器、卫星调制解调器、或向对应类型的电话线提供数据通信连接的调制解调器。作为另一个示例,通信接口718可以是提供到兼容的局域网(lan)的数据通信连接的lan卡。也可以实现无线链路。在任何这种实现中,通信接口718发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
217.网络链路720典型地通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路720可以通过本地网络722提供到主计算机724或到由互联网服务提供商(isp)726操作的数据设备的连接。isp 726进而通过现在通常称为“互联网”728的全球分组数据通信网络提供数据通信服务。本地网络722和互联网728两者都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路720上并且通过通信接口718的信号是传输介质的示例形式,这些信号将数字数据携带到计算机系统700或携带来自计算机系统700的数字数据。
218.计算机系统700可以通过(一个或多个)网络、网络链路720和通信接口718发送消
息和接收数据,包括程序代码。在互联网示例中,服务器730可以通过互联网728、isp 726、本地网络722和通信接口718传输对于应用程序的所请求代码。
219.接收到的代码可以在它被接收时由处理器704执行,和/或存储在存储设备710或其它非易失性存储装置中以供以后执行。
220.在前述说明书中,已经参考许多具体细节描述了本发明的实施例,这些具体细节可能因实施方案而不同。因此,应当在说明性而不是限制性的意义上看待说明书和附图。本发明范围的唯一且排他的指示以及申请人意在要作为本发明范围的是以由本技术产生的一组权利要求的具体形式的所产生权利要求的字面和等同范围,包括任何后续的校正。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1