CN114746854A - 移动客户端应用中数据提供者不可知的变更处置 - Google Patents
移动客户端应用中数据提供者不可知的变更处置 Download PDFInfo
- Publication number
- CN114746854A CN114746854A CN202080083653.4A CN202080083653A CN114746854A CN 114746854 A CN114746854 A CN 114746854A CN 202080083653 A CN202080083653 A CN 202080083653A CN 114746854 A CN114746854 A CN 114746854A
- Authority
- CN
- China
- Prior art keywords
- remote service
- service provider
- data
- action
- change
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/2854—Wide area networks, e.g. public data networks
- H04L12/2856—Access arrangements, e.g. Internet access
- H04L12/2869—Operational details of access network equipments
- H04L12/287—Remote access server, e.g. BRAS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/50—Service provisioning or reconfiguring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在一个实施例中,移动客户端应用中的变更处置可以通过使用数据提供者不可知的变更对象模式的变更的中间存储来促进。在移动设备上接收指示对存储在远程数据存储库中的数据对象的创建、更新或删除动作的输入。响应于接收到输入,以用于与远程数据存储库交互的远程服务提供者的类型不可知的语法创建对数据对象的动作的描述。将动作的描述转换成第一远程服务提供者的语法,以编写被配置为使第一远程服务提供者执行动作的命令。通过网络将命令传输到第一远程服务提供者以使得对远程数据存储库中的数据对象执行动作。
Description
背景技术
托管在移动客户端设备上的软件应用(“移动应用”)通常通过网络与托管在后端服务器上的后端(或其他远程)数据提供者交互以访问和操纵存储在后端数据库中的应用数据。例如,当(i)客户端设备和后端服务器之间的网络连接差或不存在,或(ii)后端服务器无响应或不可用时,移动应用无法与后端数据提供者交互。
常常,当移动应用不能与后端数据提供者交互时,移动应用的用户期望访问和操纵应用数据。因此,应用特征可以包括以“离线模式”操作的能力,这允许移动应用在不与后端数据提供者联系的情况下在移动客户端设备上本地访问和操纵应用数据。对应用数据的变更在本地持久保存在移动客户端设备上并在与后端数据提供者的交互恢复时与后端数据库同步。这可以被称为“离线写入”或“延迟写入访问”。
目前,当移动应用在处于离线模式时尝试更新数据时,以与特定于后端数据提供者的模式紧密耦合的方式将变更持久保存在离线(本地)数据存储装置中。虽然这个模型有效,但是当存在具有实体的各种各样且不相似的结构表示的多个此类后端数据提供者时,它无法扩展。以紧密遵循后端数据提供者模式的方式存储变更的移动应用无法连接到多个数据提供者,每个数据提供者具有表示对象的独特模式。它们也不能在运行时被更改以适应针对业务过程定制的新实体、关系和特征。另外,如果在移动应用离线时更新远程系统并且该更新改变用于变更的模式或结构,那么存储的变更可能无效并造成同步失败。在特定于远程提供者的模式或结构中存储变更常常是有损的,并且可能不可能重构原始变更或将存储的变更改转换成不同的格式。因此,存储在特定于一个特定远程提供者的模式或结构中的离线变更具有明显的缺点。
发明内容
在一个实施例中,一种计算机实现的方法,包括:在移动设备上接收指示对存储在远程数据存储库中的数据对象的创建、更新或删除动作的输入;响应于接收到输入,以用于与远程数据存储库交互的远程服务提供者的类型不可知的语法创建对数据对象的动作的描述;将动作的描述转换成第一远程服务提供者的语法,以编写被配置为使第一远程服务提供者执行动作的命令;以及通过网络将命令传输到第一远程服务提供者以使得对远程数据存储库中的数据对象执行动作。
在一个实施例中,计算机实现的方法还包括:确定第一远程服务提供者不可用于接收命令;将动作的描述存储在移动设备上;以及延迟编写命令,直到移动设备接收到第一远程服务提供者可用的指示。
在一个实施例中,计算机实现的方法还包括确定第二远程服务提供者不可用于接收命令,其中响应于确定第二远程服务提供者不可用于接收命令而执行以第一远程服务提供者的语法编写命令并将命令传输到第一远程服务提供者。
在一个实施例中,计算机实现的方法还包括从多于一个远程服务提供者的集合当中选择第一远程服务提供者,每个远程服务提供者都能够访问远程数据存储库,其中选择是基于第一远程服务提供者满足一个或多个准则的,该一个或多个准则包括(i)远程服务提供者的当前可用性和(ii)动作的复杂性中的至少一个。
在一个实施例中,计算机实现的方法,其中对数据对象的动作的描述的不可知语法包括:对于动作改变的数据对象的每个属性,(i)对该属性的改变是“更新”、“删除”或“创建”动作之一的指示,以及(ii)在改变是“更新”或“创建”动作的情况下,该属性的新值的指示;对于动作改变的数据对象的每个子对象,(i)该子对象是子对象的指示,(ii)对子对象的改变是“更新”、“删除”或“创建”动作之一的指示;(iii)子对象的主键的值的指示,以及(iv)对该子对象的改变的指示,其中改变的指示是使用不可知语法来描述的。
在一个实施例中,计算机实现的方法,其中第一远程服务提供者的语法被存储在移动设备中,还包括从第一远程服务提供者检索数据对象的类型的语义的描述,其中将动作的描述转换成第一远程服务提供者的语法是基于检索到的语义的描述的。
在一个实施例中,一种存储计算机可执行指令的非暂态计算机可读介质,计算机可执行指令在至少由计算机的处理器执行时使计算机:在移动设备上接收指示对存储在远程数据存储库中的数据对象的创建、更新或删除动作的输入;响应于接收到输入,以用于与远程数据存储库交互的远程服务提供者的类型不可知的语法创建对数据对象的动作的描述;将动作的描述转换成第一远程服务提供者的语法,以编写被配置为使第一远程服务提供者执行动作的命令;以及通过网络将命令传输到第一远程服务提供者以使得对远程数据存储库中的数据对象执行动作。
在一个实施例中,非暂态计算机可读介质还包括指令,指令在至少由处理器执行时使计算机:确定第一远程服务提供者不可用于接收命令;将动作的描述存储在移动设备上;以及延迟编写命令,直到移动设备接收到第一远程服务提供者可用的指示。
在一个实施例中,非暂态计算机可读介质还包括指令,指令在至少由处理器执行时使计算机确定第二远程服务提供者不可用于接收命令,其中响应于确定第二远程服务提供者不可用于接收命令而执行以第一远程服务提供者的语法编写命令并将命令传输到第一远程服务提供者。
在一个实施例中,非暂态计算机可读介质还包括指令,指令在至少由处理器执行时使计算机从多于一个远程服务提供者的集合当中选择第一远程服务提供者,每个远程服务提供者都能够访问远程数据存储库,其中选择是基于第一远程服务提供者满足一个或多个准则的,该一个或多个准则包括(i)远程服务提供者的当前可用性和(ii)动作的复杂性中的至少一个。
在一个实施例中,非暂态计算机可读介质,其中对数据对象的动作的描述的不可知语法包括:对于动作改变的数据对象的每个属性,(i)对该属性的改变是“更新”、“删除”或“创建”动作之一的指示,以及(ii)在改变是“更新”或“创建”动作的情况下,该属性的新值的指示;对于动作改变的数据对象的每个子对象,(i)该子对象是子对象的指示,(ii)对子对象的改变是“更新”、“删除”或“创建”动作之一的指示;(iii)子对象的主键的值的指示,以及(iv)对该子对象的改变的指示,其中改变的指示是使用不可知语法来描述的。
在一个实施例中,非暂态计算机可读介质,其中第一远程服务提供者的语法被存储在移动设备中,还包括指令,指令在至少由处理器执行时使计算机从第一远程服务提供者检索数据对象的类型的语义的描述,其中将动作的描述转换成第一远程服务提供者的语法是基于检索到的语义的描述的。
在一个实施例中,一种计算系统,包括:处理器;存储器,可操作地连接到处理器;非暂态计算机可读介质,可操作地连接到处理器和存储器并存储计算机可执行指令,计算机可执行指令在至少由处理器执行时使计算系统:在移动设备上接收指示对存储在远程数据存储库中的数据对象的创建、更新或删除动作的输入;响应于接收到输入,以用于与远程数据存储库交互的远程服务提供者的类型不可知的语法创建对数据对象的动作的描述;将动作的描述转换成第一远程服务提供者的语法,以编写被配置为使第一远程服务提供者执行动作的命令;以及通过网络将命令传输到第一远程服务提供者以使得对远程数据存储库中的数据对象执行动作。
在一个实施例中,计算系统,其中权利要求的非暂态计算机可读介质还包括指令,指令在至少由处理器执行时使计算系统确定第一远程服务提供者不可用于接收命令;将动作的描述存储在移动设备上;以及延迟编写命令,直到移动设备接收到第一远程服务提供者可用的指示。
在一个实施例中,计算系统,其中权利要求的非暂态计算机可读介质还包括指令,指令在至少由处理器执行时使计算系统确定第二远程服务提供者不可用于接收命令,其中响应于确定第二远程服务提供者不可用于接收命令而执行以第一远程服务提供者的语法编写命令并将命令传输到第一远程服务提供者。
在一个实施例中,计算系统,其中权利要求的非暂态计算机可读介质还包括指令,指令在至少由处理器执行时使计算系统从多于一个远程服务提供者的集合当中选择第一远程服务提供者,每个远程服务提供者都能够访问远程数据存储库,其中选择是基于第一远程服务提供者满足一个或多个准则的,该一个或多个准则包括(i)远程服务提供者的当前可用性和(ii)动作的复杂性中的至少一个。
在一个实施例中,计算系统,其中对数据对象的动作的描述的不可知语法包括:对于动作改变的数据对象的每个属性,(i)对该属性的改变是“更新”、“删除”或“创建”动作之一的指示,以及(ii)在改变是“更新”或“创建”动作的情况下,该属性的新值的指示;对于动作改变的数据对象的每个子对象,(i)该子对象是子对象的指示,(ii)对子对象的改变是“更新”、“删除”或“创建”动作之一的指示;(iii)子对象的主键的值的指示,以及(iv)对该子对象的改变的指示,其中改变的指示是使用不可知语法来描述的。
在一个实施例中,计算系统,其中第一远程服务提供者的语法被存储在移动设备中,还包括指令,指令在至少由处理器执行时使计算系统从第一远程服务提供者检索数据对象的类型的语义的描述,其中将动作的描述转换成第一远程服务提供者的语法是基于检索到的语义的描述的。
附图说明
结合在本说明书中并构成其一部分的附图图示了本公开的各种系统、方法和其它实施例。将认识到的是,图中所图示的元件边界(例如,框、框的组、或者其它形状)表示边界的一个实施例。在一些实施例中,一个元件可以被实现为多个元件,或者多个元件可以被实现为一个元件。在一些实施例中,示为另一个元件的内部组件的元件可以被实现为外部组件,并且反之亦然。此外,元件可能不是按比例绘制的。
图1图示了与移动客户端应用中的数据提供者不可知的变更处置相关联的系统的一个实施例。
图2图示了与系统可以在其中操作的移动客户端应用中的数据提供者不可知的变更处置相关联的环境的一个实施例。
图3图示了用于与移动客户端应用中的数据提供者不可知的变更处置相关联的数据提供者不可知的变更对象的模式的一个实施例。
图4图示了描述对示例行对象实例进行的各种变更的示例数据提供者不可知变更对象实例。
图5图示了与移动客户端应用中的数据提供者不可知的变更处置相关联的方法的一个实施例。
图6图示了与移动客户端应用中使用数据提供者不可知的变更处置的延迟写入访问相关联的方法的一个实施例。
图7图示了与移动客户端应用中使用数据提供者不可知的变更处置的通过多个远程服务提供者的延迟写入访问相关联的方法的一个实施例。
图8图示了与移动客户端应用中使用数据提供者不可知的变更处置的通过可选择的替代服务提供者的延迟写入访问相关联的方法的一个实施例。
图9图示了配置有所公开的示例系统和/或方法的计算系统的实施例。
图10图示了配置有所公开的示例系统和/或方法的移动设备的实施例。
具体实施方式
本文描述了在移动客户端应用中提供数据提供者不可知的变更处置的系统和方法。数据提供者不可知的变更处置克服了在符合后端数据提供者的模式的模式中高速缓存数据以进行离线写入的限制。代替地,在一个实施例中,实现了数据提供者不可知的变更对象以捕获来自移动应用的更新。(为方便起见,数据提供者不可知的变更对象在本文中可以简称为“变更对象”。)
数据提供者不可知的变更对象允许客户端设备上的移动应用提供访问以独立于它在后端服务器上连接到的远程服务提供者来调整、重新组织、校正和合并数据和特征。数据提供者不可知的变更对象使得移动应用能够(i)向用户呈现本地数据的逻辑一致视图,以及(ii)将各个用户动作维护为可以被单独跟踪、应用和缓解的事务。
在一个实施例中,移动应用被定义为包括数据存储模型,客户端设备可以解释和使用该数据存储模型以存储和访问数据和特征,而没有与后端服务器的连接。此外,移动应用实现了以独特且提供者本身不可知的方式将对这个数据的变更存储到存储模型中的一种算法。在一个示例中,这可以是数据提供者不可知的变更对象。而且,移动应用实现了变更解析器,它将在变更被同步时被更新的数据转换成数据提供者的格式。
数据存储模型包括在请求上指定的唯一标识符,该唯一标识符被包括在来自服务器的响应中并且被用于将那个组件片段存储在本地存储库中并且被用于从已经改变的集合中识别特定记录。
在一个实施例中,呈现了一种用于在离线同步模型内定义对象和数据提供者不可知的变更处置机制的方法和系统。移动设备存储在连接或断开连接时所做的用户变更,并在稍后的时间状态与远程服务器同步。移动设备以优化数据存储和实时无缝的数据合并的方式更新存储器中定义的表的组合。请求作为由第一通用标识符识别出的位置存储在存储器中。该请求构成了遵循自定义的、数据提供者不可知的模式的变更,并且将包含键的集合,每个键描述与变更本身一起执行的操作。在被本地客户端检索后,经修改的数据与对象的原始状态合并,以在应用中提供一致的本地视图,同时维护可以按记录的次序分开应用、取消或缓解的各个事务。在提交到远程服务器之前,变更数据被变换成由远程服务提供者支配的格式,从而使模型与远程系统松散耦合。
根据本文描述的系统和方法配置的移动应用呈现出相对于现有移动应用实现的显著改进。根据本文描述的系统和方法配置的移动应用的多态行为允许数据变更(变更对象)的记录在对象被创建时不被绑定到特定模式。代替地,数据变更的记录用通用模式表示,并在对象在运行时被同步时变换成不同模式,以便即时处理对应用定义的变更。与使用静态预定义模型将对象持久保存到对象的状态的现有应用相比,这是独特的。
根据本文描述的系统和方法配置的移动应用还呈现出显著的优点。用户进行变更时创建的变更数据对象独立于远程服务器上对象的模式。在一个示例中,可以基于从多种不同类型的后端数据提供者或其它服务器检索到的信息使系统保持最新。例如,一个数据提供者可以将数据表示为复杂的图形,而另一个数据提供者可以将数据表示为简单的分层实体-实体关系。一般而言,客户端上的修改按原样被高速缓存,从而符合特定的明确定义的形状。通过使用方法和系统来定义数据提供者不可知的变更对象以从应用中捕获更新,来解决这个问题。这个模型允许客户端应用提供访问以调整、重新组织、校正和合并数据和特征,而与它连接到的服务器上的远程提供者无关。这个模型能够向用户呈现本地数据的逻辑一致视图并将各个用户动作作为可以被单独跟踪、应用和缓解的事务来维护。
在一个实施例中,变更对象包括键的集合,每个键描述与变更本身一起被执行的操作。在提交到远程服务器之前,变更数据被变换成由远程服务提供者支配的格式,从而使模型与远程系统松散耦合。
—用于数据提供者不可知的变更处置的示例系统—
图1图示了与移动客户端应用中的数据提供者不可知的变更处置相关联的系统100的一个实施例。在客户端侧105,系统100包括移动应用110。移动应用110包括用户界面115、事务处置程序120和持久性管理器125。移动应用110还包括一个或多个数据提供者130以与服务器侧135的各种远程服务提供者131对接。数据提供者130可以包括用于与远程XML提供者141对接的XML数据提供者140。数据提供者130可以包括用于与远程图形查询提供者146对接的图形查询数据提供者145。数据提供者130可以包括用于与远程REST提供者151对接的REST数据提供者150。数据提供者130可以包括用于与远程弹性提供者156对接的弹性数据提供者155。数据提供者130还可以包括被配置为与其它远程服务提供者161对接的其它数据提供者160。数据提供者130通过使用各种网络通信协议的在网络上的电子通信与远程服务提供者131对接。远程服务提供者131连接到与移动应用110相关联的数据存储库165。事务处置程序120包括数据管理器170、变更数据构造器175和事务处理器180。在一个实施例中,系统100的每个组件可以被实现为模块。
在一个实施例中,移动应用110是用于访问和操纵存储在数据存储库165中的数据的客户端应用。例如,移动应用110可以是用于在数据存储库165上托管数据并通过远程服务提供者131提供一项或多项服务的企业销售和服务工具的客户端应用。在一个实施例中,移动应用110是CX移动客户端。客户端应用可以从移动应用的第三方分发商(诸如Play商店或商店)下载,或者从与销售和服务工具的运营商相关的系统下载。移动应用110然后可以例如由销售人员或服务人员用来浏览销售机会或服务请求,在工具中创建新的销售机会,在工具中提交服务请求,查找与联系信息相关的销售机会或服务请求,或执行在数据存储库165中创建、读取、更新或删除信息的其它操作。
在一个实施例中,移动应用110通过对远程服务提供者131的应用编程接口(API)请求来请求工具中数据操作的执行。在一个实施例中,请求是去往和来自web服务器的请求(诸如使用JavaScript对象表示法(JSON)作为数据交换格式的远程表示状态传输(REST)请求),对于远程图形查询提供者146、REST提供者151和远程弹性提供者156可以是这样的。在一个实施例中,请求是去往和来自XML服务器(诸如远程xml提供者141)的SOAP请求。移动应用110被配置为在移动应用110和数据存储库165之间的连接性受限或不存在时执行支持离线写入或延迟写入访问的操作。移动应用110可以使用持久性管理器125将从数据存储库165检索到的数据存储在本地高速缓存中。当客户端侧105和服务器侧135之间的连接性受限或不存在时,本地高速缓存中的数据可以由移动应用110的用户操纵,并且稍后在连接性恢复时与服务器侧同步。
在一个实施例中,用户界面115是针对移动应用110的图形用户界面(GUI)。GUI可以包括用户界面元素,诸如图像、容器窗口、浏览器窗口、文本终端窗口、对话框、下拉菜单、响应于用户与图形用户界面的交互而变得可见的上下文菜单、图标、按钮、单选按钮、复选框。GUI可以接受来自移动应用110的用户的输入,例如通过在触摸屏上的鼠标点击或轻击、来自物理或虚拟键盘的击键,或语音到文本的输入。用户的输入可以通过用户界面元素被接受。用户的输入可以描述或指示对数据对象(诸如行对象)的创建、读取、更新或删除操作。数据对象的内容中的一些或全部可以通过用户界面115被读取并显示给用户。由输入描述的操作或动作可以被用于远程存储在数据存储库165中或由持久性管理器125本地存储的数据对象。由通过用户界面115的用户输入描述的创建、更新或删除操作被呈现给数据管理器170以供进一步处理。
在一个实施例中,事务处置程序120包括指示数据管理器完成由用户录入的创建、更新或删除操作的“提交”或“保存”功能。在一个实施例中,用户界面115包括按钮或其它界面元素,响应于用户的选择,该按钮或其它界面元素发起事务处置程序120的“提交”或“保存”功能。
在一个实施例中,变更数据构造器175操作以创建数据提供者不可知的变更对象以描述特定事务(包括创建、更新或删除数据操作)。该事务可以是由通过用户界面115的用户输入描述的事务。在一个实施例中,变更数据构造器175响应于“提交”或“保存”功能的执行(例如,响应于指示选择“提交”或“保存”功能的用户输入而被执行)而创建数据提供者不可知的变更对象。
在一个实施例中,数据管理器170确定事务将被路由到哪里,无论是本地的还是远程提供者,并且进一步确定将使用哪个提供者。例如,在客户端侧105和服务器侧135之间存在连接性的情况下,数据管理器170将通过“提交”或“保存”功能创建的变更对象路由到服务器侧135以实现由数据存储库165中的变更对象描述的变更。数据管理器170为路由选择适当的数据提供者130,并将变更对象发送到该数据提供者130以转换成特定于相关联的远程服务提供者131的模式。或者,例如,在客户端侧105和服务器侧135之间存在有限的连接性或没有连接性的情况下,数据管理器170将通过“提交”或“保存”功能创建的变更对象路由到持久性管理器125以本地存储,直到连接性恢复。或者,在另一个示例中,在事务将被路由到的远程服务提供者131具有低可用性或没有处理请求的能力的情况下,数据管理器170将把通过“提交”或“保存”功能创建的变更对象路由到持久性管理器125以本地存储,直到可用性恢复。在另外的示例中,在事务将被路由到的远程服务提供者131具有低可用性或没有处理请求的能力的情况下,数据管理器170将通过不同的数据提供者130通过“提交”或“保存”功能创建的变更对象路由到也能够处理事务的不同的相关联的远程服务提供者。
在一个实施例中,在(i)客户端侧105和服务器侧135之间的连接性不可用或受限,或者(ii)一个或多个远程服务提供者131具有低可用性或没有处理请求的能力时,事务作为数据提供者不可知的变更对象本地存储在持久性管理器125中,用于稍后与数据存储库165同步。事务处理器180维护本地存储的每个数据提供者不可知的变更对象的列表,例如作为存储器中的数据结构。该列表维护变更对象的时间次序。当连接性或可用性恢复时,事务处理器180从持久性管理器125检索本地存储的变更对象。事务处理器实行影响同一行对象的变更对象的时间次序,以防止竞争条件错误。事务处理器180确定如何将事务请求路由到服务器侧135以实现由数据存储库165中的变更对象描述的变更。事务处理器180为路由选择适当的数据提供者130,并将变更对象发送到该数据提供者130以转换成特定于相关联的远程服务提供者131的模式。
在一个实施例中,每个数据提供者130操作以使用特定于数据提供者的相应远程提供者131的模式或结构来创建实现由接收到的变更对象描述的变更的指令。每个数据提供者130维护用于与数据提供者的相应远程提供者131交互的语法副本。每个数据提供者130维护由数据提供者的相应远程提供者131接受的数据类型的定义的副本。在一个实施例中,语法和定义通过持久性管理器125在本地存储装置中被维护。每个数据提供者130操作以创建使用用于数据提供者的相应远程提供者131的适当语法和数据类型来实现变更的指令。
例如,响应于从数据管理器170或事务处理器180接收到变更对象,REST数据提供者150使用事务的特定于远程REST提供者的描述来创建实现由变更对象描述的变更的指令。例如,可以创建具有描述远程REST提供者151对特定于REST数据提供者150的模式的改变的有效载荷的REST请求。REST数据提供者150将由变更对象描述的动作转换成按用于与远程REST提供者交互的语法的指令,以用于修改由远程REST提供者的定义描述的数据类型的对象。REST请求然后可以由REST数据提供者150通过系统100的客户端侧105和服务器侧135之间的网络连接传输到远程REST提供者151。
在一个实施例中,远程服务提供者131是系统100的数据库或数据存储库165顶部的接口(诸如API)。远程服务提供者接受(来自数据提供者130的)API请求并在数据存储库165上执行查询以实现这些请求。远程服务提供者131还可以将通过数据提供者130从数据存储库165检索到的信息返回到远程应用110以用于各种目的,诸如通过用户界面115显示。
在一个实施例中,远程服务提供者131都可以访问系统100上的(来自数据存储库165的)相同数据。但是,不同的远程服务提供者131可以不共享相同的能力。有些可能根本不接受帖子(post),有些可能接受某些变更的帖子,但不接受其它变更的帖子。在一种情况或另一种情况下,一些远程服务提供者131可以更加注重性能。
在一个实施例中,服务器侧135可以远离客户端侧105定位。如上面所讨论的,客户端侧105和服务器侧135之间的连接可以是间歇性的。在客户端侧105已经与服务器侧135失去通信的情况下,数据提供者130和远程服务提供者131操作以同步由移动应用110执行的数据操作(诸如创建、更新和删除操作)。
—用于数据提供者不可知的变更处置的示例环境—
图2图示了与系统100可以在其中操作的移动客户端应用中的数据提供者不可知的变更处置相关联的环境200的一个实施例。移动应用105可以安装在任何客户端计算设备205上。移动应用105的安装使客户端计算设备205包括数据提供者不可知的变更处置逻辑。客户端计算设备205可以包括诸如服务器210、工作站215、膝上型计算机220、智能电话225、平板计算机或个人数字助理(PDA)230或其它计算设备之类的设备。客户端计算设备205通过有线或无线连接连接到电子通信网络235(诸如互联网)。网络235通过有线或无线连接进一步连接到云应用基础设施240。云应用基础设施包括一个或多个服务器245和一个或多个数据存储设备250,每个设备都通过本地网络255互连。
在一个实施例中,参考图1被示出和描述为属于客户端侧105的特征由一个或多个客户端计算设备205实现,并且被示出和描述为属于服务器侧135的特征由云应用基础设施实现。
在一个实施例中,服务器245可以被配置为堆栈以执行远程服务提供者131的功能。例如,一个或多个远程服务提供者131可以被实现为容器,或者一个或多个远程服务提供者131是被实现为容器的web应用的组件。在此,服务器245被配置为用于执行容器化远程服务提供者131的堆栈。或者,例如,一个或多个远程服务提供者131可以在虚拟机上实现,或者一个或多个远程服务提供者是可以在虚拟机上实现的web应用的组件。在此,服务器245被配置为用于托管实现远程服务提供者131的虚拟机的堆栈。或者,在另一个示例中,一个或多个远程服务提供者可以由服务器245中的一个或多个服务器直接执行。
存储设备250可以包括固态存储器驱动器、硬盘驱动器盘、网络附加存储(NAS)设备或其它存储设备。在一个实施例中,存储设备250是服务器245的组件。在一个实施例中,与数据存储库165相关联的数据结构由存储设备250托管。
—示例数据提供者不可知的变更规范—
在一个实施例中,数据对象可以是表示表数据结构中的行的行对象。行对象可以包括一个或多个属性。行对象还可以包括到“孩子”的一个或多个链接,或者从属于更高级别行对象的一个或多个附加行对象的集合。当行对象被实例化时,向它提供指示每个属性的数量和描述以及每个属性的初始值(如果可用的话)的定义。
对于行对象中的每个属性,该行对象包括属性的原始值和属性的更新值。最初由移动应用110从系统100的服务器侧135的数据存储库165检索到的数据被持久性管理器125存储为本地存储装置中的行对象的一个或多个实例。从数据存储库165检索到的属性的值被存储为行对象实例的每个属性的原始值。移动应用110可以例如响应于通过用户界面115的用户输入而操纵行对象实例中的一个或多个属性的值。移动应用110甚至可以添加属性、删除属性或删除整个行对象实例。对行对象实例的变更被存储为属性的更新值。移动应用110可以通过执行“保存”或“提交”功能来保存或提交对行对象实例的变更以指示变更应当应用于该行对象。
例如,在属性的原始值被移动应用110改变的情况下,属性的更新值将存储该变更。任何先前的更新值都将被该变更覆盖。在要删除原始值的另一个示例中,可以将空值或空白值存储在更新值中。在属性本身将被删除的另一个示例中,属性的更新值可以改变为指示删除的特殊值。在要删除整个行对象实例的另一个示例中,作为行对象实例的唯一键的属性可以改变为指示删除的特殊值。也可以采用跟踪行对象实例的原始值和更新后的值的其它方法。
在一个实施例中,用于行对象实例的“保存”或“提交”功能的执行发起在那个行对象实例以及从那个行对象实例链接的所有子行对象实例上执行变更数据构造器175。变更数据构造器175解析并比较行对象实例中所有属性的原始值和更新值。变更数据构造器175生成描述对行对象实例的所有变更的数据提供者不可知的变更对象实例。
在一个实施例中,变更数据构造器175可以应用于其它数据对象,诸如表示表格、表格的列或其它数据结构的对象。
图3图示了用于与移动客户端应用中的数据提供者不可知的变更处置相关联的数据提供者不可知的变更对象的模式300的一个实施例。变更对象模式300包括行对象实例中所有被改变的属性(如果有的话)的属性条目305,如模式300的第02行第06列至第05行第26列所示。变更对象可以包括0至n个属性,如模式300的第02行第06-24列所指示的。变更对象模式300描述了对那些属性的变更。变更对象模式300还包括行对象实例的所有被改变的孩子(如果有的话)的子条目310,如模式300的第06行第06列至第14行第22列所示。变更对象还可以包括0至m个孩子,如模式300的第06行第06-19列所指示的。变更对象模式300描述对孩子的属性的变更。变更对象以数据提供者不可知并且数据对象不可知的格式描述这些变更。
变更对象模式300包括用于每个属性条目305的属性名称315。属性名称315是为其生成属性条目305的被改变的行对象属性的名称。在一个实施例中,变更数据构造器175在为行对象实例生成变更对象实例时生成属性条目305。变更数据构造器175解析行对象实例以识别被改变的行对象属性的名称。变更数据构造器175将识别出的名称添加到变更对象实例作为被改变的行对象属性的属性条目305的属性名称315,如模式300的第02行第06至18列所示。
属性条目305包括指示对被改变的行对象属性的变更的性质的变更的类型320,如模式300的第03行第31-66列所示。变更的类型320可以是“已更新”、“已删除”或“已创建”之一。在一个实施例中,变更数据构造器在为行对象实例生成变更对象实例时提供变更的类型320。变更数据构造器175解析被改变的属性的更新值以识别对被改变的行对象属性进行的变更的类型。变更数据构造器175将识别出的类型添加到变更对象实例作为变更的类型320,如模式300的第03行第31-66列所示。
类型“已更新”意味着被改变的属性的原始值与更新值不同,从而指示那个属性的值的变更。在变更的类型是类型“已更新”的情况下,属性条目305还包括反映被改变的属性的更新值的值325,如模式300的第04行第31-48列所示。在一个实施例中,变更数据构造器175在为行对象实例生成变更对象实例时提取值325。变更数据构造器175解析被改变的行对象属性的更新值以识别其值。变更数据构造器175将识别出的值作为值325的“新值”添加到变更对象实例,如模式300的第04行第31-48列所示。
类型“已创建”意味着已将被改变的属性添加到行对象实例。在变更的类型是类型“已创建”的情况下,属性条目305还包括反映被改变的属性的更新值的值325(如果提供的话),如模式300的第04行第31-48列所示。在一个实施例中,当为行对象实例生成变更对象实例时,变更数据构造器175确定是否存在被改变的(新创建的)行对象属性的更新值。如果是,那么变更数据构造器175解析被改变的(新创建的)属性的更新值以识别其值并将识别出的值作为值325的“新值”添加到变更对象实例,如模式300的第04行第31-48列所示。在属性名称315指示属性的唯一标识符或键的特殊情况下,类型“已创建”意味着已经新创建了整个行对象实例。在一个实施例中,变更数据构造器175可以解析被改变的行对象属性的名称或属性名称315以确定特殊的“行实例创建”情况是否适用。
类型“已删除”意味着在315处命名的属性已从行对象实例中被移除。在属性名称315指示属性的唯一标识符或键的特殊情况下,类型“已删除”意味着已删除整个行对象实例。在一个实施例中,变更数据构造器175可以解析被改变的行对象属性的名称或属性名称315以确定特殊的“行实例删除”情况是否适用。
变更对象模式300包括每个子条目310的子名称330(或顶级属性)。子名称330是为其生成子条目310的被改变的行对象孩子的名称。在一个实施例中,变更数据构造器175在为行对象实例生成变更对象实例时生成子条目310。变更数据构造器175解析行对象实例以识别被改变的行对象孩子的名称。变更数据构造器175将识别出的名称添加到变更对象实例作为被改变的行对象孩子的子条目310的子名称330,如模式300的第06行第06-14列所示。变更数据构造器175还添加结构的类型335,其指示孩子310是子结构,而不是属性结构,如模式300的第07行第26-39列所示。
每个子条目310包括与行对象相关联的子对象或“孩子”340的集合,如模式300的第8行第26列至第13行第36列所示。行对象与孩子之间的关联可以被描述为“紧密耦合”,因为如果与行对象分离,那么由孩子存储的信息可能没有意义。例如,诸如用于采购订单的行项目之类的孩子在描述采购订单的行对象实例的上下文之外没有任何意义,而诸如地址行之类的孩子在描述联系人的行对象实例的上下文之外没有任何信息。
孩子340的集合的每个成员具有变更类型345(类似于变更的类型320)、主键350和变更的列表355。在一个实施例中,变更数据构造器175解析行对象实例以识别孩子340的集合的每个成员的变更类型和主键。变更数据构造器175将识别出的变更类型添加到变更对象实例作为变更类型345,如模式300的第09行第41-74列所示。变更数据构造器175将识别出的主键添加到变更对象实例作为主键350,如模式300的第10行第41-68列所示。变更数据构造器175使用主键值350从本地存储装置中检索子行(孩子340的集合的成员),例如通过从持久性管理器125通过主键请求它们。变更数据构造器175然后如上面所述的那样针对变更解析检索到的子行,以创建对子行的变更355的描述。这可以是遵循用于子行的模式300的格式的变更对象,如模式300的第11行第41列至第12行第78列所指出的。这种为孩子(子行)的变更对象实例的创建可以通过孩子的连续层递归地发生,直到到达没有更多孩子的子行。
变更对象是数据提供者不可知的,因为它不包含变更最终可以指向的任何服务提供者的提供者定义的特定细节,并且捕获用户对于对象执行的动作的描述,而不仅仅是对服务提供者对于更新将需要的内容的描述。因此,变更对象可以通过服务提供者的相应数据提供者130无损地路由到任何服务提供者131。这实现通过多个服务提供者的“离线写入”或“延迟的写入访问”。这也实现当在写入访问恢复之前修改提供者定义时的“离线写入”或“延迟写入访问”。
变更对象是数据对象不可知的,因为它不包含它所描述的数据对象实例的数据对象定义的特定细节。因此,变更对象可以支持对描述行对象实例的定义的变更。例如,变更对象使得能够添加或删除属性本身,而不仅仅是更新或删除值。
图4图示了描述对示例行对象实例进行的各种变更的示例数据提供者不可知的变更对象实例400。示例行对象实例和由变更对象实例400描述的对那个示例行对象实例的变更旨在说明本文描述的各种特征。
示例变更对象实例400是移动应用110对示例行对象执行的变更的记录。所记录的变更随后可以被数据提供者130读取并转变成将指示对应的远程服务提供者131在数据存储库165中实现所记录的变更的格式。对由示例变更对象实例400描述的示例行对象的变更如下:
在第02行405,从示例行对象实例中删除“SrNumber”属性。
在第03行410,示例行对象实例中的“Title”属性被更新为具有值“new title”。
在第04行415,“ABC”属性被添加到示例行对象实例并被指派值“123”。
第05行至第33行420描述了对被称为“contacts”的子集合的操作。
在第08行至第15行425,具有主键“111”的第一子对象实例被更新。在第12行430,第一个子对象实例的“JobTitle”属性被更新为具有“New Title”值。在第13行435,“XYZZY”属性被添加到第一个子对象实例并被指派值“345”。
在第16行至第22行440,具有主键“222”的第二子对象实例被更新。在第20行445,“PhoneNumber”属性从第二子对象实例中删除。注意的是,虽然对第二子对象实例的动作的类型是“已更新”而不是“已删除”,但即使变更从第二子对象实例中删除了“PhoneNumber”属性也是如此。也如参考下面的第31行450所示,“已删除”类型的动作操作以删除对象实例。
在第23行至第29行455,创建具有主键“777”的第三子对象实例。在第27行460,第三子对象实例的“MemberID”属性被更新为具有值“777”。在第28行460,第三子对象实例的“Title”属性被更新为具有“Support Level 1”的值。
在第31行450,删除具有主键123的第四子对象实例。
因此,在一个实施例中,变更对象(其可以被描述为对数据对象的动作的描述的不可知语法)包括,对于动作改变的数据对象的每个属性,(i)对那个属性的变更是“更新”、“删除”或“创建”动作之一的指示,以及(ii)在变更是“更新”或“创建”动作的情况下,那个属性的新值的指示。变更对象还可以包括,对于动作改变的数据对象的每个子对象,(i)该子对象是子对象的指示,(ii)对子对象的变更是“更新”、“删除”或“创建”动作之一的指示;(iii)子对象的主键的值的指示,以及(iv)对那个子对象的变更的指示。在此,变更的指示可以使用不可知语法来描述。
—用于数据提供者不可知的变更处置的示例方法—
在一个实施例中,本文描述的计算机实现的方法的每个步骤可以由一个或多个计算设备的(i)访问存储器(诸如存储器915和/或参考图9所示出和描述的其它计算设备组件)并且(ii)配置有逻辑以使系统执行方法的步骤(诸如参考图9所示出和描述的未满足需求最小化逻辑930)的处理器(诸如参考图9所示出和描述的处理器910)执行。例如,处理器访问存储器并从存储器读取或写入存储器以执行本文描述的计算机实现的方法的步骤。这些步骤可以包括(i)检索任何必要的信息,(ii)计算、确定、生成、分类或以其它方式创建任何数据,以及(iii)存储计算、确定、生成、分类或以其它方式创建的任何数据。对存储(storage或storing)的引用指示作为计算设备的存储器或存储装置/盘(诸如存储器915,或计算设备905的存储装置/盘935或参考图9所示出和描述的远程计算机965)中的数据结构的存储。在一个实施例中,处理器是移动设备的信号处理和/或控制电路1020,诸如参考图10所示出和描述的移动设备1000。
在一个实施例中,方法的每个后续步骤响应于解析接收到的信号或检索到的存储的数据而开始,该信号或数据指示前一步骤已至少执行到后续步骤开始所必需的程度。一般而言,接收到的信号或检索到的存储的数据指示前一步骤的完成。方法的每个步骤可以包括多个子步骤,这些子步骤可以或可以不在本文描述。
在一个实施例中,本文描述的方法的步骤由客户端计算设备205执行(如参考图2中所示和描述的)。在一个实施例中,客户端计算设备205是配置有数据提供者不可知的变更处置逻辑的专用计算设备(诸如计算设备905)。
图5图示了与移动客户端应用中的数据提供者不可知的变更处置相关联的方法500的一个实施例。方法500可以基于各种触发而被发起,各种触发诸如通过网络接收信号或解析指示以下内容的存储的数据:(i)系统100的用户(或管理员)已发起方法500、(ii)移动应用110的用户已发起“保存变更”或“提交变更”操作,(iii)(执行移动应用110的)客户端计算设备205与云应用基础设施240没有网络连接性或具有差的网络连接性,或(iv)与移动应用110相关联的一个或多个远程服务提供者131具有低可用性或没有处理请求的能力。方法500响应于解析接收到的信号或检索到的存储的数据并确定该信号或存储的数据指示方法500应当开始而在开始框505处开始。处理继续到处理框510。
在处理框510处,处理器在移动设备上接收输入,该输入指示对存储在远程数据存储库中的数据对象的创建、更新或删除动作。
在一个实施例中,客户端计算设备205的处理器接受通过用户界面115接收的一个或多个输入,该一个或多个输入描述对数据对象的一个或多个创建、更新或删除操作。数据对象可以与应用110相关联。数据对象可以是行对象的特定实例。
在一个实施例中,处理器解析输入以识别创建、更新或删除操作,要创建、更新或删除的数据对象的属性,以及那个属性的值(如果提供了任何值的话)。(在一个实施例中,数据对象的多个属性将基于输入被创建、更新和/或删除。关于单个属性所描述的步骤可以应用于数据对象的多个属性。)处理器应用识别出的对本地存储在客户端计算设备205上的数据对象的本地副本的创建、更新或删除操作。
例如,在操作是更新操作的情况下,处理器将用于属性的值写入数据对象的本地副本中的那个属性的更新字段。或者,例如,在操作是创建操作的情况下,处理器将要创建的属性附加到数据对象,并将该属性的值写入那个属性的更新字段。或者,在另一个示例中,在操作是删除操作的情况下,处理器将指示属性的删除的特殊值写入那个属性的更新字段。
在一个实施例中,处理器解析输入并确定要创建整个数据对象。处理器创建本地存储在客户端计算设备205上的数据对象的本地实例,并将在输入中检测到的属性的任何值写入相应属性的更新字段。处理器将新的主键写入主键属性的更新字段。
在一个实施例中,处理器解析输入并确定要删除整个数据。处理器将指示删除主键(或唯一标识符)的特殊值写入主键的更新字段。
在一个实施例中,处理器通过执行持久性管理器125的一个或多个功能来执行与本地存储装置的交互,包括对更新字段的写入。
一旦处理器因此完成在移动设备上接收指示对存储在远程数据存储库中的数据对象的创建、更新或删除动作的输入,处理框510处的处理就完成了,并且处理继续到处理框515。
在处理框515处,响应于接收到输入,处理器以用于与远程数据存储库交互的远程服务提供者的类型不可知的语法创建对数据对象的动作的描述。
在一个实施例中,客户端计算设备的处理器解析输入,该输入指示对由输入指示的对数据对象的变更将被保存或提交。作为响应,处理器解析数据对象的本地副本以识别存储在每个属性的原始字段和更新字段中的值。处理器将每个属性的更新字段值与原始字段值进行比较。在值不同的地方,处理器生成属性的原始与更新字段值之间的变更的描述并将其写入本地存储装置中用于数据对象的数据提供者不可知的变更对象。变更对象特定于数据对象。在一个实施例中,处理器通过执行变更数据构造器175的一个或多功能来执行变更对象的创建。
例如,在属性是主键并且那个属性的更新字段值是指示删除的特殊值的情况下,变更数据构造器175将针对原始字段值的主键写入指示变更类型是“已删除”的描述,类似于示例变更对象实例400的第31行450所示的描述。或者,例如,在属性不是主键并且更新字段值是指示删除的特殊值的情况下,变更数据构造器175将写入指示那个属性的变更类型是“已删除”的描述,类似于示例变更对象实例400的第02行405所示的描述。或者,在更新字段值不是指示删除的特殊值而是与原始字段值不同的另一个示例中,变更数据构造器175将写入指示那个属性的变更的类型是“已更新”并且那个属性的值是更新字段值的描述,类似于示例变更对象实例400的第03行410所示的描述。或者,在属性不是主键、原始字段值为NULL或以其它方式指示这个属性没有先前值,并且填充更新字段值的又一个示例中,变更数据构造器175将写入指示该属性的变更的类型是“已创建”并且那个属性的值是更新字段值的描述。或者,在属性是主键、原始字段值为NULL或以其它方式指示以前没有主键并且填充更新字段值的另一个示例中,变更数据构造器175将写入指示对于更新字段值的主键的变更的类型是“已创建”的描述。
在一个实施例中,处理器确定存储在数据对象的本地副本的属性的更新字段中的值是指向一个或多个子数据结构的指针、链接或其它连接。处理器解析属性以确定(一个或多个)子数据结构的(一个或多个)位置,并从本地存储装置中检索它们。然后处理器解析(一个或多个)子数据结构以确定是否对它们进行了任何变更。如果是,那么变更数据构造器175将在变更数据对象中写入指示数据对象的本地副本具有(一个或多个)子数据结构的子条目,类似于示例变更对象实例400的第05行至第33行420所示的子条目。这个子条目可以包括子结构的顶级属性名称,诸如示例变更对象实例400的第05行所示的名称“contacts”。这个子条目可以包括指示子条目是子结构而不是属性结构的结构类型,例如,如示例变更对象实例400的第06行所示。子条目可以包括子条目中包括的子数据结构的变更的类型,以及识别子条目中包括的子数据结构的主键,例如示例变更对象实例400的09和10行所示。子条目可以包括对子数据结构的属性的变更的列表,从而递归地遵循与父变更对象相同的模式300,例如,如示例变更对象实例400的第12行430和13行435所示。
一旦处理器已经因此完成以与用于响应于接收到输入而与远程数据存储库交互的远程服务提供者的类型不可知的语法创建对数据对象的动作的描述,处理框515处的处理就完成了,并且处理继续到处理框520。
在处理框520处,处理器将动作的描述转换成第一远程服务提供者的语法以编写被配置为使第一远程服务提供者执行动作的命令。
在一个实施例中,客户端计算设备205的处理器已经接收到由诸如远程REST提供者151之类的第一远程服务提供者所接受的数据类型的一个或多个定义,以及用于与第一远程服务提供者交互的语法的副本。这些定义和语法由与第一远程服务提供者(诸如REST数据提供者150)对应的本地第一数据提供者在本地存储装置中维护。数据提供者130和远程服务提供者131的每一对可以具有对于该对唯一的定义和语法。
在变更的类型是更新的一个实施例中,处理器在定义中搜索与行对象的本地副本的数据类型对应的定义。然后,处理器在那个定义中依次搜索变更对象中列出的每个属性条目的属性名称。当在定义中找到属性名称时,处理器访问语法以便为那个属性条目编写指令,以使由那个属性条目记录的变更生效。处理器将根据用于“更新”类型变更的语法编写电子消息,以使第一远程服务提供者将新值指派给数据存储库165中的数据对象的属性。
例如,响应于解析在示例变更对象实例400的第03行410所示的“Title”属性的属性条目,处理器将在与这个特定类型的行对象对应的定义中搜索“Title”属性。处理器将检索用于“更新”类型变更操作的语法。处理器将根据用于“更新”类型变更的语法编写电子消息,以使第一远程服务提供者将值“New Title”指派给数据存储库165中的数据对象的标题属性。
在其中变更的类型是创建的一个实施例中,处理器检索用于“创建”类型变更操作的语法。处理器将根据“创建”类型变更的语法编写电子消息,以使第一远程服务提供者在数据存储库165中创建数据对象的新属性(或者,在特殊情况下,创建整个新数据对象)。
在其中变更的类型是删除的一个实施例中,处理器检索用于“删除”类型变更操作的语法。处理器将根据“删除”类型变更的语法编写电子消息,以使第一远程服务提供者删除数据存储库165中的数据对象的属性(或者,在特殊情况下,删除整个数据对象)。
对于可以由变更对象指示的每种类型的变更操作,创建电子消息的语义由用于数据对象的数据类型的定义支配。另外,字段是否为必填、被锁定以进行编辑、不可删除以及字段是否可以添加到数据对象也由数据类型的定义支配。
在一个实施例中,处理器通过执行数据提供者130的一个或多个功能来执行电子消息的编写。
在一个实施例中,处理器更新语法和/或定义。例如,处理器响应于确定(i)到第一远程服务提供者的网络连接性被恢复,或(ii)第一远程服务提供者已经恢复处理事务的可用性,而下载语法和/或定义。在一个示例中,当处理器检测到定义或语法的新版本在网络连接中断或服务提供者不可用期间由第一远程服务提供者实现时,处理器可以这样做。
在一个实施例中,第一远程服务提供者的语法被存储在移动设备中,还包括从第一远程服务提供者检索用于数据对象的类型的语义的描述。将动作的描述转换成第一远程服务提供者的语法是基于检索到的语义描述的。
一旦处理器已因此完成将动作的描述转换成第一远程服务提供者的语法,以编写被配置为使第一远程服务提供者执行动作的命令,处理框520处的处理就完成了,并且处理继续到处理框525。
在处理框525处,处理器通过网络将命令传输到第一远程服务提供者,以使得对远程数据存储库中的数据对象执行动作。
在一个实施例中,客户端计算设备205的处理器使用第一数据提供者从本地存储器检索生成的消息,将其寻址到与第一数据提供者对应的第一远程服务提供者,并通过网络将其作为对第一远程服务提供者的命令发送,以使得对远程数据存储库中的数据对象执行动作。
一旦处理器已因此完成通过网络向第一远程服务提供者传输命令以使得对远程数据存储库中的数据对象执行动作,处理框525处的处理就完成了,并且处理继续到结束框530,在那里方法500结束。
响应于接收到命令,第一远程服务提供者解析命令,并编写数据库命令以对数据存储库中(诸如数据存储库165中)的数据对象实现动作。数据库命令可以用结构化查询语言(SQL)或用于与诸如关系数据库之类的数据库进行交互的其它语言编写。第一远程服务提供者将数据库命令传输到数据存储库165,数据存储库165对数据对象执行动作。
—对延迟的写入访问情况的应用—
图6图示了与在移动客户端应用中使用数据提供者不可知的变更处置的延迟的写入访问相关联的方法600的一个实施例。可以基于各种触发来发起方法600,各种触发诸如通过网络接收信号或解析指示以下内容的存储的数据:(i)系统100的用户(或管理员)已发起方法600、(ii)移动应用110的用户已发起“保存变更”或“提交变更”操作,(iii)(执行移动应用110的)客户端计算设备205与云应用基础设施240没有网络连接性或具有差的网络连接性,或(iv)与移动应用110相关联的一个或多个远程服务提供者131具有低可用性或没有处理请求的能力。方法600响应于解析接收到的信号或检索到的存储的数据并确定该信号或存储的数据指示方法600应当开始而在开始框605发起。处理继续通过处理框610和615进入延迟的写入访问循环620。处理框610和615以与分别针对处理框510和515所描述的方式类似的方式执行,如关于图5所示和描述的。
处理在判定框625处继续。在一个实施例中,在判定框625处,客户端计算设备205的处理器检测第一远程服务提供者是否不可用。例如,处理器可以对托管第一远程服务提供者的(一个或多个)服务器245的互联网协议(IP)地址进行ping,以确定客户端计算设备205和服务器245之间的网络时延。处理器然后将检测到的网络时延与指示客户端计算设备205和服务器245之间的网络连接慢、差或以其它方式受限的阈值进行比较。在另一个示例中,处理器可以通过ping(一个或多个)服务器245的IP地址并确定没有从服务器接收到响应来检测客户端计算设备205和服务器245之间的网络断开。在另一个示例中,处理器可以通过从第一远程服务提供者接收并解析它离线或忙碌的消息来检测第一远程服务提供者具有低可用性或没有可用性。如果阈值被超过,或者网络断开,或者第一远程服务提供者报告它关闭或繁忙(具有高处理负载),那么第一远程服务提供者不可用(否),并且处理继续到处理框630。否则,第一远程服务提供者可用(是)并且处理继续到处理框635。
在处理框630处,处理器将动作的描述存储在移动设备上。在一个实施例中,处理器执行持久性管理器125以将变更对象写入本地存储器。处理框630处的处理完成并前进到判定框640。
在判定框640处,处理器以类似于判定框625的方式确定它是否接收到第一远程服务提供者可用的指示。例如,处理器可以ping(一个或多个)服务器245并确定网络时延已降至阈值以下。或者,处理器可以ping(一个或多个)服务器245并确定网络连接已经重新建立。或者,处理器可以从第一远程服务提供者接收并解析它可用或不再离线或忙碌的消息。如果处理器接收到这些指示中的任何一个(是),那么第一远程服务提供者可用并且处理继续到处理框635。否则(否),处理继续到处理框645。在处理框645处,处理器等待设定的时间间隔,例如一到十分钟,然后返回到判定框640以确定是否存在第一远程服务提供者可用的指示。这具有延迟处理框635中描述的命令的编写直到移动设备接收到第一远程服务提供者可用的指示的效果。
处理继续通过处理框635和650到达结束框655,在那里方法600结束。处理框635和650以与分别针对处理框520和525所描述的方式类似的方式执行,如关于图5中所示和描述的。
—对多个远程服务提供者的应用—
图7图示了与移动客户端应用中使用数据提供者不可知的变更处置的通过多个远程服务提供者的延迟写入访问相关联的方法700的一个实施例。方法700可以基于各种触发被发起,各种触发诸如通过网络接收信号或解析指示以下内容的存储的数据:(i)系统100的用户(或管理员)已发起方法700,(ii)移动应用110的用户已发起“保存变更”或“提交变更”操作,(iii)(执行移动应用110的)客户端计算设备205与云应用基础设施240没有网络连接性或具有差的网络连接性,或(iv)与移动应用110相关联的一个或多个远程服务提供者131具有低可用性或没有处理请求的能力。方法700响应于解析接收到的信号或检索到的存储的数据并确定该信号或存储的数据指示方法700应当开始而在开始框705开始。处理继续通过处理框710和715进入延迟的写入访问循环720。处理框710和715以与分别针对处理框510和515所描述的方式类似的方式执行,如关于图5中所示和描述的。
处理在判定框725处继续。在一个实施例中,在判定框725处,客户端计算设备205的处理器,例如,通过执行与在判定框625处关于第一远程服务提供者执行的分析类似的分析,检测第一远程服务提供者是否不可用,如参考图6所示和描述的。如果第一远程服务提供者可用(否),那么处理继续通过处理框730和735到达结束框740,在那里方法700结束。处理框730和735相对于第一远程服务提供者以与分别针对处理框520和525所描述的方式类似的方式执行,如参考图5中所示和描述的。
再次参考判定框725,如果第一远程服务提供者不可用(是),那么处理继续到判定框745。在一个实施例中,在判定框745处,客户端计算设备205的处理器,例如,通过执行与在判定框625处关于第一远程服务提供者执行的分析类似的分析,检测第二远程服务提供者是否不可用,如参考图6所示和描述的。如果第二远程服务提供者可用(否),那么处理通过处理框750和755继续到结束框740,在那里方法700结束。处理框750和755相对于第二远程服务提供者以与分别针对处理框520和525所描述的方式类似的方式执行,如参考图5中所示和描述的。因此,如果第一远程服务提供者由于任何原因而不可用,那么第二远程服务提供者可以处置这些变更。在一个实施例中,在确定第一远程服务提供者不可用于接收命令之后,响应于第一远程服务提供者不可用于接收命令的确定,执行以第二远程服务提供者的语法编写命令并将命令传输到第二远程服务提供者。在一个实施例中,第二远程服务提供者是与第一远程服务提供者不同类型的提供者。例如,第一远程服务提供者可以是远程REST类型服务提供者151,而第二远程服务提供者是远程弹性类型服务提供者156或其它类型的远程服务提供者。
再次参考判定框745,如果第二远程服务提供者不可用(是),那么处理继续到判定框760。在一个实施例中,在判定框760处,客户端计算设备205的处理器例如通过执行与在判定框625关于第一远程服务提供者执行的分析类似的分析,检测第N个远程服务提供者是否不可用,如参考图6所示和描述的。如果第N个远程服务提供者可用(否),那么处理继续通过处理框765和770到达结束框740,在那里方法700结束。处理框765和770相对于第二远程服务提供者以与分别针对处理框520和525描述的方式类似的方式执行,如参考图5中所示和描述的。因此,任何数量的可用远程服务提供者可以被包括在延迟的写入访问循环720中的故障转移序列中。因此,该情况可以被概括为在确定前N-1个远程服务提供者不可用于接收命令之后,以第N个远程服务提供者的语法编写命令并将命令传输到第N个远程服务提供者是响应于确定N-1个远程服务提供者不可用于接收命令而被执行的。
再次参考判定框760,如果第N个远程服务提供者不可用(是),那么处理继续到处理框775。在处理框775处,处理器,处理器将动作的描述存储在移动设备上,并且处理在判定框780处继续。在判定框780处,处理器确定是否存在第一至第N远程服务提供者中的任何一个可用的指示。如果是这样(是),那么处理返回到判定框725以继续使用可用的远程服务提供者。如果不是(否),那么处理继续到处理框785,在那里处理等待一段时间,然后返回到判定框780。处理元素775、780和785以与处理元素630、640和645类似的方式执行,如参考图6中所示和描述的。
—在多个远程服务提供者之间进行选择—
图8图示了与移动客户端应用中使用数据提供者不可知的变更处置的通过可选择的替代服务提供者的延迟写入访问相关联的方法800的一个实施例。方法800可以基于各种触发被发起,各种触发诸如通过网络接收信号或解析指示以下内容的存储的数据:(i)系统100的用户(或管理员)已发起方法800,(ii)移动应用110的用户已发起“保存变更”或“提交变更”操作,(iii)(执行移动应用110的)客户端计算设备205与云应用基础设施240没有网络连接性或具有差的网络连接性,或(iv)与移动应用110相关联的一个或多个远程服务提供者131具有低可用性或没有处理请求的能力。方法800响应于解析接收到的信号或检索到的存储的数据并确定该信号或存储的数据指示方法800应当开始而在开始框805开始。处理继续通过处理框810和815到达判定框820。处理框810和815以与分别针对处理框510和515所描述的方式类似的方式执行,如关于图5中所示和描述的。
在判定框820处,处理器从多于一个远程服务提供者的集合当中选择远程服务提供者,每个远程服务提供者都可以访问远程数据存储库。从多于一个远程服务提供者(远程服务提供者一至N)进行选择是基于远程服务提供者满足一个或多个准则的。处理器从本地存储装置中检索一个或多个准则。例如,准则可以是以下中的一个或多个:(i)远程服务提供者的当前可用性和(ii)要提供给远程服务提供者的动作的复杂性。
关于当前可用性,在类似于参考图6所示和描述的判定框625和640的过程中,处理器可以评估每个远程服务提供者的可用性以确定每个远程服务提供者可用的程度。处理器基于例如网络连接性、网络时延和远程服务提供者上的负载中的一个或多个来比较远程服务提供者的相对可用性。处理器基于处理器采用的可用性度量选择最可用的服务提供者。
关于动作的复杂性,远程弹性提供者156和远程图形查询提供者146可以具有优于远程REST提供者151或远程XML提供者141的性能优点。例如,远程图形查询提供者146可以处理(用GraphQL编写的)复杂的统一查询,而远程REST提供者151或远程XML提供者141可以要求多次交互来完成相同的结果。而且,例如,远程弹性提供者156可以更快速地处理查询,因为它在服务器245处保留持久数据存储库,而不是响应于与远程REST提供者151或远程XML提供者141的交互而从数据存储库165中逐段查询数据。在一个实施例中,处理器基于包括在动作中的变更的数量来评估动作是否复杂。如果变更的数量低于指示简单动作的阈值,例如少于十个变更,那么处理器从可用的远程服务供应者当中选择用于处置简单动作的远程服务提供者,诸如远程REST提供者151或远程XML提供者141。如果达到或超过阈值,那么处理器从可用的远程服务提供者当中选择能够处置复杂动作的远程服务提供者,诸如远程弹性提供者156或远程图形查询提供者146。
—示例用例—
在一个实施例中,移动应用110是用于呈现和编辑采购订单的应用,作为电子商务系统的一部分。数据存储库165包括表示采购订单的许多行对象。表示示例采购订单的示例行对象由移动应用110通过数据提供者及其对应的远程服务提供者从数据存储库165检索,并使用持久性管理器125存储在客户端侧105的客户端设备205的本地存储装置中。移动应用110的用户通过用户界面115录入输入以操纵示例采购订单。用户界面115对示例行对象进行变更。用户然后选择由用户界面115呈现的选项以保存或提交对示例采购订单所做的变更。
响应于保存或提交操作,变更数据构造器175解析对示例行对象所做的变更并将对示例行对象的所有变更记录在数据提供者不可知的变更对象中。例如,对示例行的变更可以包括对“购买者姓名”属性的更新。而且,例如,对示例行的变更可以包括将采购订单中的行项目的“数量”属性从“5”更新为“10”。变更数据构造器175生成用于将变更对象中的购买者姓名值更新为“John Smith”的购买者姓名属性的属性条目。变更数据构造器175还生成用于顶级属性行项目的子条目,包括将数量值更新为“10”。
在一个实施例中,数据管理器170将变更对象发送到数据提供者150以转换成用于远程REST提供者151的API格式的消息,并将生成的消息传输到远程REST提供者151。在一个实施例中,(i)由于缺乏与(一个或多个)服务器245的网络连接性或(ii)提供者151上的高负载,处理器检测到远程REST服务提供者151不可用。如果远程REST服务提供者151的不可用性是由于缺乏网络连接性,那么数据管理器170将变更对象发送到持久性管理器125以在本地存储。当连接性恢复时,事务处理器180将检索变更对象并重新尝试转换和传输。如果远程REST提供者151的不可用性是由于提供者151上的高负载,那么数据管理器将变更对象发送到图形查询数据提供者以转换成远程图形查询提供者146的API格式的消息,并将生成的消息传输到远程图形查询提供者146。远程图形查询提供者146执行消息的API有效载荷以使变更应用于数据存储库165中的示例行对象的服务器侧副本。注意的是,变更对象可以普遍用作用于本地存储和用于提交给数据提供者的格式。
—云或企业实施例—
在一个实施例中,本文所示和描述的自动范围界定工具103和/其它系统是包括数据库应用或分布式数据库应用集合的计算/数据处理系统。应用和数据处理系统可以被配置为与基于云的联网系统、软件即服务(SaaS)体系架构、平台即服务(PaaS)体系架构、基础设施即服务(IaaS)体系架构或其它类型的联网的计算解决方案一起操作,或被实现为基于云的联网系统、软件即服务(SaaS)体系架构、平台即服务(PaaS)体系架构、基础设施即服务(IaaS)体系架构或其它类型的联网的计算解决方案。在一个实施例中,云计算系统100是服务器侧系统,其至少提供本文公开的功能并且可由许多用户通过计算机网络经由与(用作服务器的)云计算系统100通信的计算设备/终端来访问。
—软件模块实施例—
一般而言,软件指令被设计为由合适编程的处理器执行。这些软件指令可以包括例如计算机可执行代码和可以被编译成计算机可执行代码的源代码。这些软件指令还可以包括以诸如脚本语言之类的解释性编程语言编写的指令。
在复杂系统中,此类指令通常被布置为程序模块,其中每个这种模块执行特定任务、过程、函数或操作。模块的整个集合可以在其操作中由操作系统(OS)或其它形式的组织平台控制或协调。
在一个实施例中,本文描述的组件、功能、方法或过程中的一个或多个被配置为存储在非暂态计算机可读介质中的模块。模块配置有存储的软件指令,指令在至少由访问存储器或存储装置的处理器执行时使计算设备执行如本文所述的(一个或多个)对应功能。
在一个实施例中,移动应用110、用户界面115、事务处置程序120、持久性管理器125、数据提供者130、远程服务提供者131、数据管理器170、变更数据构造器175和事务处理器180中的一个或多个被配置为存储在非暂态计算机可读介质中的模块。
—计算设备实施例—
图9图示了示例计算设备,该示例计算设备被配置和/或编程有本文描述的示例系统和方法中的一个或多个,和/或等同物。示例计算设备可以是计算机900,其包括通过总线925可操作地连接的处理器910、存储器915和输入/输出端口920。在一个示例中,计算机900可以包括数据提供者不可知的变更处置逻辑930,其被配置为促进移动客户端应用中的数据提供者不可知的变更处置,类似于参考图1至8中所示和描述的逻辑、系统和方法。在不同的示例中,逻辑930可以在硬件、具有存储的指令的非暂态计算机可读介质、固件和/或其组合中实现。虽然逻辑930被示为附接到总线925的硬件组件,但是应该认识到的是,在其它实施例中,逻辑930可以在处理器910中实现,存储在存储器915中,或者存储在盘935中。
在一个实施例中,逻辑930或计算机是用于执行所描述的动作的部件(例如,结构:硬件、非暂态计算机可读介质、固件)。在一些实施例中,计算设备可以是在云计算系统中操作的服务器、在软件即服务(SaaS)体系架构中配置的服务器、智能电话、膝上型计算机、平板计算设备等。
该部件可以例如被实现为ASIC,该ASIC被编程为促进移动客户端应用中数据提供者不可知的变更处置。该部件还可以被实现为存储的计算机可执行指令,这些指令作为数据940被呈现给计算机900,数据940临时存储在存储器915中,然后由处理器910执行。
逻辑930还可以提供用于在移动客户端应用中执行数据提供者不可知的变更处置的部件(例如,硬件、存储可执行指令的非暂态计算机可读介质、固件)。
一般地描述计算机900的示例配置,处理器910可以是各种不同的处理器,包括双微处理器和其它多处理器体系架构。存储器915可以包括易失性存储器和/或非易失性存储器。非易失性存储器可以包括例如ROM、PROM等。易失性存储器可以包括例如RAM、SRAM、DRAM等。
存储盘935可以经由例如输入/输出(I/O)接口(例如,卡、设备)945和输入/输出端口920可操作地连接到计算机900。盘935例如可以是磁盘驱动器、固态盘驱动器、软盘驱动器、带驱动器、Zip驱动器、闪存卡、记忆棒等。此外,盘935可以是CD-ROM驱动器、CD-R驱动器、CD-RW驱动器、DVD ROM等。例如,存储器915可以存储过程950和/或数据940。盘935和/或存储器915可以存储控制和分配计算机900的资源的操作系统。
计算机900可以经由I/O接口945和输入/输出端口920与输入/输出(I/O)设备交互。输入/输出设备可以是例如键盘、麦克风、指向和选择设备、相机、视频卡、显示器、盘935、网络设备955等。输入/输出端口920可以包括例如串行端口、并行端口和USB端口。
计算机900可以在网络环境中操作并且因此可以经由I/O接口945和/或I/O端口920连接到网络设备955。通过网络设备955,计算机900可以与网络交互。通过网络,计算机900可以逻辑地连接到远程计算机。计算机900可以与之交互的网络包括但不限于LAN、WAN和其它网络。
—移动设备实施例—
现在参考图10,图示了示例移动设备1000,该示例移动设备1000被配置和/或编程有本文描述的示例系统和方法中的一个或多个,和/或等同物。在一个示例中,移动设备1000可以包括数据提供者不可知的变更处置逻辑1005,其被配置为促进移动客户端应用中的数据提供者不可知的变更处置,类似于参考图1至图8中所示和描述的逻辑、系统和方法。移动设备1000可以包括蜂窝天线1010。示例实施例可以实现信号处理和/或控制电路,它们在图10中总体被识别为1020。在一些实施方式中,移动设备1000包括麦克风1030、音频输出端1040(诸如扬声器和/或音频输出插孔)、显示器1050和/或输入设备1060(诸如小键盘、定点设备、语音驱动和/或其它输入设备)。移动设备1000中的信号处理和/或控制电路1020和/或其它电路(未示出)可以处理数据、执行编码和/或加密、执行计算、格式化数据和/或执行其它蜂窝电话功能。
移动设备1000可以与以非易失性方式(诸如在包括例如HDD和/或DVD的光学和/或磁存储设备中)存储数据的海量数据存储装置1070通信。HDD可以是包括一个或多个盘片的迷你HDD,盘片的直径小于近似1.8英寸。蜂窝电话1000可以连接到存储器1080(诸如RAM、ROM)、低延迟非易失性存储器(诸如闪存)和/或其它合适的电子数据存储装置。移动设备1000还可以支持经由WLAN网络接口1090与WLAN的连接。移动设备1000可以包括WLAN天线1095。在这个示例实施例中,示例系统和方法可以使用这个WLAN网络接口1090来实现,但其它布置也是可能的。
—定义和其它实施例—
在另一个实施例中,所描述的方法和/或它们的等同物可以用计算机可执行指令来实现。因此,在一个实施例中,非瞬态计算机可读/存储介质被配置为具有存储的算法/可执行应用的计算机可执行指令,当该指令由(一个或多个)机器执行时使该(一个或多个)机器(和/或相关联的组件)执行该方法。示例机器包括但不限于处理器、计算机、在云计算系统中操作的服务器、用软件即服务(SaaS)体系架构配置的服务器、智能电话等等。在一个实施例中,计算设备用被配置为执行任何所公开的方法的一个或多个可执行算法来实现。
在一个或多个实施例中,所公开的方法或它们的等同物由以下任一项执行:被配置为执行方法的计算机硬件;或者,存储在非瞬态计算机可读介质中的模块中体现的计算机指令,其中指令被配置为可执行算法,可执行算法被配置为在至少由计算设备的处理器执行时执行方法。
虽然为了简化说明的目的,图中图示的方法被示出和描述为算法的一系列框,但是应该认识到的是,这些方法不受框的顺序的限制。一些框可以以与所示出和描述的不同的顺序出现和/或与其它框同时出现。而且,可以使用比全部图示的框少的框来实现示例方法。框可以被组合或分成多个动作/组件。此外,附加的和/或替代的方法可以采用未在框中图示的附加动作。
以下包括本文所采用的所选择术语的定义。定义包括属于术语的范围并且可以用于实现的组件的各种示例和/或形式。示例并不旨在是限制性的。术语的单数和复数形式都可以在定义之内。
对“一个实施例”、“实施例”、“一个示例”、“示例”等的引用指示如此描述的(一个或多个)实施例或(一个或多个)示例可以包括特定的特征、结构、特性、性质、元素或限制,但并非每个实施例或示例都必须包括该特定的特征、结构、特性、性质、元素或限制。此外,短语“在一个实施例中”的重复使用不一定指代相同的实施例,但是它可以指代相同的实施例。
ASIC:专用集成电路。
CD:光盘。
CD-R:CD可记录。
CD-RW:CD可重写。
DVD:数字多功能盘和/或数字视频盘。
HTTP:超文本传输协议。
LAN:局域网。
RAM:随机存取存储器。
DRAM:动态RAM。
SRAM:同步RAM。
ROM:只读存储器。
PROM:可编程ROM。
EPROM:可擦除PROM。
EEPROM:电可擦除的PROM。
SQL:结构化查询语言。
USB:通用串行总线。
XML:可扩展标记语言。
WAN:广域网。
WLAN:无线LAN
如本文所使用的,“数据结构”是计算系统中存储在存储器、存储设备或其它计算机化系统中的数据的组织。数据结构可以是例如数据字段、数据文件、数据阵列、数据对象、数据记录、数据库、数据表、表行、表列、图表、树、链表等中的任何一个。数据结构可以由许多其它数据结构形成以及包含许多其它数据结构(例如,数据库包括许多数据记录)。根据其它实施例,数据结构的其它示例也是可能的。
如本文所使用的,“计算机可读介质”或“计算机存储介质”是指存储被配置为当被执行时执行所公开的功能中的一个或多个功能的指令和/或数据的非瞬态介质。在一些实施例中,数据可以用作指令。计算机可读介质可以采取包括但不限于非易失性介质和易失性介质的形式。非易失性介质可以包括例如光盘、磁盘等。易失性介质可以包括例如半导体存储器、动态存储器等。计算机可读介质的常见形式可以包括但不限于软盘、柔性盘、硬盘、磁带、其它磁性介质、专用集成电路(ASIC)、可编程逻辑器件、紧凑型盘(CD)、其它光学介质、随机存取存储器(RAM)、只读存储器(ROM)、存储器芯片或卡、存储棒、固态存储设备(SSD)、闪存驱动器、以及计算机、处理器或其它电子设备可以利用其工作的其它介质。如果每种类型的介质在一个实施例中被选择用于实现,则其可以包括被配置为执行所公开的和/或所要求保护的功能中的一个或多个功能的算法的存储指令。
如本文所使用的,“逻辑”表示利用计算机或电气硬件、具有存储的可执行应用或程序模块的指令的非瞬态介质和/或这些的组合实现的组件,以执行如本文公开的任何功能或动作,和/或使得来自另一逻辑、方法和/或系统的功能或动作如本文所公开的那样被执行。等效逻辑可以包括固件、利用算法编程的微处理器、离散逻辑(例如,ASIC)、至少一个电路、模拟电路、数字电路、编程的逻辑器件、包含算法的指令的存储器设备等,其中任何一个可以被配置为执行所公开的功能中的一个或多个功能。在一个实施例中,逻辑可以包括一个或多个门、门的组合、或者被配置为执行所公开的功能中的一个或多个功能的其它电路组件。在描述多个逻辑的情况下,有可能将多个逻辑合并到一个逻辑中。类似地,在描述单个逻辑的情况下,有可能在多个逻辑之间分配该单个逻辑。在一个实施例中,这些逻辑中的一个或多个是与执行所公开的和/或所要求保护的功能相关联的对应结构。选择实现哪种类型的逻辑可以基于期望的系统条件或规范。例如,如果考虑更高的速度,则将选择硬件来实现功能。如果考虑更低的成本,则将选择存储的指令/可执行应用来实现功能。
“可操作的连接”或实体通过其“可操作地连接”的连接是可以发送和/或接收信号、物理通信和/或逻辑通信的连接。可操作的连接可以包括物理接口、电接口和/或数据接口。可操作的连接可以包括足以允许可操作的控制的接口和/或连接的不同组合。例如,两个实体可以可操作地连接,以直接或者通过一个或多个中间实体(例如,处理器、操作系统、逻辑、非瞬态计算机可读介质)彼此传送信号。逻辑和/或物理通信信道可以被用于创建可操作的连接。
如本文所使用的,“用户”包括但不限于一个或多个人、计算机或其它设备、或者这些的组合。
虽然已经相当详细地图示和描述了所公开的实施例,但并不旨在将所附权利要求的范围限制或以任何方式限定到这样的细节。当然,不可能为了描述主题的各个方面而描述组件或方法的每种预期的组合。因此,本公开不限于所示出和描述的特定细节或说明性示例。
就术语“包含(includes或including)”在具体实施方式或权利要求书中被采用的程度而言,它旨在以类似于当术语“包括”作为过渡词在权利要求中被采用时所解释的方式是包含性的。
就术语“或”在具体实施方式或权利要求书中被采用的程度而言(例如,A或B),其旨在意味着“A或B或两者”。当申请人旨在指示“仅A或B但不是两者”时,那么将使用短语“仅A或B但不是两者”。因此,术语“或”在本文的使用是包含性的,而不是排他性使用。
Claims (15)
1.一种计算机实现的方法,包括:
在移动设备上接收指示对存储在远程数据存储库中的数据对象的创建、更新或删除动作的输入;
响应于接收到输入,以用于与远程数据存储库交互的远程服务提供者的类型不可知的语法创建对数据对象的动作的描述;
将动作的描述转换成第一远程服务提供者的语法,以编写被配置为使第一远程服务提供者执行动作的命令;以及
通过网络将命令传输到第一远程服务提供者以使得对远程数据存储库中的数据对象执行动作。
2.如权利要求1所述的计算机实现的方法,还包括:
确定第一远程服务提供者不可用于接收命令;
将动作的描述存储在移动设备上;以及
延迟编写命令,直到移动设备接收到第一远程服务提供者可用的指示。
3.如权利要求1所述的计算机实现的方法,还包括确定第二远程服务提供者不可用于接收命令,其中响应于确定第二远程服务提供者不可用于接收命令而执行以第一远程服务提供者的语法编写命令并将命令传输到第一远程服务提供者。
4.如权利要求1所述的计算机实现的方法,还包括从多于一个远程服务提供者的集合当中选择第一远程服务提供者,所述多于一个远程服务提供者的集合中的每个远程服务提供者都能够访问远程数据存储库,其中所述选择是基于第一远程服务提供者满足一个或多个准则的,所述一个或多个准则包括(i)远程服务提供者的当前可用性和(ii)动作的复杂性中的至少一个。
5.如权利要求1所述的计算机实现的方法,其中对数据对象的动作的描述的不可知语法包括:
对于动作改变的数据对象的每个属性,(i)对该属性的改变是“更新”、“删除”或“创建”动作之一的指示,以及(ii)在改变是“更新”或“创建”动作的情况下,该属性的新值的指示;
对于动作改变的数据对象的每个子对象,(i)该子对象是子对象的指示,(ii)对子对象的改变是“更新”、“删除”或“创建”动作之一的指示;(iii)子对象的主键的值的指示,以及(iv)对该子对象的改变的指示,其中改变的指示是使用不可知语法来描述的。
6.一种存储计算机可执行指令的非暂态计算机可读介质,所述计算机可执行指令在至少由计算机的处理器执行时使计算机:
在移动设备上接收指示对存储在远程数据存储库中的数据对象的创建、更新或删除动作的输入;
响应于接收到输入,以用于与远程数据存储库交互的远程服务提供者的类型不可知的语法创建对数据对象的动作的描述;
将动作的描述转换成第一远程服务提供者的语法,以编写被配置为使第一远程服务提供者执行动作的命令;以及
通过网络将命令传输到第一远程服务提供者以使得对远程数据存储库中的数据对象执行动作。
7.如权利要求6所述的非暂态计算机可读介质,还包括指令,所述指令在至少由处理器执行时使计算机:
确定第一远程服务提供者不可用于接收命令;
将动作的描述存储在移动设备上;以及
延迟编写命令,直到移动设备接收到第一远程服务提供者可用的指示。
8.如权利要求6所述的非暂态计算机可读介质,还包括指令,所述指令在至少由处理器执行时使计算机确定第二远程服务提供者不可用于接收命令,其中响应于确定第二远程服务提供者不可用于接收命令而执行以第一远程服务提供者的语法编写命令并将命令传输到第一远程服务提供者。
9.如权利要求6所述的非暂态计算机可读介质,还包括指令,所述指令在至少由处理器执行时使计算机从多于一个远程服务提供者的集合当中选择第一远程服务提供者,所述多于一个远程服务提供者的集合中的每个远程服务提供者都能够访问远程数据存储库,其中所述选择是基于第一远程服务提供者满足一个或多个准则的,所述一个或多个准则包括(i)远程服务提供者的当前可用性和(ii)动作的复杂性中的至少一个。
10.如权利要求6所述的非暂态计算机可读介质,其中对数据对象的动作的描述的不可知语法包括:
对于动作改变的数据对象的每个属性,(i)对该属性的改变是“更新”、“删除”或“创建”动作之一的指示,以及(ii)在改变是“更新”或“创建”动作的情况下,该属性的新值的指示;
对于动作改变的数据对象的每个子对象,(i)该子对象是子对象的指示,(ii)对子对象的改变是“更新”、“删除”或“创建”动作之一的指示;(iii)子对象的主键的值的指示,以及(iv)对该子对象的改变的指示,其中改变的指示是使用不可知语法来描述的。
11.一种计算系统,包括:
处理器;
存储器,可操作地连接到处理器;
非暂态计算机可读介质,可操作地连接到处理器和存储器并存储计算机可执行指令,所述计算机可执行指令在至少由处理器执行时使计算系统:
在移动设备上接收指示对存储在远程数据存储库中的数据对象的创建、更新或删除动作的输入;
响应于接收到输入,以用于与远程数据存储库交互的远程服务提供者的类型不可知的语法创建对数据对象的动作的描述;
将动作的描述转换成第一远程服务提供者的语法,以编写被配置为使第一远程服务提供者执行动作的命令;以及
通过网络将命令传输到第一远程服务提供者以使得对远程数据存储库中的数据对象执行动作。
12.如权利要求11所述的计算系统,其中权利要求的非暂态计算机可读介质还包括指令,所述指令在至少由处理器执行时使计算系统
确定第一远程服务提供者不可用于接收命令;
将动作的描述存储在移动设备上;以及
延迟编写命令,直到移动设备接收到第一远程服务提供者可用的指示。
13.如权利要求11所述的计算系统,其中权利要求的非暂态计算机可读介质还包括指令,所述指令在至少由处理器执行时使计算系统确定第二远程服务提供者不可用于接收命令,其中响应于确定第二远程服务提供者不可用于接收命令而执行以第一远程服务提供者的语法编写命令并将命令传输到第一远程服务提供者。
14.如权利要求11所述的计算系统,其中权利要求的非暂态计算机可读介质还包括指令,所述指令在至少由处理器执行时使计算系统从多于一个远程服务提供者的集合当中选择第一远程服务提供者,所述多于一个远程服务提供者的集合中的每个远程服务提供者都能够访问远程数据存储库,其中所述选择是基于第一远程服务提供者满足一个或多个准则的,所述一个或多个准则包括(i)远程服务提供者的当前可用性和(ii)动作的复杂性中的至少一个。
15.如权利要求1所述的计算系统,其中对数据对象的动作的描述的不可知语法包括:
对于动作改变的数据对象的每个属性,(i)对该属性的改变是“更新”、“删除”或“创建”动作之一的指示,以及(ii)在改变是“更新”或“创建”动作的情况下,该属性的新值的指示;
对于动作改变的数据对象的每个子对象,(i)该子对象是子对象的指示,(ii)对子对象的改变是“更新”、“删除”或“创建”动作之一的指示;(iii)子对象的主键的值的指示,以及(iv)对该子对象的改变的指示,其中改变的指示是使用不可知语法来描述的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/751,351 | 2020-01-24 | ||
US16/751,351 US11044298B1 (en) | 2020-01-24 | 2020-01-24 | Data provider agnostic change handling in mobile client applications |
PCT/US2020/066533 WO2021150341A1 (en) | 2020-01-24 | 2020-12-22 | Data provider agnostic change handling in mobile client applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114746854A true CN114746854A (zh) | 2022-07-12 |
Family
ID=74175971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080083653.4A Pending CN114746854A (zh) | 2020-01-24 | 2020-12-22 | 移动客户端应用中数据提供者不可知的变更处置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11044298B1 (zh) |
EP (1) | EP4094162A1 (zh) |
JP (1) | JP2023511942A (zh) |
CN (1) | CN114746854A (zh) |
WO (1) | WO2021150341A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11755826B2 (en) * | 2020-06-30 | 2023-09-12 | Atlassian Pty Ltd. | Systems and methods for creating and managing tables |
US20220114333A1 (en) * | 2020-10-14 | 2022-04-14 | Salesforce.Com, Inc. | Workbooks for online tools |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7797286B2 (en) * | 2004-05-21 | 2010-09-14 | Sap Ag | System and method for externally providing database optimizer statistics |
US10411954B2 (en) * | 2015-10-13 | 2019-09-10 | International Business Machines Corporation | Pattern based network configuration |
US10691694B2 (en) | 2017-06-13 | 2020-06-23 | Oracle International Corporation | Method and system for defining an object-agnostic offlinable synchronization model |
US10846283B2 (en) | 2017-06-13 | 2020-11-24 | Oracle International Corporation | Method and system for defining an adaptive polymorphic data model |
CN109756542A (zh) | 2017-11-06 | 2019-05-14 | 北京航天长峰科技工业集团有限公司 | 一种基于web api的rest框架数据服务系统 |
-
2020
- 2020-01-24 US US16/751,351 patent/US11044298B1/en active Active
- 2020-12-22 JP JP2022544792A patent/JP2023511942A/ja active Pending
- 2020-12-22 EP EP20839207.6A patent/EP4094162A1/en active Pending
- 2020-12-22 CN CN202080083653.4A patent/CN114746854A/zh active Pending
- 2020-12-22 WO PCT/US2020/066533 patent/WO2021150341A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2021150341A1 (en) | 2021-07-29 |
JP2023511942A (ja) | 2023-03-23 |
EP4094162A1 (en) | 2022-11-30 |
US11044298B1 (en) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11243981B2 (en) | Database replication based on data access scores | |
US9519664B1 (en) | Index structure navigation using page versions for read-only nodes | |
US7603366B1 (en) | Universal database schema and use | |
US9684565B2 (en) | Plural architecture master data management | |
US10019452B2 (en) | Topology aware distributed storage system | |
US8762408B2 (en) | Optimizing software applications | |
US9762670B1 (en) | Manipulating objects in hosted storage | |
EP2874077B1 (en) | Stateless database cache | |
JP2019503525A (ja) | 連続クエリ処理におけるイベントバッチ処理、出力シーケンス化、およびログベースの状態記憶 | |
US11275806B2 (en) | Dynamic materialization of feeds for enabling access of the feed in an online social network | |
CN114746854A (zh) | 移动客户端应用中数据提供者不可知的变更处置 | |
US12056016B2 (en) | Slice searching for efficient granular level recovery in data protection | |
CN111400350B (zh) | 配置数据读取方法、系统、电子设备和存储介质 | |
US20140032703A1 (en) | System and method for an expandable computer storage system | |
US8549007B1 (en) | System and method for indexing meta-data in a computer storage system | |
US10827035B2 (en) | Data uniqued by canonical URL for rest application | |
US11556316B2 (en) | Distributed extensible dynamic graph | |
US12001408B2 (en) | Techniques for efficient migration of key-value data | |
US8745072B2 (en) | Virtual directory server changelog | |
US11954538B2 (en) | Updating a state of a client device using a limited event size protocol | |
US11409605B2 (en) | Failover system for database unavailability | |
US11960476B2 (en) | Techniques for concurrent data value commits | |
US11914575B2 (en) | Data persistency models for software applications | |
US20230014029A1 (en) | Local indexing for metadata repository objects | |
US20220012214A1 (en) | Techniques and Architectures for Utilizing a Change Log to Support Incremental Data Changes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |