CN102725966A - 用于移动业务对象的挂起状态管理 - Google Patents
用于移动业务对象的挂起状态管理 Download PDFInfo
- Publication number
- CN102725966A CN102725966A CN2010800602006A CN201080060200A CN102725966A CN 102725966 A CN102725966 A CN 102725966A CN 2010800602006 A CN2010800602006 A CN 2010800602006A CN 201080060200 A CN201080060200 A CN 201080060200A CN 102725966 A CN102725966 A CN 102725966A
- Authority
- CN
- China
- Prior art keywords
- change
- hang
- data line
- data
- present
- 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.)
- Granted
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Telephonic Communication Services (AREA)
Abstract
提供了一种系统、方法和计算机程序产品,其用于调用操作以更改在本地数据库中的表的当前数据行。其结果是,挂起的更改数据行被插入该表中,由主键标区分,该主键标包括共有的键值和挂起的更改指示符。然后提交该挂起的更改数据行,以用于同步。
Description
技术领域
本发明一般涉及数据库同步,且更具体地,涉及用于数据同步的通信方法。
背景技术
无论何时(通常在用户指定的时机),当通过执行完整的同步事件而获得连通性时,移动设备传统地依赖于与企业系统的同步。例如在放置于对接架(docking cradle)中时,移动设备可具有连通性。移动设备在对接后执行其数据的完整同步、上传和下载。
然而,当上传的信息是过时的或当另一移动设备已在同一断开连接期间执行了更新时,这些传统的方法无法提供足够的信息来解决设备所依赖的数据方面的冲突。此外,传统方法不包括使得移动设备可以可靠地发送和接收这些更新的通信方法。
因此,期望获得用于使来自移动设备的数据与企业系统同步的改进的方法。
发明内容
本发明的实施方式包括一方法,该方法包括:调用操作以更改来自本地数据库中的表的当前数据行;在该表中插入挂起的(pending)更改数据行;以及,提交来自所述挂起的更改数据行的数据,其中,挂起的更改数据行包括更改的属性,其中,挂起的更改数据行和当前数据行由主键标区分,主键标包括由挂起的更改数据行、当前数据行和挂起的更改指示符共有的键值。
另外,本发明的实施方式包括具有存储在其上的计算机可执行指令的计算机可读介质,如由计算设备执行,则该计算机可执行指令致使计算设备执行一方法,该方法包括:调用操作以更改来自本地数据库中的表的当前数据行;在表中插入挂起的更改数据行;以及,提交来自挂起的更改数据行的数据,其中,挂起的更改数据行包括更改的属性,其中,挂起的更改数据行和当前数据行由主键标区分,主键标包括由挂起的更改数据行、当前数据行与挂起的更改指示符共有的键值。
本发明的实施方式还包括一种系统,该系统包含存储器和一个或多个处理器;该存储器被设置为存储模块,该模块包括调用模块、插入模块和提交模块;调用模块被设置为调用操作以更改来自本地数据库中的表的当前数据行;插入模块被设置成在该表中插入挂起的更改数据行,其中挂起的更改数据行包括更改的属性,其中挂起的更改数据行和当前数据行由主键标区分,主键标包括由挂起的更改数据行、当前数据行和挂起的更改指示符共有的键值;提交模块被设置为提交来自挂起的更改数据行的数据;一个或多个处理器被设置为处理所述模块。
在下文中,参考附图详细描述本发明的其他特征和优点以及本发明的各实施方式的结构和操作。应指出,本发明不限于在此所描述的特定实施方式。在此,仅以说明为目的呈现这些实施方式。基于包含在此的教导,另外的实施方式对相关领域技术人员来说将是显而易见的。
附图说明
包括在本文中且构成说明书的一部分的附图示出了本发明的实施方式,其与说明书一起用于进一步解释本发明的原理且使得相关领域技术人员可以实施和使用本发明。
图1是根据本发明的一实施方式的、示例性的企业网络。
图2A是根据本发明的一实施方式的、示出了各步骤的流程图,其中,可通过这些步骤来操作移动设备的客户端应用程序,从而针对业务对象向同步服务器提交创建、更新或删除消息,用于传送至企业信息系统。
图2B是根据本发明的一实施方式的、示出了各步骤的流程图,其中,通过这些步骤,企业信息系统处理所接收的创建、更新或删除消息。
图3是根据本发明的一实施方式的、示出了各步骤的流程图,其中,通过这些步骤,移动设备上的客户端应用程序处理从同步服务器处接收到的同步事件。
图4是根据本发明的一实施方式的、示出了各步骤的流程图,其中,通过这些步骤,客户端应用程序启动创建请求。
图5是根据本发明的一实施方式的、示出了各步骤的流程图,其中,通过这些步骤,客户端应用程序启动更新操作。
图6是根据本发明的一实施方式的、示出了各步骤的流程图,其中,通过这些步骤,客户端应用程序启动删除操作。
图7是根据本发明的一实施方式的、示出了各步骤的流程图,其中,通过这些步骤将客户端应用程序设置为对重放操作回调函数(replay operation callback)进行响应。
图8是根据本发明的一实施方式的、示出了各步骤的流程图,其中,通过这些步骤将同步服务器设置为检测和丢弃复本消息。
图9是根据本发明的一实施方式的、示出了各步骤的流程图,其中,通过这些步骤,可以通过使用缓存表来执行基于复本的同步。
图10是根据本发明的一实施方式的、示出了各步骤的流程图,其中,通过这些步骤,可以将缓存表和下载指针与实体订阅(entitysubscription)一起使用,以向请求更新的客户端应用程序有效地提供输入(import)消息。
图11是根据本发明的一实施方式的、示出了各步骤的流程图,其中,通过这些步骤,输入消息可以一起被分批处理。
图12是根据本发明的一实施方式的、示出了各步骤的流程图,其中,通过这些步骤来完成由服务器启动的同步。
图13示出了一示例计算机系统,可以在其中实施本发明的实施方式。
现在,将参考附图描述本发明。通常,在附图中,相同的参考标记表示相同或功能相似的元件,此外,通常地,参考标记最左边的数字表示参考标记第一次出现的附图。
具体实施方式
I介绍
在下文中,参考示出了符合本发明的示例性实施方式的附图来详细描述本发明。其他实施方式也是可能的,且在本发明的精神和范围内可以对这些实施方式进行修改。因此,这些详细的描述并非旨在限制本发明。当然,本发明的范围由所附的权利要求限定。
如下所述地,对本领域技术人员来说显而易见的是,可以在软件、硬件、固件和/或附图中所示的实体中实施本发明。任何具有实施本发明的专用硬件控制的实际的软件代码并不用于限制本发明。因此,应理解,在本发明的范围和精神内能够进行实施方式的修改和变化,在这一前提下描述本发明的操作性能。
图1是根据本发明的一实施方式的示例性企业网络100。根据本发明的另一实施方式,企业网络100包括移动设备102。示例性地而非限制性地,移动设备102可包括例如加拿大安大略省滑铁卢市行动研究公司(Research In Motion)的黑莓(BlackBerry)或加利福尼亚州库比蒂诺苹果电脑公司(Apple Computer,Inc.)的苹果手机(Apple iPhone)的移动设备。相关领域技术人员将意识到,在此所描述的可用于移动设备102的技术通常也可以用于非移动设备,例如个人计算机。
根据本发明的一实施方式,移动设备102可具有安装在其上的客户端应用程序104。根据本发明的一实施方式,客户端应用程序104可以与设备输入和输出(“I/O”)106接口,该设备输入和输出为例如监控器、键盘或触摸屏显示器。客户端应用程序104也可以与本地数据库108接口,该本地数据库存储供客户端应用程序104使用的数据集。
根据本发明的一实施方式,移动设备102与同步服务器110通信。根据本发明的另一实施方式,类似地,额外的移动设备112a-c与同步服务器110通信。如可以被相关领域技术人员所理解的,可通过任何一个或多个通信通道将各种移动设备连接至同步服务器110。在一实施方式中,例如,移动设备102可以借助蜂窝通信网络和互联网上的通信跃点(communication hops)与同步服务器110连接。各种通信跃点本身可以是公共或私有网络,且可以包括位于互联网以及各种私有内部网上的组件。
根据本发明的一实施方式,同步服务器110位于一个或多个移动设备102、112a-c以及企业信息系统(“EIS”)114之间。同步服务器110有助于捕获由EIS 114产生的对相关数据的更改,且将该更改提供给移动设备102和112a-c。同步服务器110也有助于捕获由移动设备102和112a-c产生的更改,且将该更改提供至EIS 114。以这种方式,本地数据库108中可由移动设备102获得的数据可以与来自EIS 114的相应数据存储以及企业数据系统116的数据同步。根据本发明的一实施方式,同步服务器110保持缓存,该缓存反映来自企业数据系统116的数据。
根据本发明的一实施方式,EIS 114连接至同步服务器110,以允许同步服务器110提供上述数据同步服务。如可以被相关领域技术人员所理解的,EIS 114同样可以通过任何通信通道与同步服务器110通信。相关领域技术人员还将理解,EIS 114与同步服务器110可以共享同一物理服务器或分布式服务器作为其中的独立软件组件,或者甚至可以被编译成一个组合应用程序。因此,应理解,EIS 114与同步服务器110可以分布在企业网络100的多个不同位置上,在图1中以示例性方式显示为单独的计算设备,但不限于此。
根据本发明的一实施方式,如前文中所述的,EIS 114还包括企业系统116或以通信方式连接至企业系统116。根据本发明的另一实施方式,本地数据库108中的数据包括例如来自企业系统116的数据的子集。根据本发明的一实施方式,该数据可以为移动业务对象(“MBO”)的形式。MBO是一种可以在企业信息系统114与移动设备102之间被同步的业务对象。MBO可以由本地数据库108中的存储所保存,以允许在未连接至EIS 114期间由移动设备102访问。在2009年7月15提交的名为“元数据驱动的移动业务对象(Metadata Driven MobileBusiness Objects)”的12/503,573号美国专利申请(律师案号1933.0720001)中提供了MBO的示例,该文件通过引用方式整体并入于此,但本发明不限于此。
相关领域技术人员将意识到,可通过多种不同的方式处理客户端应用程序104与同步服务器110之间的通信。根据本发明的一实施方式,通信框架直接嵌入如由代码生成器或开发者提供的客户端应用程序104中。根据本发明的一额外实施方式,可在移动设备102上配置助手应用程序,以管理该通信。
II示例性业务对象模型
根据本发明的一实施方式,可以使用被称为XML应用程序(“AFX”)的、基于公众可用XML的专用领域语言对MBO建模。相应领域技术人员将意识到,可通过不同的方式对MBO建模,包括通过使用可视化建模工具以图形方式建模或通过使用专用领域语言(如AFX文本)以文本方式建模。相应地,在此通过使用AFX所呈现和讨论的示例是示例性的而非限制性的。
根据本发明的一实施方式,程序包定义(package definition)提供了用于定义移动设备102内的本地数据库的名称的数据库定义、数据库类(database-class)定义以及零或多个实体定义。数据库类定义用于识别代表本地数据库108的类。若存在实体定义,则其每一个对应一个MBO。实体定义转而定义代表相应的MBO的类的名称。
根据本发明的一实施方式,实体本身存储在本地数据库108中。根据本发明的另一实施方式,通过使用至少一个代理键(surrogate key)和替代键(alternate key)来键入实体。代理键是由移动设备102所使用的键值,以说明移动设备未能访问EIS′114的键创建过程的原因。若客户端发觉存在用于实体的EIS 114键,则该键可用作替代键。根据本发明的另一实施方式,由同步服务器110将代理键提供至移动设备102,以作为将根据需要被分配的一批键。
根据本发明的另一实施方式,实体定义包括对EIS 114内的相应更改的操作定义。示例性地而非限制性地,该操作定义用于创建、更新或删除EIS 114内的数据。根据本发明的一实施方式,实体定义也可提供命名查询,命名查询是可由移动设备102提出的针对本地数据库108的预定义查询。根据本发明的另一实施方式,实体定义还包括:表示可将由移动设备102产生的更改公开给同步服务器110的定义,该定义还表示将EIS产生的更改订阅给移动设备102,以用于下载。
结合上述要素的非限制性的示例性对象模型的内容如下:
在上述示例性对象模型中,与由类“MyDatabase”表示的本地数据库108“my-bank”相关的程序包“com.example.bank”包含名为“Account”的单一实体。该实体由代理键来键入,具有由账户ID(account ID)定义的替代键,在此情况下该替代键是由EIS 114的后台系统所使用的实际的唯一键。
根据本发明的另一实施方式,账户实体也具有多个属性,包括上述代理键和账户名称,还包括对应于账户的用户ID和账户余额。账户实体也定义一查询“findByCustomer”,在MBO的情况下,其允许具有相应的用户ID的特定账号被查找并使用。
此外,根据本发明的另一实施方式,账户实体定义多个操作,所述多个操作描述用于创建、更新和删除数据的EIS操作,其对应于来自企业数据系统116的实体。
根据本发明的另一实施方式,代码生成器在程序包定义上运行,从而产生包含在客户端应用程序104中的代码。这允许客户端应用程序104的开发者快速激活客户端应用程序104,以协调移动设备102与同步服务器11之间的更改的下载与上传。根据本发明的另一实施方式,代码生成器也可生成用于在同步服务器110上执行的代码。
基于上述示例性的程序包定义,可以对客户端应用程序104进行编码,以使用由代码生成器从程序包定义中派生的生成代码来执行特定功能。例如,可以调用由上述程序包定义所产生的代码,以解析来自客户端应用程序104的下列代码样本:
根据本发明的一实施方式,该代码对由代码生成器自动产生的类进行调用。例如,段Account.findByCustomer("123")利用命名查询"findByCustomer"将匹配的账户返回至"accounts"变量中。然后,对于"accounts"中的每个结果"a",可以显示相应的账户ID和余额。
根据本发明的一实施方式,不使用命名查询"findByCustomer",终端用户可指定动态查询中的选择标准。代码生成器可指定多个选项,用于开发者在定义所需查询时从中进行选择。例如,可由开发者定制下列示范代码以搜索与特定属性匹配的账户:
根据本发明的一实施方式,可为开发者提供下拉式菜单或其他输入接口功能,以定制在上述示例中使用的属性和测试值。
在上述示例中,每个账户代表一个MBO的实例。如上所述的,且如在示例性对象模型中所示出的,根据本发明的一实施方式,MBO可支持激活对EIS 114的更改说明的功能。在一示例性实施方式中,这些更改是在MBO上执行的创建、更新或删除操作。继续以上述示例账户实体为例,但非限制性地,可以通过下述代码更新账户余额:
该示例性的代码段选择待更改的账户,确定预存金额,且将其应用至账户余额。根据本发明的一实施方式,当准备应用该更改时,调用account.update()方法。类似地,若创建新的账户,则调用account.create()方法,以将该账户提交给本地数据库108。account.delete()方法可从本地数据库108中删除该账户。根据本发明的一实施方式,这些更改全部存储在本地数据库108内,作为挂起的更改。根据本发明的另一实施方式,本地数据库108保留更改之前的初始状态的拷贝。在因任何原因由EIS 114针对企业数据系统116进行的数据重放失败时,如有需要,这允许恢复本地数据库108。
根据本发明的一实施方式,当客户端应用程序104准备将挂起的更改提交给同步服务器110以用于对EIS 114同步时,调用submitPending()方法(例如account.submitPending()),从而对挂起的更改排序以用于发送。根据本发明的另一实施方式,在消息中发送所述挂起的更改,这将下文中详细进行描述。
根据本发明的另一实施方式,发送至同步服务器110的消息包括所述挂起的更改,也包括初始状态。通过提交挂起状态和初始状态,EIS 114可以避免、删除或解决一些冲突。继续以先前的示例性实体为例,可在不知道其他更新的情况下,由两个移动设备更新同一账户的余额,以使各设备针对该更改的初始基础不一致。例如,按时间顺序:
●设备1针对账户123下载100的余额。
●设备2针对账户123下载100的余额。
●设备1将余额更新至200,但不立即调用account.submitPending()。
●设备2将余额更新至150,且调用account.submitPending()。
●EIS接收来自设备2的更新请求,且在企业数据系统上将当前余额更新至150。
●设备1此时调用account.submitPending()以表示初始状态余额为100且挂起的更改为200。
●基于来自设备2的所应用的更新,EIS将初始状态余额100与其本身报告的当前余额150进行比较。识别出不匹配,EIS可以将接收到的挂起的余额与初始状态余额(例如200-100)的差应用到当前余额150。
●设备1和设备2都同步到新余额250。
根据本发明的一实施方式,在EIS 114不能解决冲突的情况下,或如果EIS 114期望移动设备102解决该冲突,则EIS 114可以向客户端应用程序104提供失败通知。根据本发明的另一实施方式,EIS 114也可以为客户端104提供成功重放操作的通知。
图2A是根据本发明的一实施方式的、示出了各步骤的流程图200,其中,可通过这些步骤来操作移动设备102的客户端应用程序104,从而针对业务对象向同步服务器110提交创建、更新或删除("CUD")消息,以用于传送至EIS 114。该方法从步骤202开始进行至步骤204,其中产生MBO的创建、更新或删除。根据本发明的一实施方式,在步骤206中,CUD消息被提交给同步服务器110,该消息包括挂起的改变和初始状态两者。
根据本发明的一实施方式,在步骤208中,客户端应用程序104接收回调函数(callback)。根据本发明的一实施方式,该回调函数可表示EIS′114针对企业数据系统116而重放CUD消息的尝试是成功还是失败。根据本发明的一实施方式,由代码生成器生成的客户端应用程序104的一部分负责接收通知并响应该通知而回调已注册的函数。根据本发明的另一实施方式,当接收到通知时,客户端应用程序104的额外部分注册回调处理器,以接收回调函数。步骤210描述了关于重放是否成功的确定流程。若该重放成功,则该方法在步骤218结束。
根据本发明的一实施方式,另一方面,若该重放不成功,则在步骤212中执行冲突解决流程。在上述示例中,当两个设备发送相冲突的余额更新时,EIS 114选择通过在第二余额更新中应用所述差异来解决该矛盾,以反映被加至账户中的数额。相关领域的技术人员将领会到,需要在不同的冲突场景中以不同的方式来解决冲突,且该示例性冲突解决流程不能适用于所有情况。相应地,在此提供适当的灵活性,以允许开发者合适地处理冲突。
例如,不试图基于在上述示例中从设备1接收到的数据来解决余额,相反,EIS 114可拒绝应用第二次接收到的更新,且向设备1发出表示更新失败的通知。在步骤212中,当客户端应用程序104通过EIS114得知该重放失败时,如有需要,则可应用其本身的冲突解决方案。
根据本发明的一实施方式,在步骤214中,确定是否重新提交CUD消息。若需要重新提交该消息,则在步骤206中进行所需要的更改以更正冲突且重新提交该消息。另外,根据本发明的另一实施方式,在步骤216中,通过删除来自本地数据库108的挂起状态数据来取消该更改。该方法在步骤218结束。
图2B是根据本发明的一实施方式的示出了各步骤的流程图250,其中,通过这些步骤,EIS 114处理所接收的CUD消息。该方法从步骤252开始,且进行至步骤254,在该步骤中接收到CUD消息,该消息包括挂起的更改和初始状态信息两者。
在步骤256中,将存储在企业数据系统116内的相应的当前数据与在更改请求中指定的初始状态进行比较。在步骤258中确定当前数据是否与初始数据相同。若相同,则EIS 114和客户端应用程序104清理同一初始状态基线,且可以容易地将挂起的更改应用到EIS 114。因此,在步骤266中针对企业数据系统116重放挂起的更改,且在步骤268中调用任何已注册的重放成功处理器。
另一方面,根据本发明的一实施方式,若当前数据和初始状态数据不同,则在步骤260中尝试冲突解决方案。例如,可以使用针对冲突账户余额更新的上述非限制性的示例性冲突解决流程。在步骤262中确定是否解决了冲突,若解决了冲突,则可在步骤266中重放数据,且在步骤268中确认回调处理器成功。例如,若EIS 114选择使用前述解决流程来解决余额,则IES 114将具有足够的信息来针对企业数据系统116重放挂起的更改,且在步骤268中发出成功信号。
然而,根据本发明的一实施方式,若不能解决冲突,或若EIS 114已经被设置为不尝试解决该冲突,则在步骤264中生成重放失败回调函数。该方法在步骤270结束。
IV挂起状态管理技术
虽然提供挂起的更改的这种能力与初始状态一起使得EIS 114能够解决多个冲突,而且如有需要,也允许客户端应用程序104倒转所述挂起的更改,在这些更改通过EIS 114运行其自己的进程的同时提供一种可靠地保持移动设备102上的所有信息的机制是有益的。根据本发明的一实施方式,直至EIS 114指出企业数据系统116已被更新从而反映挂起的更改,才将由客户端应用程序104在本地数据库108内产生的挂起的更改视为是最终的(即,提交的)更改。相关领域的技术人员将意识到,对现存数据的更改可包括对本地数据库108中存在的MBO的一个或多个属性的更改。
代码生成器可以被设置为协助管理该信息的。根据本发明的一实施方式,当代码生成器运行时,对于每个实体,在本地数据库108内生成两个表。根据本发明的一实施方式,这两个表称为“主表(maintable)”和“初始状态表(original state table)”。
根据本发明的一实施方式,主表用于反映由移动设备102所接收的数据的最新状态。根据本发明的另一实施方式,无论何时,当从同步服务器110接收到数据时,将该数据置于主表内作为最新已知的数据,通常将其视为反映企业数据系统116的当前状态。假定移动设备102存在间歇连通性的可能性,且还有最后的机会将移动设备102与同步服务器110同步,则主表中的数据可能是过时的。然而,在此描述的冲突解决处理流程,包括如有需要则可能删除更改,能够考虑到移动设备102将该可能过时的数据作为有效的最当前数据进行处理的这种情况。
另外,无论何时,当客户端启动对现有数据的更改(通常通过执行更新或删除功能)时,则该数据的初始状态首先被保存在初始状态表中,且将挂起的更改添加至主表。在下文中,将参考图4、5和6进一步详细描述可将客户端应用程序104设置为处理创建、更新和删除请求的各种方式。
继续以前述的实体示例为例,基于账户实体的主表可具有下述形式:
基于账户实体的初始状态表可具有下述形式:
在上述示例性的主表中,根据本发明的一实施方式,与实体有关的属性可被创建作为该表中的列。此外,添加pendingFlag,并将其与surrogateKey结合使用,以作为账户表(Account table)的键。在下文中将进一步详细描述域pendingChange、replayCounter、replayPending和replayFailure。初始状态表保存初始属性,且其是通过使用代理键(surrogate key)而键入的。
通过将代理键和挂起的标识(pending flag)结合使用来键入该主表,对于同一代理键可能存在两个实体。当挂起的标识为“假”时,这两个实体对应于该数据的最新下载版本,且当挂起的标识为“真”时,这两个实体对应于挂起的更改。相关领域的技术人员意识到,存在其他用于管理挂起状态和所下载的状态数据的方法,所示出的设置是示例性的而非限制性的。
图3是根据本发明的一实施方式的示出了各步骤的流程图300,其中,通过这些步骤,移动设备102上的客户端应用程序处理从同步服务器110处接收到的同步事件。相关领域的技术人员将意识到,基于在此的公开,可以多种方法来处理同步,包括传统的同步方法以及在此进一步详细描述的基于消息的同步。
该方法从步骤302开始,进行到步骤304,其中,客户端应用程序104接收来自同步服务器110的更改。在步骤306中,确定特定类型的更改。根据本发明的一实施方式,这可以是创建308a、更新308b或删除308c请求。
根据本发明的一实施方式,若该请求为创建308a请求,则在步骤310a中,客户端应用程序104通过对包含新接收的数据的主表添加一行来处理该请求。表示最新下载的状态的该数据具有被设定为“假”的挂起的标识。根据本发明的另一实施方式,若表中已经存在对应条目(例如,相同的代理键,其具有被设定为“假”的挂起的标识),则相反地,创建308a请求可被视为更新308b,以确保保持与EIS 114同步。应用所述创建308a请求的示例性查询可为:
所创建的行表示:对应于代理键1000的新条目具有相应的属性值,该新条目不是挂起的更改(即,其为最新下载的状态)。
根据本发明的一实施方式,在步骤308b中接收更新请求。在步骤310b中使用该数据对主表内具有相应的代理键和具有设定为“假”的挂起的标志的行进行更新。根据本发明的另一实施方式,若不存在要更新的相应的行,则该更新请求被视为创建308a。继续前述示例,应用该更新308b请求的示例性查询可为:
update Account set balance=150
where surrogateKey=1000 and pendingFlag=false
此外,当通过同步服务器110接收到的更新请求表示最近下载的状态时,该更改应影响具有被设定为“假”的挂起的标志的条目。
相反,若该请求为删除请求308c,则在步骤310c中,从主表中删除相应的条目。如前所述,根据本发明的一实施方式,该相应的条目可与代理键相匹配且具有被设定为“假”的挂起的标志。应用该删除308c请求的示例性查询可为:
delete from Account
where surrogateKey=1000 and pendingFlag=false
步骤312说明了对这些更改的处理。由通过同步服务器110从EIS114处接收的CUD消息引入的任何更改都被视为MBO的最新下载的状态。相关领域的技术人员将意识到,此处的特定实施方式优选为尽可能好地保持与企业数据系统116的同步,但也可以使用其他方法。该方法在步骤314结束。
客户端应用程序104也可以启动CUD消息,需要通过同步服务器110将该消息与企业数据系统116中的数据同步。图4是根据本发明的一实施方式的示出了各步骤的流程图400,其中,通过这些步骤,客户端应用程序104启动创建请求。该方法从步骤402开始,进行到步骤404,其中,客户端应用程序104调用创建操作。在步骤406中,响应该调用,将挂起的行插入主表中,使其属性被设为期望属性,且挂起的标志被设定为“真”。
另外地,根据本发明的一实施方式,将前述的pendingChange域设置为表示该更改为创建操作。根据本发明的另一实施方式,这通过将该域设置为“C”或者设置为其他被理解为表示创建操作的字符串而完成。
客户端应用程序104调用操作(例如创建操作)与客户端应用程序104实际提交该操作之间产生了差别。对该操作的调用对应于上文中详细描述的update()方法(例如account.update()),该方法将更改存储到本地数据库108中作为挂起的更改。根据本发明的一实施方式,该操作的提交(例如account.submitPending())表示:通过同步服务器110对提交至EIS 114的更改进行排序。在提交之前,客户端应用程序104可选择取消该更改(例如account.cancelPending()),其简单地将挂起的更改从主表中删除。
根据本发明的一实施方式,当客户端应用程序104调用创建操作时,replayCounter列被设置为唯一的非零值,其大于之前在本地数据库108中使用的任何replayCounter值。如随后可看到的,这提供了一种功能,该功能用于将来自EIS114的响应匹配到挂起的更改。相关领域技术人员将意识到,存在将挂起的更改与响应消息相关联的其他方法,且replayCounter(以及replayPending和replayFailure)域的使用是示例性的而非限制性的。
继续前述示例,且非限制性的,对创建操作的调用可导致下述示例性的查询被执行:
在该示例性的插入方法中,在主表中创建了具有代理键值1000的挂起的更改(其由为“真”的pendingFlag域指定)。挂起的更改被标记为针对创建的“C”,且重放计数器设为20001,其在该示例中是重放计数器值的向上计数序列中待使用的下一个数字。
根据本发明的一实施方式,在步骤408中,当由客户端应用程序104将该创建操作提交至同步服务器110时,将更改请求列队至同步服务器,同步服务器包括待应用的挂起的更改。然后,replayPending列被设为指示客户端应用程序104正在等待对来自EIS 114的请求的响应,使用下述示例性的查询:
update Account set replayPending=20001
where surrogateKey=1000 and pendingFlag=true
通过设置replayPending域,能够将该挂起的更改匹配至接收自EIS114的回调函数,要么成功要么失败。该方法在步骤412结束。
图5是根据本发明的一实施方式的示出了各步骤的流程图500,其中,通过这些步骤,客户端应用程序104启动更新操作。在步骤504中,客户端应用程序104调用更新操作。当使用上文中详细描述的创建操作时,这导致在主表中插入挂起的行。在一实施方式中,这通过使用下述示例性的查询完成:
该操作具有将账户ID 123的余额更新为200的效果。然而,并不是更改主表中最新下载的状态,而是创建挂起状态版本(pendingFlag=true),使用相同的代理键。在此,该更改标记为针对更新的“U”,且给出下一个唯一的replayCounter值20002。
然而,也需要保存该MBO数据的初始状态,使得其可以在冲突解决中被使用。为此,示例性查询可以为:
insert intoAccount_os(surrogateKey,accountId,customerId,balance)
values(1000,″123″,″Jim",100)
通过在初始状态表中保存初始状态,在执行更新时保留关于MBO的初始状态的信息。尽管在执行上述查询后,插入初始状态表中的MBO数据很可能与主表中的被下载的状态数据相同,会发生能够更改被下载的状态数据的其他事件,例如从同步服务器110下载更新过的数据。在这样的事件中,仍需要知晓该初始状态,该挂起的更新是基于该初始状态的。
根据本发明的一实施方式,若更新的MBO已经具有相关的挂起状态,则更新现有的挂起的行,而不是插入新的行。此外,前述被创建的初始状态将被保留,以作为用于随后的挂起的更改的基础。用于该更新的示例性查询可以为:
update Account set balance=200,pendingChange=″U″,
replayCounter=20002
where surrogateKey=1000 and pendingFlag=true
根据本发明的一实施方式,在步骤510中,客户端应用程序104提交挂起的更新操作。根据本发明的一实施方式,如上述创建操作,将改变请求列队至同步服务器,该同步服务器包括待应用的挂起的更改。然后,replayPending列被设为指示客户端应用程序104正在等待对来自EIS 114请求的响应,使用下述示例性的查询:
update Account set replayPending=20002
where surrogateKey=1000 and pendingFlag=true
通过设置replayPending域,能够再次将该挂起的更改匹配至接收自EIS 114的回调函数,要么成功要么失败。该方法在步骤514结束。
图6是根据本发明的一实施方式的示出了各步骤的流程图600,其中,通过这些步骤,客户端应用程序104启动删除操作。根据本发明的另一实施方式,删除操作的特性在许多方面类似于更新操作,不同的是,该操作在pendingChange域中被标记为针对删除的“D”。
当使用更新时,在步骤604中,客户端应用程序104调用删除操作。其结果是,客户端应用程序104将该挂起的更改插入主表中,且在步骤606中适当地设置重放计数器。为此,示例性的查询可以为:
同样地,在步骤608中,将对应于初始状态的数据插入初始状态表中。为此,示例性的查询可以为:
insert intoAccount_os(surrogateKey,accountId,customerId,balance)
values(1000,″123″,″Jim″,100)
根据本发明的一实施方式,若被删除的MBO已经具有相关的挂起状态,则更新现有的挂起的行以指示删除,而不是插入新行。此外,前述被创建的初始状态将被保留,以作为用于随后的挂起的更改的基础。为此,该更新的示例性的查询可以为:
update Account set pendingChange=″D″,replayCounter=20003
where surrogateKey=1000 and pendingFlag=true
根据本发明的一实施方式,在步骤610中,客户端应用程序104提交删除操作,用于由EIS 114通过同步服务器110处理。根据本发明的一实施方式,在此,如前所述,将更改请求列队至同步服务器,该同步服务器包括待应用的挂起的更改。然后,replayPending列被设为指示客户端应用程序104正在等待对来自EIS 114请求的响应,使用下述示例性的查询:
update Account set replayPending=20003
where surrogateKey=1000 and pendingFlag=true
通过设置replayPending域,能够再次将该挂起的更改匹配至从EIS114接收的回调函数,要么成功要么失败。该方法在步骤614结束。
图7是根据本发明的一实施方式的示出说明各步骤的流程图700,其中,通过这些步骤将客户端应用程序104设置为对重放操作回调函数进行响应。相关领域技术人员将领会到,使用除回调函数之外的其他通知方法也可产生类似的效果,在此示出的回调函数是示例性而非限制性的。
根据本发明的一实施方式,该方法从步骤702开始,且进行至步骤704,其中客户端应用程序104被告知重放操作的结果。如上所述,其可以是回调函数的形式。在上文中参考图2B的流程图250进一步详细讨论了在EIS 114处的重放和所产生的回调函数的生成。
在步骤706中,确定特定的挂起的更改的重放是否成功。根据本发明的一实施方式,使接收成功的回调处理器上的回调函数与接收失败的回调处理器上的回调函数这两个步骤分开,从而进行处理。
若重放操作成功,则该方法运行至步骤708,其中将对应的挂起的行从主表中删除。根据本发明的一实施方式,只有当与成功重放相关的replayCounter值与挂起的行的replayPending值相匹配时,才发生该删除。根据本发明的另一实施方式,若不匹配,则忽略整个通知,以确保仅处理对最后提交的操作的响应。用于删除挂起的行的示例性查询可以为:
delete from Account
where surrogateKey=1000 and pendingFlag=true
此外,根据本发明的一实施方式,在步骤710中,从初始状态表中删除对应的初始行。用于删除该初始状态行的示例性查询可为:
delete from Account_os
where surrogateKey=1000
根据本发明的一实施方式,在步骤712中,通知成功的回调处理器。根据本发明的一实施方式,在由代码生成器提供的、且由开发者并入客户端应用程序104中的代码中执行在流程图700中概述的步骤。客户端应用程序104的开发者可具有额外的操作,其是否应被执行取决于是成功还是失败,且可注册成功或失败的回调处理器,以执行任何额外的处理。若已经注册了一个这样的回调处理器,则在步骤712中通知,且在步骤718中将控制移交给用于额外处理的该回调处理器。
根据本发明的一实施方式,相反地,若该重放操作失败,该方法运行至步骤714,其中,更新主表中的挂起的更改行,以反映该失败。如重放成功,仅当挂起的行的replayPending值和与成功重放相关的replayCounter值之间存在匹配时才执行这一操作。根据本发明的另一实施方式,若不匹配,则忽略整个通知,以确保仅处理对最后提交的操作的响应。相应地,用于更新挂起的行的示例性查询的内容可以为:
update Account set replayPending=0,replayFailure=20001
where surrogateKey=1000 and pendingFlag=true
根据本发明的一实施方式,在步骤716中,若注册了一个回调处理器,则通知用于客户端应用程序104的失败回调处理器。然后,在步骤718中,由客户端应用程序104响应该回调来执行任何额外的处理。该方法在步骤720结束。
V查询处理技术
上述用于在同一主表中保持挂起状态的方法(其中可驻留下载状态)允许同一MBO能够有两个现有的行,例如当存在挂起的更新或删除操作时。相应地,针对主表所写入的查询必须对可能的复本作出解释。
例如,如果对现有的MBO记录进行更新,则除了不存在挂起的更改之外,客户端应用程序104的开发者会遭遇下述难点:
此时,若运行同一查询来查找用户号123的账号,其将返回下载状态和挂起的更改两者,除非开发者的任务为解决该难点。
var newAccounts=Account.findByCustomer("123″);
assert newAccounts.length==oldAccounts.length;
除非进行一些后台处理,从而在由开发者运行的程序接收到查询结果之前过滤该查询结果,否则上述声明将失效。与其由开发者负责解决在下载状态行与挂起的更改之间的区分问题,不如透明地处理该问题。
根据本发明的一实施方式,使用代码生成器重写命名查询,以确保查询执行的结果能消除复本。根据本发明的另一实施方式,这通过返回针对结果的挂起的行(若存在)或返回下载的状态行而完成。
这允许对存在挂起状态的行进行额外的更改,但不依赖于那个挂起状态数据,因此也不依赖于对应于那个挂起状态的初始状态。通过遵循该方法,在后来的更新和删除(其中存在挂起的更改)中不需要再次创建初始状态,因为它们本质上并不依赖于与第一挂起的更改相同的初始状态。
使用前述讨论的命名查询Account.findByCustomer:
select a.*from Account a where a.customerId=:id
这一执行可返回两行,其中accountId=前一示例的firstAccount.accountId。一行具有pendingFlag=false,且另一行具有pendingFlag=true。在这样的情况下,由于上述原因,所期望的结果是具有pendingFlag=true的行。因此,可以通过使用针对初始状态表的相关子查询来重写该查询,例如,示例如下:
通过使用SQL外连语法实现上述查询重写。可替换地,可以针对主表而不是初始状态表生成相关子查询,但由于初始状态表所包含的行可能少于主表,可以通过使用上述查询而提高效率。相关领域技术人员将意识到,存在很多其他这样的重写,仅示例性地而非限制性地示出了上述查询。
根据本发明的另一实施方式,还可过滤与主表一起使用的动态查询,其中下载的状态和挂起的更改可共存。在一非限制性示例实施方式中,客户端应用程序104的开发者可使用动态查询生成模块来指定动态查询,如"query.where(AttributeTest.equal(attribute,testValue))",以测试查询“where”句中的属性值。根据本发明的另一实施方式,所产生的生成查询被自动设计为选择相应的挂起的更改(若存在)或下载的状态,且因此不需要主动重写该查询。
VI基于消息的同步
前面提及的由客户端应用程序104通过同步服务器110发送至EIS114且由EIS 114通过同步服务器110发送至客户端应用程序104的CUD消息可通过在此描述的消息系统通信。该消息同步方法被设计为支持前文中描述的挂起状态管理技术,且被设计为有效使用客户端资源和网络连接。然而,相关领域技术人员将意识到,在此描述的消息技术对于其他环境的适应性,所提供的对具有挂起状态管理的基于消息的同步的使用是示例性而非限制性的。
基于消息的同步("MBS")提供了异步地执行同步的能力。这意味着,例如,移动设备102不需要为了执行完全同步而一直等到其与同步服务器110建立连接的时刻,而是在连接可用的时候间歇地从同步服务器110接收消息或向其发送消息。
根据本发明的一实施方式,利用Jave消息服务("JMS")作为通信通道。根据本发明的另一实施方式,该消息是javax.jms.TextMessage类型的消息,其中文本内容为JavaScript对象符号("JSON")。相关领域技术人员将领会到,可利用其它的通信手段,且在此提供的在JMS上对JSON的使用是示例性而非限制性的。
根据本发明的一实施方式,消息被发送至JMS队列(例如mbs.N),其中N不大于同步服务器110中有效队列的数量。可使用多个队列,以允许同步服务器110处理来自多个客户端的同步请求。所述队列被设置为确保至少一次循序传送。对于相关领域技术人员来说显而易见的是,通过多次使用上述挂起状态管理技术来应用消息并不会导致不利影响,且因此其更实际地确保了至少一次传送,而非精确地一次传送。
根据本发明的一实施方式,所述消息被指定为用于客户端至服务器或服务至客户端的通信中。每个消息指定一组报头,报头定义待发送的值与该消息的结合。对相关领域技术人员来说显而易见的是,在此示出的精确消息和所述报头是示例性的而非限制性的。例如,消息所使用的报头可多于或少于在这些示例性实施方式中示出的报头,或完全使用不同组的报头。此外,尽管在此示出的报头和消息旨在通过JMS使用,相关领域技术人员将领会到,可以在其他消息传送装置中使用这些技术。
i JMS报头的用法
ii从客户端至服务器的消息
iii从服务器至客户端的消息
一些上述MBS消息可被设计为故障消息。根据本发明的一实施方式,MBS故障消息使用基于HTTP状态码的编号方案(number scheme),以指示错误。例如,代码401指示:客户端请求具有无效的证书或者由于一些其他原因而使认证失败。代码403指示:客户端请求具有有效的证书,但用户不具有访问请求资源(例如程序包、MBO或操作)的许可。错误代码404指示:尝试访问不存在的程序包或MBO。代码500用于指示:未指明的错误。相关领域的技术人员将意识到,可以使用多个错误编码方案,且所提供的上述方案是示例性而非限制性的。
根据本发明的一实施方式,如上所示,在其他可能的情况下,当同步服务器110发送replayResult、replayFailed、searchResult或searchFailed消息时,可包含日志,该日志可以可选地被编码为日志记录的JSON数组。根据本发明的另一实施方式,每个日志记录被编码为JSON对象,其包括下述域:
域 | 值 | 可选/必需 |
"level" | "debug","info","warn","error","fatal"中的一个. | 必需 |
"code" | 包含消息代码的int值 | 可选 |
"message" | 包含消息文本的字符串值 | 必需 |
"timestamp" | 表示消息何时生成的dateTime值。 | 必需 |
"eisCode" | 包含后台EIS代码的字符串值。 | 可选 |
"component" | 移动业务对象名称 | 可选 |
"entityKey" | mbo代理键的字符串值 | 可选 |
"operation" | 包含被调用的操作名称的字符串值 | 可选 |
"requestId" | 包含客户端重放计数器的字符串值 | 可选 |
例如,包含在replayResult消息中的日志的内容可以为:
[{″level″:″warn″,
″message″:″The name was too long so I truncated it.″,
″timestamp″:″2001-01-0112:34:56.789″}]
包含在replayFailed消息中的另一示例性的日志的内容可以为:
[{″level″:″error″,
″message″:″The name was too long so I rejected it.″,
″timestamp":″2001-01-0112:34:56.789″}]
根据本发明的一实施方式,日志消息保留在本地数据库108中,以供客户端应用程序104使用。例如,客户端应用程序104可选择通过设备输出106将错误消息输出该用户。根据本发明的另一实施方式,日志消息一直被保留在本地数据库108中,直至其由客户端应用程序104删除。
当同步服务器110接收到来自客户端应用程序104的消息时,通过客户端ID(上述"cid")和消息ID(上述"id")的结合来确定该消息的唯一性。如上所指示的,cid为用于特定客户端的本地数据库(例如,对本地数据库108是惟一的)的唯一标识符。相关领域技术人员将领会到,根据配置,cid的唯一性可与移动设备102内的其他实体绑定或与设备本身绑定。根据本发明的一实施方式,每个移动设备102、112a-c的每个本地数据库都分配有其本身唯一的cid。在本发明的一个非限制性示范实施方式中,cid可以是通用唯一标识符("UUID"),但相关领域技术人员将意识到,也可使用其他标识符技术。
根据本发明的一实施方式,在报头列表中简单示为id的消息ID是由客户端选定的用于该消息的唯一ID。根据本发明的另一实施方式,当基于上述技术将MBS用于持久状态管理时,id域对应于与挂起的更改行相关的replayPending值。当同步服务器110响应该消息时,其将使用同一值作为其本身ID以用于应答,从而允许客户端应用程序104通过上述技术使应答与挂起的更改相关联。
为了进一步支持至少一次的传送,同步服务器110和从客户端应用程序104接收消息的EIS 114必须确保消息不会被重放两次。图8是根据本发明的一实施方式的示出了各步骤的流程图800,其中,通过这些步骤,同步服务器110或EIS 114被设置为检测和丢弃复本消息。根据本发明的一实施方式,在同步服务器110上进行消息处理,使得在由EIS 114接收之前放弃任何复本。
根据本发明的一实施方式,该方法从步骤802开始,且进行至步骤804,其中接收指定cid和id的消息。根据本发明的另一实施方式,在步骤806中,确定是否接收了cid和id的这一组合。根据本发明的一实施方式,将所接收的cid和id与之前接收的cid和id对的列表进行比较,由此进行确定。
在步骤808中,确定该消息是否是新的,或其之前是否已经被接收。若之前已被接收,该方法进行至步骤814,其中忽略该消息,且该方法在步骤816结束。然而,若该消息是新的,则在步骤810中处理其内容。在使用MBS进行持久状态管理的情况下,该消息通常为从客户端应用程序104发送至服务器的指令,以针对企业数据系统116重放更改,且因此该消息可在步骤810中被处理。
为确保该新的消息被追踪,在步骤812中将该消息的cid和id添加到之前接收的消息的列表中。根据本发明的一实施方式,这些cid和id对被保存在同步服务器110的缓存数据库中。然后,该方法在步骤816结束。
根据本发明的实施方式,可用于从同步服务器110至客户端应用程序104的通信的大多数消息类型提供对由客户端应用程序104启动的通信的应答。当在企业数据系统116内发生更改时,EIS 114也可能通过同步服务器110发送相关MBO的更新。在上文中,用于处理该通信的消息类型在“从服务器至客户端的消息”的表中以“import”消息示出。Import消息由同步服务器110发送至客户端应用程序104,以通知客户端已在应用程序在EIS 114内发生的、且客户端应用程序104感兴趣的一个或多个更改。
根据本发明的一实施方式,为支持该功能,每个MBO在同步服务器110内的缓存数据库中具有相应的缓存表(或"虚拟表")。该缓存表存储用于从企业数据系统116获取的MBO的属性信息,以及有助于将数据同步到本地数据库108的信息。紧随之前的示例,示例性的缓存表可以为:
该缓存表包括域,这些域用于指示由EIS 114对MBO进行的最后一次更改以及其是否已经在企业数据系统116内被删除。
图9是根据本发明的一实施方式的示出了各步骤的流程图900,其中,通过这些步骤,不同于MBS,可以通过使用缓存表来执行基于复本的同步("RBS")。该方法允许客户端应用程序104请求与由同步服务器110保持在其缓存表中的数据的同步。根据本发明的另一实施方式,该方法从步骤902开始且运行至步骤904,其中,为MBO创建缓存表,例如如上所述的缓存表。
根据本发明的一实施方式,在步骤906中,生成下载指针。下载指针是一种针对缓存表而操作的查询,以确定自客户端应用程序104的最后一次同步之后的区别。例如,下载指针的内容可以为:
select a.*from Account_vt a
where a.lastModified>=:lastDownload
在此,客户端应用程序104正在请求自获取客户端应用程序104的最后一次同步之后被更改的所有账户。lastDownload参数被客户端应用程序104记住并被作为由该缓存数据库在客户端的上一级同步行为之前生成的时间戳。相应地,在上述示例中,将仅下载在该最后一次同步行为之后由EIS 114更改过的账户。
相应地,在步骤908中接收来自客户端应用程序104的同步请求,且在步骤901中执行合适的下载指针。根据本发明的一实施方式,然后将该查询的结果提供给客户端应用程序104,用于存储到本地数据库108作为下载状态。该方法在步骤914结束。
不是依靠客户端应用程序104获取同步的数据,而是当由EIS 114创建、更新或删除数据时,允许同步服务器110将相关的结果下推至客户端应用程序104,以存储在本地数据库108中,这是有利的。根据本发明的一实施方式,客户端应用程序104可以将订阅指定给程序包,并由此指定给其内的实体。示例性地而非限制性地,客户端应用程序104将指示其希望订阅哪个程序包的订阅消息发送给同步服务器110。
在接收到该订阅消息后,同步服务器110针对该程序包中的每个实体创建实体订阅。相关领域的技术人员将意识到,存在用于识别订阅的其他合适的手段,所示出的方法是示例性而非限制性的。
由同步服务器使用的、用于保持实体订阅的示例性的表可以定义为:
实体名称指定与客户ID相关的由客户端订阅的实体。pushTo值指定客户端从同步服务器110接收import消息的消息队列的名称。根据本发明的另一实施方式,不同于前述示例,在此,lastDownload时间被保留在EntitySubscription表本身中。
相应地,若客户C1订阅了包含账户实体的程序包,则同步服务器110可通过下述程序创建示例的订阅:
在该示例中,lastDownload时间被设为某个充当表示从未对该订阅执行过下载的函数的值。
图10是根据本发明的一实施方式的示出了各步骤的流程图1000,其中,通过这些步骤,可以将缓存表和下载指针与实体订阅(entitysubscription)一起使用,以向请求更新的客户端应用程序104有效地提供import消息。例如,在大量具有用于示例账户实体的实体订阅的客户端(例如,10000个客户端)的情况下,同步服务器110可以确定需要通过使用import消息给哪个客户提供更改过的时间表。相关领域技术人员将领会到,存在多种原因使不同的客户无法像在同一时间彼此同步那样具有相同的数据,这些原因包括间歇连接。若仅客户端的一些子集请求import消息,则将该消息发送至所有10000个客户端的过程运算量会很大。
相应地,根据本发明的一实施方式,该方法从步骤1002开始且进行至步骤1004,其中,为MBO创建如前所示的缓存表。根据本发明的另一实施方式,也如前所示的,在步骤1006中生成相应的下载指针。
根据本发明的一实施方式,在步骤1008中,从下载指针中获取通知查询。根据本发明的另一实施方式,自动从下载指针中获取通知查询。从上述下载指针和实体订阅获取的示例性的通知查询可以为:
该通知查询的结果用于确定应针对哪个订阅运行下载指针。在上述示例性的通知查询中,这导致识别出具有至少一个更改过的账户的所有订阅。
相关领域的技术人员将领会到,根据本发明的一实施方式,可在配置阶段执行步骤1004、1006和1008,同时可在每当期望同步事件的时刻执行其余步骤。因此不必在每次试图执行通知查询时都创建缓冲表、生成下载指针和获取通知查询,且只要需要其可以一直被保留在同步服务器110内。
根据本发明的一实施方式,此时,将当前时间存储为“timeBefore”。这针对什么时候发生同步提供了参考系。因此,在该时间之后,由EIS114产生的任何更新都将由随后的同步捕获到,然而,如果将同步时间选为某个稍后的参考点,这些更新也可被丢弃。
根据本发明的一实施方式,然后,在步骤1010中执行通知。可以以预定的时间间隔(例如,10秒的通知时间间隔)或是基于其他的时间表或启动机制来执行通知。
在步骤1012中,对于通知查询的每个结果,通过使用参数值lastDownload=s.lastDownload来运行下载指针。根据本发明的一实施方式,这表示,下载指针将作为最后的下载时间,该最后的下载时间是从实体订阅中获取的。通过该机制,客户端应用程序104将不负责提供最后的下载时间,因为最后的下载时间是从实体订阅中获取的。
根据本发明的一实施方式,对于通知查询的每个结果,执行下载指针的结果为一组结果行,该结果行包含更新,所述更新应被输入到移动设备102的本地数据库108中。相应地,在步骤1014中,对于产生的每一行,import消息被发送至相应的队列,以用于相关的订阅,在上述示例性情况下该队列由s.pushTo定义。
根据本发明的一实施方式,在步骤1016中,每个订阅的最后下载时间被设为在执行通知查询之前所获取的timeBefore值。这允许在将来执行该通知查询,从而捕获在执行期间可能发生的任何更改,以及在执行后发生的任何更改。该方法在步骤1018结束。
VII成批输入(import)消息
上述的import消息不可包含大量数据。此外,特定的客户端应用程序104可同时接收多个import消息,这是由多个具有由通知查询触发的同步事件的订阅所造成的。其结果是,为了最大化对通信通道的使用,一起成批地发送多个import消息是有利的。然而,任何这种批处理都需要考虑移动设备102的存储器和其他限制。
根据本发明的一实施方式,提供了一种针对import消息设置目标最大容量尺寸的解决方案。图11是根据本发明的一实施方式的示出了各步骤的流程图1100,其中,通过这些步骤,可以一起分批处理import消息。相关领域技术人员将领会到,该技术可以用于批处理任何MBS消息,但示例性地而非限制性地参照import消息进行了阐释。
该方法从步骤1102开始且进行至步骤1104,其中,接收或是识别或获取被成批发送的消息。在步骤1106中,确定在消息缓冲区中是否存在用于下一个消息的额外的空间。若存在,则在步骤1108中将下一个消息添加至缓冲区。若不存在,则该消息不被添加至该缓冲区。然而,在步骤1110中,确定该缓冲区是否仍是空的。这意味着该下一个消息大于目标最大容量尺寸。若是这样,因为无论如何都必须发送该消息时,则无论如何都将该消息添加至该缓冲区。在步骤1112中,发送来自缓冲区的成批消息,且该方法在步骤1114结束。必要时,将该方法重复用于待成批发送的每个剩余消息。
用于实施该技术的示例性的Java代码可以是:
VIII由服务器启动的同步
根据本发明的一实施方式,如上所述的,通过使用缓存表和下载指针,基于复本的同步("RBS")是可能的。客户端应用程序104可以向同步服务器110发送同步请求以启动同步事件,在这个时候,同步服务器向客户端应用程序104发送执行下载指针的结果。
在上文中进一步描述了一种使用通知查询的新技术,其生成用于从同步服务器110传送至客户端应用程序104的import消息,这允许将影响订阅的更改定期推送至客户端应用程序104。
另一方面,由服务器启动的同步是一种新技术,其为了同步服务器110而结合了RBS和MBS两者的元素,这使用了最初从MBS获取的技术,以通知需要请求同步的客户端应用程序104,这使用了最初从RBS获取的技术。
图12是根据本发明的一实施方式的示出了各步骤的流程图1200,其中,通过这些步骤完成由服务器启动的同步。根据本发明的一实施方式,该方法从步骤1202开始且进行至步骤1204,在其中创建缓存表,然后进行至步骤1206,在其中创建下载指针。该缓存表和下载指针的创建与在上文中详细描述过的由RBS和MBS方案所使用的方法一致。
在步骤1208中,根据在上文中讨论的关于MBS的技术来获取通知查询。如已在MBS的技术讨论中注意到的,因为同步服务器110能够根据需要保留缓存表、下载指针和通知查询,不必在每个同步事件中执行步骤1204、1206和1208。
根据本发明的一实施方式,在步骤1210中,执行通知查询。然而,根据本发明的另一实施方式,在步骤1214中,将同步请求而不是import信息发送给客户端应用程序104。这一消息向客户端应用程序104转达:其应根据RBS技术执行同步。相应地,根据本发明的一额外实施方式,在步骤1215中,从客户端应用程序104处接收同步操作。然后,该方法在步骤1216结束。
IX示例性计算机系统实施方式
可由软件、固件、硬件或其组合来实施本发明的各方面。图13示出了一示例性计算机系统1300,本发明或其部分可以在其中被实施为计算机可读代码。例如,可在系统1300中实施由图2A的流程图200、图2B的流程图250、图3的流程图300、图4的流程图400、图5的流程图500、图6的流程图600、图7的流程图700、图8的流程图800、图9的流程图900、图10的流程图1000、图11的流程图1100和图12的流程图1200示出的方法。根据该示例性计算机系统1300来描述本发明的各种实施方式。在阅读完该描述后,如何使用其他计算机系统和/或计算机算法来实施本发明对相关领域的技术人员来说将是显而易见的。
计算机系统1300包括一个或多个处理器,例如处理器1304。处理器1304可以是专用处理器或通用处理器。处理器1304连接至通信基础设施1306(例如总线或网络)。
计算机系统还包括主存储器1308,优选为随机存取存储器(RAM),且还可包括辅助存储器1310。辅助存储器1310例如可包括硬盘驱动器1312、移动存储驱动器1314和/或记忆棒。移动存储驱动器1314可包括软盘驱动器、磁带驱动器、光盘驱动器、闪存或其他。移动存储驱动器1314以已知的方式对移动存储单元1318进行读取和/或写入。移动存储元件1318可包括可由移动存储驱动器读取和/或写入的软盘、磁带、光盘等。如相关领域技术人员将领会到的,移动存储元件1318包括具有存储在其中的计算机软件和/或数据的计算机可用存储介质。
在可替换的实施方式中,辅助存储器1310可包括允许计算机程序或其他指令被载入计算机系统1300中的其他类似的装置。这样的装置例如可包括移动存储元件1322和接口1320。这样的装置的示例可包括程序盒式存储器和盒式接口(例如在视频游戏设备中使用的)、移动存储芯片(例如EPROM或PROM)和相关插座,以及其他允许软件和数据从移动存储单元1322传送至计算机系统1300的移动存储元件1322和接口1320。
计算机系统1300也可包括通信接口1324。通信接口1324允许软件和数据在计算机系统1300与外部设备之间传送。通信接口1324可包括调制解调器、网络接口(以太网卡)、通信端口、PCMCIA插槽和卡等。通过通信接口1324传送的软件和数据可以是电、电磁、光学信号或者其他可由通信接口1324捕获的信号形式。这些信号通过通信路径1326被提供至通信接口1324。通信路径1326承载信号,且可以通过使用电线或电缆、光纤、电话线、手机链接、RF链接或其他通信通道而实施。
在本文中,术语“计算机程序介质”和“计算机可用介质”通常用于指例如移动存储元件1318、移动存储元件1322和安装在硬盘驱动器1312中的硬盘的介质。承载在通信路径1326上的信号也可以实现在此描述的逻辑。计算机程序介质和计算机可用介质也可以指存储器,例如主存储器1308和辅助存储器1310,其可以是存储半导体(例如DRAM等)。这些计算机程序产品为用于将软件提供至计算机系统的1300的工具。
计算机程序(也称为计算机控制逻辑)存储在主存储器1308和/或辅助存储器1310中。计算机程序也可通过通信接口1324而被接收。当被执行时,这些计算机程序使得计算机系统1300可如在此所述地实施本发明。特别地,当被执行时,这些计算机程序可以使得处理器1304实施本发明的步骤,所述步骤为例如在上文中由图2A的流程图200、图2B的流程图250、图3的流程图300、图4的流程图400、图5的流程图500、图6的流程图600、图7的流程图700、图8的流程图800、图9的流程图900、图10的流程图1000、图11的流程图1100和图12的流程图1200示出的方法中的步骤。相应地,这些计算机程序代表计算机系统1300的控制器。在使用软件实施本发明的情况下,该软件可存储在计算机程序产品中且可通过使用移动存储驱动器1314、接口1320、硬盘驱动器1312或通信接口1324而被加载到计算机系统1300中。
本发明还涉及包括存储在任何计算机可用介质上的软件的计算机程序产品。当在一个或多个数据处理设备中执行时,这样的软件致使数据处理设备如在此所描述地操作。本发明的实施方式利用了现在已知或将来可知的任何计算机可用或可读的介质。计算机可用介质的示例包括但不限于主存储设备(例如任何形式的随机存取存储器),辅助存储设备(例如硬盘驱动器、软盘、CD ROM、ZIP盘、磁带、磁存储设备、光学存储设备、MEMS、纳米技术存储设备等),以及通信介质(例如,有线和无线通信网络、局域网、广域网、互联网等)。
X结论
尽管已经在上文中描述了本发明的多种实施方式,应理解,其仅示例性地而非限制性地示出了这些实施方式。相关领域技术人员将理解,在不脱离由所附的权利要求所限制的本发明的精神和范围的情况下可以产生多种形式和细节上的改变。应理解,本发明不限于这些示例。本发明可以用于任何如在此所述地运行的部件。相应地,本发明的宽度和范围不由任何上述的示例性实施方式限定,而仅根据所附的权利要求和其等效内容被限定。
Claims (29)
1.一种方法,其包括:
调用操作以更改来自本地数据库中的表的当前数据行;
在所述表中插入挂起的更改数据行,所述挂起的更改数据行包括更改的属性,其中,所述挂起的更改数据行和当前数据行由主键标区分,所述主键标包括由所述挂起的更改数据行、当前数据行和挂起的更改指示符共有的键值;以及
提交来自所述挂起的更改数据行的数据。
2.如权利要求1所述的方法,其中,来自所述表的数据对应于业务对象。
3.如权利要求1所述的方法,其中,所述操作为创建操作,所述方法还包括:
确定是否已存在相应的挂起的更改数据行,若存在,则使用来自所述创建操作的数据更新所述挂起的更改数据行;以及
将所述挂起的更改数据行识别为创建操作。
4.如权利要求1所述的方法,其中,所述操作为更新操作,所述方法还包括:
将来自当前数据行的数据的拷贝插入初始状态表中;以及
将所述挂起的更改数据行识别为更新操作。
5.如权利要求1所述的方法,其中,所述操作为删除操作,所述方法还包括:
将来自所述当前数据行的数据的拷贝插入初始状态表中;以及
将所述挂起的更改数据行识别为更新操作。
6.如权利要求1所述的方法,还包括:
若所述操作为更新或删除操作,则将来自所述当前数据行的数据的拷贝插入初始状态表中;以及
将所述挂起的更改数据行内的重放计数器设为唯一标识符。
7.如权利要求6所述的方法,还包括:
接收重放操作的通知;以及
确定所述重放操作是否成功。
8.如权利要求7所述的方法,其中,所述重放操作已成功,所述方法还包括:
基于消息标识符与重放计数器之间的相关性,删除对应于所述重放操作的挂起的更改数据行;以及
若已创建,则从所述初始状态表中删除对应的初始状态。
9.如权利要求7所述的方法,其中,所述重放操作未成功,所述方法还包括:
更新具有消息标识符的挂起的更改数据行,以指示失败。
10.如权利要求6所述的方法,其中,提交来自挂起的更改数据行的数据,其包括:
指定对应于本地数据库的客户端标识符;
指定对应于所述重放计数器的消息标识符;以及
将基于消息的同步请求发送至同步服务器,所述请求包括所述客户端标识符和所述消息标识符。
11.如权利要求1所述的方法,还包括:
重写现有的命名查询,以防止既返回挂起的更改数据行又返回当前数据行。
12.如权利要求11所述的方法,其中,重写现有的命名查询还包括:
更改现有的命名查询,由此,若存在挂起的更改,则返回包括所述挂起的更改数据行的挂起的更改,若不存在挂起的更改,则返回当前数据。
13.如权利要求1所述的方法,还包括:
生成动态查询,以防止既返回挂起的更改数据行又返回当前数据行。
14.如权利要求13所述的方法,其中,生成动态查询还包括:
设计所述动态查询,由此,若存在挂起的更改,则返回包括所述挂起的更改数据行的挂起的更改,若不存在挂起的更改,则返回当前数据。
15.一种计算机可读介质,其具有存储于其上的计算机可执行指令,若由计算设备执行,则所述计算机可执行指令导致所述计算设备实施包括下述步骤的方法:
调用操作以更改来自本地数据库中的表的当前数据行;
在所述表中插入挂起的更改数据行,所述挂起的更改数据行包括更改的属性,其中,所述挂起的更改数据行和当前数据行由主键标区分,主键标包括由所述挂起的更改数据行、当前数据行和挂起的更改指示符共有的键值;以及
提交来自所述挂起的更改数据行的数据。
16.如权利要求15所述的计算机程序产品,其中,来自所述表的数据对应于业务对象。
17.如权利要求15所述的计算机程序产品,其中,所述操作为创建操作,所述方法还包括:
确定是否已经存在相应的挂起的更改数据行,若存在,则使用来自所述创建操作的数据更新所述挂起的更改数据行;以及
将所述挂起的更改数据行识别为创建操作。
18.如权利要求15所述的计算机程序产品,其中,所述操作为更新操作,所述方法还包括:
将来自当前数据行的数据的拷贝插入初始状态表中;以及
将所述挂起的更改数据行识别为更新操作。
19.如权利要求15所述的计算机程序产品,其中,所述操作为删除操作,所述方法还包括:
将来自当前数据行的数据的拷贝插入初始状态表中;以及
将所述挂起的更改数据行识别为更新操作。
20.如权利要求15所述的计算机程序产品,所述方法还包括:
若所述操作为更新或删除操作,则将来自当前数据行的数据的拷贝插入初始状态表中;以及
将所述挂起的更改数据行内的重放计数器设为唯一标识符。
21.如权利要求20所述的计算机程序产品,所述方法还包括:
接收重放操作的通知;以及
确定所述重放操作是否成功。
22.如权利要求21所述的计算机程序产品,其中,所述重放操作已成功,所述方法还包括:
基于消息标识符与重放计数器之间的相关性,删除对应于所述重放操作的挂起的更改数据行;以及
若已创建,则从所述初始状态表中删除对应的初始状态。
23.如权利要求21所述的计算机程序产品,其中,所述重放操作未成功,所述方法还包括:
更新具有消息标识符的挂起的更改数据行,以指示失败。
24.如权利要求20所述的计算机程序产品,其中,提交来自挂起的更改数据行的数据包括:
指定对应于本地数据库的客户端标识符;
指定对应于重放计数器的消息标识符;以及
将基于消息的同步请求发送至同步服务器,所述请求包括所述客户端标识符和所述消息标识符。
25.如权利要求15所述的计算机程序产品,所述方法还包括:
重写现有的命名查询,以防止既返回挂起的更改数据行又返回当前数据行。
26.如权利要求25所述的计算机程序产品,其中,重写现有的命名查询还包括:
更改现有的命名查询,由此,若存在挂起的更改,则返回包括挂起的更改数据行的挂起的更改,若不存在挂起的更改,则返回当前数据。
27.如权利要求15所述的计算机程序产品,所述方法还包括:
生成动态查询,以防止既返回挂起的更改数据行又返回当前数据行。
28.如权利要求27所述的计算机程序产品,其中,生成动态查询还包括:
设计所述动态查询,由此,若存在挂起的更改,则返回包括挂起的更改数据行的挂起的更改,若不存在挂起的更改,则返回当前数据。
29.一种系统,其包括:
存储器,所述存储器被设置为保存模块,所述模块包括:
调用模块,所述调用模块被设置为调用操作以更改来自本地数据库中的表的当前数据行,
插入模块,所述插入模块被设置为在所述表中插入挂起的更改数据行,所述挂起的更改数据行包括更改的属性,其中,挂起的更改数据行和当前数据行由主键标区分,所述主键标包括由所述挂起的更改数据行、当前数据行和挂起的更改指示符共有的键值,以及
提交模块,所述提交模块被设置为提交来自所述挂起的更改数据行的数据;
所述系统还包括:
一个或者多个处理器,其被设置为处理所述模块。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29099309P | 2009-12-30 | 2009-12-30 | |
US61/290,993 | 2009-12-30 | ||
US12/797,975 | 2010-06-10 | ||
US12/797,975 US8321392B2 (en) | 2009-12-30 | 2010-06-10 | Pending state management for mobile business objects |
PCT/US2010/060296 WO2011090600A2 (en) | 2009-12-30 | 2010-12-14 | Pending state management for mobile business objects |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102725966A true CN102725966A (zh) | 2012-10-10 |
CN102725966B CN102725966B (zh) | 2014-12-10 |
Family
ID=44188718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080060200.6A Active CN102725966B (zh) | 2009-12-30 | 2010-12-14 | 用于移动业务对象的挂起状态管理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8321392B2 (zh) |
EP (1) | EP2520028A4 (zh) |
CN (1) | CN102725966B (zh) |
WO (1) | WO2011090600A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105432087A (zh) * | 2013-05-30 | 2016-03-23 | 开放电视公司 | 在配套设备上同步应用程序 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9477727B2 (en) | 2008-08-01 | 2016-10-25 | Sybase, Inc. | Abstracting data for use by a mobile device having occasional connectivity |
US8434097B2 (en) | 2009-12-30 | 2013-04-30 | Sybase, Inc. | Dynamic data binding for MBOs for container based application |
US8909662B2 (en) * | 2009-12-30 | 2014-12-09 | Sybase, Inc. | Message based mobile object with native PIM integration |
US9336291B2 (en) * | 2009-12-30 | 2016-05-10 | Sybase, Inc. | Message based synchronization for mobile business objects |
US8788458B2 (en) | 2009-12-30 | 2014-07-22 | Sybase, Inc. | Data caching for mobile applications |
US8583599B2 (en) * | 2010-11-29 | 2013-11-12 | Ca, Inc. | Reducing data duplication in cloud storage |
US10102242B2 (en) | 2010-12-21 | 2018-10-16 | Sybase, Inc. | Bulk initial download of mobile databases |
US8892569B2 (en) | 2010-12-23 | 2014-11-18 | Ianywhere Solutions, Inc. | Indexing spatial data with a quadtree index having cost-based query decomposition |
US9396242B2 (en) * | 2011-04-11 | 2016-07-19 | Salesforce.Com, Inc. | Multi-master data replication in a distributed multi-tenant system |
US9348883B2 (en) * | 2011-06-01 | 2016-05-24 | Clustrix, Inc. | Systems and methods for replication replay in a relational database |
US9110807B2 (en) | 2012-05-23 | 2015-08-18 | Sybase, Inc. | Cache conflict detection |
US8874682B2 (en) | 2012-05-23 | 2014-10-28 | Sybase, Inc. | Composite graph cache management |
CN105653566B (zh) * | 2014-12-03 | 2019-08-02 | 阿里巴巴集团控股有限公司 | 一种实现数据库写访问的方法及装置 |
CN106980625B (zh) * | 2016-01-18 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置及系统 |
US11042547B2 (en) * | 2018-09-10 | 2021-06-22 | Nuvolo Technologies Corporation | Mobile data synchronization framework |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070099640A1 (en) * | 2005-05-04 | 2007-05-03 | Sanjeev Khushu | Arbitration of resources at a wireless device among contending applications |
CN101128795A (zh) * | 2004-05-11 | 2008-02-20 | 米斯特科技有限公司 | 语义处理器存储服务器架构 |
US20090177710A1 (en) * | 2005-03-03 | 2009-07-09 | Gravic, Inc. | Method for resolving collisions in a database replication system by relaxing a constraint that contributes to collisions, or removing the cause of the constraint that contributes to the collisions |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6381241B1 (en) | 1997-09-30 | 2002-04-30 | Wireless Access | Duplicate message detection and mending of garbled messages |
US6745209B2 (en) * | 2001-08-15 | 2004-06-01 | Iti, Inc. | Synchronization of plural databases in a database replication system |
KR20030072693A (ko) | 2002-03-06 | 2003-09-19 | 윤일권 | 서로 다른 이동 통신 서비스에 가입된 단말기끼리도 공용가능한 네트워크 컨텐츠 제공방법 및 그에 따른 장치 |
US6983293B2 (en) | 2002-07-24 | 2006-01-03 | International Business Machines Corporation | Mid-tier-based conflict resolution method and system usable for message synchronization and replication |
US20040205770A1 (en) | 2003-02-11 | 2004-10-14 | International Business Machines Corporation | Duplicate message elimination system for a message broker |
US7536673B2 (en) | 2003-07-22 | 2009-05-19 | Sap Ag | Application business object processing |
US7613835B2 (en) | 2003-09-08 | 2009-11-03 | Sony Corporation | Generic API for synchronization |
US20050055698A1 (en) | 2003-09-10 | 2005-03-10 | Sap Aktiengesellschaft | Server-driven data synchronization method and system |
CA2622404A1 (en) | 2004-09-15 | 2006-03-23 | Adesso Systems, Inc. | System and method for managing data in a distributed computer system |
US7467389B2 (en) | 2004-11-23 | 2008-12-16 | Sybase, Inc. | System and methodology providing service invocation for occasionally connected computing devices |
US8037056B2 (en) * | 2005-02-18 | 2011-10-11 | International Business Machines Corporation | Online repair of a replicated table |
KR20060060629A (ko) | 2006-03-17 | 2006-06-05 | 이승재 | 이동통신단말기의 데이터 저장 및 검색 방법 |
US7756829B2 (en) | 2006-04-18 | 2010-07-13 | Sandeep Bhanote | Method and apparatus for mobile data collection and management |
CN101155022A (zh) | 2006-09-30 | 2008-04-02 | 华为技术有限公司 | 数据同步方法、系统和装置 |
US9721246B2 (en) | 2006-12-21 | 2017-08-01 | Sybase, Inc. | Synchronization patterns for mobile applications |
US7983249B2 (en) | 2007-01-23 | 2011-07-19 | Oracle America, Inc. | Enterprise web service data to mobile device synchronization |
US8204870B2 (en) | 2007-08-03 | 2012-06-19 | Sybase, Inc. | Unwired enterprise platform |
US8825815B2 (en) | 2008-01-08 | 2014-09-02 | Amdocs Software Systems Limited | System and method for client synchronization for a communication device |
KR101430517B1 (ko) | 2008-01-31 | 2014-08-19 | 삼성전자주식회사 | 복수의 데이터 통신장치들 간의 데이터 동기 방법 |
US20090198722A1 (en) * | 2008-01-31 | 2009-08-06 | Stephen Michael Hanson | System and method for deriving the minimum number of bytes required to represent numeric data with different physical representations |
US8185521B2 (en) | 2008-02-29 | 2012-05-22 | Research In Motion Limited | System and method for presentation of local and remote message search results |
US7962458B2 (en) * | 2008-06-12 | 2011-06-14 | Gravic, Inc. | Method for replicating explicit locks in a data replication engine |
US9477727B2 (en) | 2008-08-01 | 2016-10-25 | Sybase, Inc. | Abstracting data for use by a mobile device having occasional connectivity |
KR101647735B1 (ko) | 2009-12-24 | 2016-08-11 | 엘지전자 주식회사 | 이동 단말기 및 이동 단말기의 데이터 관리 방법 |
US8909662B2 (en) | 2009-12-30 | 2014-12-09 | Sybase, Inc. | Message based mobile object with native PIM integration |
US9336291B2 (en) | 2009-12-30 | 2016-05-10 | Sybase, Inc. | Message based synchronization for mobile business objects |
-
2010
- 2010-06-10 US US12/797,975 patent/US8321392B2/en active Active
- 2010-12-14 CN CN201080060200.6A patent/CN102725966B/zh active Active
- 2010-12-14 EP EP10844190.8A patent/EP2520028A4/en not_active Ceased
- 2010-12-14 WO PCT/US2010/060296 patent/WO2011090600A2/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101128795A (zh) * | 2004-05-11 | 2008-02-20 | 米斯特科技有限公司 | 语义处理器存储服务器架构 |
US20090177710A1 (en) * | 2005-03-03 | 2009-07-09 | Gravic, Inc. | Method for resolving collisions in a database replication system by relaxing a constraint that contributes to collisions, or removing the cause of the constraint that contributes to the collisions |
US20070099640A1 (en) * | 2005-05-04 | 2007-05-03 | Sanjeev Khushu | Arbitration of resources at a wireless device among contending applications |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105432087A (zh) * | 2013-05-30 | 2016-03-23 | 开放电视公司 | 在配套设备上同步应用程序 |
US11824928B2 (en) | 2013-05-30 | 2023-11-21 | Opentv, Inc. | Synchronizing an application on a companion device |
Also Published As
Publication number | Publication date |
---|---|
WO2011090600A3 (en) | 2011-11-03 |
WO2011090600A2 (en) | 2011-07-28 |
US20110161339A1 (en) | 2011-06-30 |
US8321392B2 (en) | 2012-11-27 |
EP2520028A4 (en) | 2016-10-12 |
EP2520028A2 (en) | 2012-11-07 |
CN102725966B (zh) | 2014-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102725966B (zh) | 用于移动业务对象的挂起状态管理 | |
US9336291B2 (en) | Message based synchronization for mobile business objects | |
CN101410800B (zh) | 用于软件发布服务的系统和方法 | |
US8312451B2 (en) | Computing system for providing software components on demand to a mobile device | |
USRE44836E1 (en) | System and method for efficient transfer of applications and data during device swap | |
CN101960825B (zh) | 发布/订阅消息中介 | |
CN1777867B (zh) | 使用增量压缩打补丁更新文件的系统和方法 | |
CN101854338B (zh) | 订户设备及其订阅管理方法、实时通信方法和系统 | |
CN101416183B (zh) | 保存无线设备当前数据的方法和系统 | |
CN102971707B (zh) | 为软件包安装配置计算机系统的方法和装置 | |
CN1691677B (zh) | 管理计算机身份的方法、系统和装置 | |
US20050071194A1 (en) | System and method for providing patient record synchronization in a healthcare setting | |
CN100472523C (zh) | 使用设备数据模式同步服务器和设备数据 | |
CN103345790A (zh) | 基于nfc智能电子设备的电子门锁管理方法及系统 | |
CN107870814B (zh) | 用于内容管理批处理的方法和设备 | |
CN101179430A (zh) | 一种分布式系统软件版本更新控制装置及方法 | |
CN102202087A (zh) | 一种标识存储设备的方法及系统 | |
CN103179193A (zh) | 用于分布式应用系统的数据传输系统和数据传输方法 | |
CN102741829A (zh) | 用于移动业务对象的基于消息的同步 | |
CN101035015B (zh) | 用于维护命名空间中联合命名上下文绑定的方法和装置 | |
CN101064692B (zh) | 一种呈现信息的发布方法、设备及系统 | |
US12026508B2 (en) | Methods for automated configuration management in platform-as-a-service environments and devices thereof | |
CN117453760A (zh) | 区块链上数字藏品的检索方法及系统、装置、电子设备 | |
CN116302384A (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
CN114528303A (zh) | 一种业务数据的处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |