CN103098024B - 移动中间设备场景中的成员跟踪和数据逐出 - Google Patents
移动中间设备场景中的成员跟踪和数据逐出 Download PDFInfo
- Publication number
- CN103098024B CN103098024B CN201180035759.8A CN201180035759A CN103098024B CN 103098024 B CN103098024 B CN 103098024B CN 201180035759 A CN201180035759 A CN 201180035759A CN 103098024 B CN103098024 B CN 103098024B
- Authority
- CN
- China
- Prior art keywords
- client
- surrogate
- data
- mbo
- list
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 71
- 230000008859 change Effects 0.000 claims abstract description 42
- 238000013507 mapping Methods 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 5
- 238000012216 screening Methods 0.000 claims description 4
- 230000001360 synchronised effect Effects 0.000 abstract description 29
- 230000008569 process Effects 0.000 abstract description 16
- 238000004590 computer program Methods 0.000 abstract description 13
- 230000015654 memory Effects 0.000 description 26
- 238000004891 communication Methods 0.000 description 24
- 238000005516 engineering process Methods 0.000 description 19
- 238000012217 deletion Methods 0.000 description 12
- 230000037430 deletion Effects 0.000 description 12
- 230000000875 corresponding effect Effects 0.000 description 11
- 238000003780 insertion Methods 0.000 description 10
- 230000037431 insertion Effects 0.000 description 10
- 230000002085 persistent effect Effects 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 239000003550 marker Substances 0.000 description 3
- 230000005012 migration Effects 0.000 description 3
- 238000013508 migration Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000003032 molecular docking Methods 0.000 description 2
- 241000883402 Endeis Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/953—Organization of data
- Y10S707/956—Hierarchical
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/953—Organization of data
- Y10S707/96—Object-relational
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)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种系统、方法和计算机程序产品,其用于确保在客户端中的用户数据和其在企业信息系统(EIS)中的对应状态之间的一致性,在该系统中,随着时间的流逝,数据发生迁移,并且订阅发生变化。移动业务对象(MBO)识别订阅的更新或者集合成员的变化,从而为客户端和EIS系统提供更新。为客户端设备的用户筛选被缓存的数据,这些用户同步他们感兴趣的数据(也就是其订阅的数据)。在一个实施例中,该方法通过在每个远程标识符/业务对象基础上记住用于父业务对象的集合成员来跟踪集合成员。当集合成员发生变化时,该方法向设备发送删除通知,从而去除以前的成员。该方法识别业务场景中的公共关系类型并处理引用类型关系以及包含类型关系。该方法包括键跟踪和成员跟踪。
Description
技术领域
本发明大体涉及用户数据同步,并且更具体地,涉及用于跟踪和同步用户数据变化的通信方法。
背景技术
每当(通常在用户指定的时机)通过执行完整的同步事件而获得连接性时,远程客户和移动设备传统上依赖于使集合成员数据与企业信息系统(EIS系统)同步。例如,当移动设备被放置在对接架(dockingcradle)中时,其具有EIS连接。一旦对接,移动设备会执行上传和下载的集合成员数据的完全同步。因效率缘故,传统移动中间设备服务器缓存来自后端EIS的数据,从而避免重复存取。中间设备服务器还利用一些传统技术促进对缓存的模式化,以用于各种风格的引用和关系,并且允许设备用户将该数据同步为连贯的业务对象,同时通过修改确保一致性,该修改对于系统中的每个节点处的数据都是有效的。
然而,这些传统数据同步方法并不能确保用户已经在客户端上“订阅”的、间或刷新的数据集合的缓存副本和EIS数据之间的连贯性和一致性。这是因为在传统系统中,当客户端上的缓存的EIS数据副本以及对应的EIS系统由于正常业务操作的原因而随着时间偏离时,会产生问题,该客户端为例如笔记本电脑、台式电脑、HTML5激活的浏览器应用、平板计算机、因特网TV设备、移动设备、移动中间设备服务器。这些业务操作的示例包括用户集合的成员变化。例如,技术支持服务调用票务能够被再分配给EIS中的不同服务器技术人员,这导致将先前服务器技术人员从集合中逐出(即:去除)并且在该集合中插入新指定的服务器技术人员。在大多数情况下,类似于工作指令的对象具有唯一所有者,并且长期以来存在的关于指定技术人员的不明确性是极其不期望的。
因此,期望获得改进方法,用于成员跟踪和数据逐出,以确保客户端用户数据和企业系统之间的连贯性。
用于同步移动客户端和企业服务器之间的数据的传统技术产生了至少两个问题。一个问题涉及客户端数据逐出,其导致虚引用数据。例如,如果例如销售经理的用户选择同步来自当前在他的/她的客户端设备上存在的不同区域的数据,那么这会导致例如之前被同步到设备上的产品对象的虚引用,其中涉及该产品的销售指令随后从设备上被删除。在另一个示例中,涉及产品的销售指令项目被同步至具有该销售指令中涉及的产品数据的移动设备。当完成销售指令和/或从EIS删除销售指令时,所引用的产品仍然存在于客户端设备上。这些能够被概念化为“虚引用数据”。虚引用数据引起两个问题。首先,虚引用数据占据客户端设备上的空间,并且当客户端设备的数据存储器/数据库被填满时,其能够最终引起存储膨胀和设备故障。这对于一些客户端例如具有有限存储空间的移动设备来说是个问题。其次,经由查询和搜索(例如经由findAll()操作)虚引用数据仍然可被在客户端设备上运行的应用程序引用,但是该虚引用数据是陈旧的,因为其引用的是不再相关的数据。即使该数据被更新,新的信息也不会被下载至客户端。
用于同步移动客户端和企业服务器之间的数据的传统技术产生的另一个问题是何时发生成员变化。例如,当涉及地理区域的同步参数被改变时(例如,从洛杉矶至旧金山),由于集合标准的改变,例如移动业务对象(MBO)实例的数据实例不再是集合的成员。在传统的同步系统中,如果同步参数被改变,那么来自不再是新集合成员的实例客户端的相关数据不会被自动去除或逐出。
因此,所需要的是从不再是新集合成员的实例客户端设备自动逐出数据的方法。导致需要从集合中逐出数据的业务操作的另一个示例是订阅变化。因此,进一步需要的是能够允许用户直接操作他们的数据“订阅”以使他们能够控制应该逐出什么样的数据的方法。
发明内容
本发明的实施例包括这样一种技术,在包括数据迁移和随着时间变化的订阅的环境中,该技术采用移动中间设备来确保在多个移动客户端设备上的用户数据和企业信息系统(EIS)中的其对应状态之间的连贯性。该技术在移动中间设备服务器上缓存来自EIS的数据,从而避免重复存取。对于需要同步其感兴趣的数据的多个设备用户,对被缓存的数据进行筛选,其中,在不同时期,经由订阅来注册兴趣。该技术维持集合成员的一致性和各状态之间的数据普及的需要。
本发明的实施例包括用于跟踪集合成员和从集合中逐出(即:去除)数据的方法、系统以及计算机程序产品。本发明的一个实施例包括用于同步移动客户端设备和企业信息系统(EIS)之间的数据更新的方法。在一个实施例中,该方法包括:检测对移动客户端设备订阅的更新或者检测用于移动业务对象(MBO)的集合成员的变化;建立全局唯一代理键的代理键列表,该唯一代理键当前是移动客户端设备订阅的一部分,其中该列表包括由MBO引用的子移动业务对象(MBOs),并且期望在完成同步后该子移动业务对象在移动客户端设备上;为与移动客户端设备相关的用户筛选被缓存EIS数据,其中,该筛选选择该移动客户端设备所订阅的、被缓存的EIS数据的子集;响应对从集合中成员的逐出的检测:向移动客户端设备发送删除通知,从而去除被逐出的成员;并且更新代理键列表中对应于被逐出成员的行,从而表示不期望在移动客户端设备上存在与该代理键相关的数据;以及,响应对集合中成员的变化或增加的检测:向移动客户端设备发送更新或插入(“upsert”)通知,从而更新变化的或增加的成员;更新代理键列表中对应于变化的或增加的成员的行,从而表示期望在移动客户端设备上存在与该代理键相关的数据;以及,在代理键列表中设置时间戳,该时间戳表示与代理键相关的数据何时首先成为移动客户端设备期望具有的订阅数据的一部分。
本发明的实施例另外还包括具有存储在其上的计算机可执行指令的计算机可读介质,如果由计算设备执行,那么该指令促使计算设备执行一种方法,该方法包括:将用于移动业务对象(MBO)的本地属性映射至关系结构;建立唯一代理键的列表,该唯一代理键当前应是客户端订阅的一部分,其中该列表包括由父MBO引用的子移动业务对象(MBO),并且期望在完成同步后该子移动业务对象在移动客户端上;确定客户端当前具有的被删除的代理键的集合,该被删除的代理键不再位于当前应该是客户端订阅的一部分的代理键的列表中;从客户端设备数据库中去除客户端的被删除的代理键;更新客户端期望具有的代理键列表;其中所述更新包括:对于客户端已经具有的代理键,不执行任何操作;对于客户端还不具有的新的代理键:在该代理键列表中插入行;以及设置时间戳,该时间戳表示该代理键何时首先成为客户端期望具有的一部分。
本发明的实施例另外包括一种系统,该系统包括:存储器,其被配置成存储模块,该模块包括映射模块,该映射模块被配置成将用于移动业务对象(MBO)的本地属性映射至关系结构;创建模块,其被配置成创建当前应该是客户端订阅的一部分的、唯一代理键的列表,其中,该列表包括由父MBO引用的子移动业务对象(MBO),并且期望在完成同步后该子移动业务对象在移动客户端上;确定模块,其被配置成确定客户端当前具有的被删除的代理键的集合,该被删除的代理键不再位于当前应该是客户端认购订阅的一部分的代理键的列表中;逐出模块,其被配置成从客户端设备数据库中去除客户端的被删除的代理键;更新模块,其被配置成更新客户端期望具有的代理键列表;其中,所述更新模块进一步被配置成:对于客户端还不具有的新的代理键,在该代理键列表中插入行;以及,设置时间戳,该时间戳表示该代理键何时首先成为客户端期望具有的一部分。
下面将参考附图详细描述本发明的其他特征和优点以及本发明各种实施例的结构和操作。应注意的是,本发明不限于在此描述的特定实施例。在此显示的这些实施例仅仅是出于阐释目的。基于包含在此的教导,其他的实施例对于相关领域的技术人员来说是显而易见的。
附图说明
被并入于此并形成说明书一部分的附图阐释了本发明的实施例,并且其与说明书一起进一步用于阐释本发明的原理并能够使相关领域的技术人员实施和使用本发明。
图1是根据本发明实施例的典型企业网络。
图2是阐释了根据本发明实施例的步骤的流程图,通过这些步骤在客户端和企业信息系统(EIS)之间跟踪和同步集合成员。
图3描述了将在其中实施本发明的实施例的示例计算机系统。
现在将参考附图描述本发明。在附图中,通常,相同的参考标记表示相同或功能相似的元件。另外,通常,参考标记最左侧的数字表示参考标记首先出现的附图。
具体实施方式
介绍
本发明的以下详细说明涉及阐释了与本发明一致的典型实施例的附图。在本发明的精神和范围内,其他实施例也是可能的,并且可以对这些实施例进行修改。因此,该详细说明不旨在限制本发明。并且,本发明的范围是由随附权利要求定义的。
对于本领域技术人员来说显而易见的是,如下所述,本发明可以在软件、硬件、固件和/或附图中阐释的实体的许多不同实施例中实施。具有实施本发明的特定硬件控制的任何实际软件代码不是对本发明的限制。因此,本发明的操作行为是在理解了能够在本发明的范围和精神内对这些实施例进行修改和变形的情况下描述的。
对本说明书和权利要求书中模块的参考意味着对用于执行所表示的功能的硬件或软件组件的任意组合。模块不必是严格定义的实体,这样,若干模块可重叠硬件和软件组件的功能性。例如,软件模块可以涉及程序内的单行代码,该程序自身是单独的软件模块。相关领域的技术人员会理解,例如,根据多种格式的或性能优化的技术来定义模块的功能性。
术语
提供下述定义以用于阐释性而不是限制性目的,从而有助于理解随后的各种实施例的讨论。
除非特别区别陈述,在实施例中,在此交替使用的用户是指人类使用者、软件代理或者一组用户和/或软件代理。用户可以是用户组(也就是集合)中的成员,其中集合涉及特定的EIS、地理区域(也就是在某国家、区域和/或州/省中的用户)。除了是集合的成员的人类用户外,软件应用程序或代理也可以是集合的成员。因此,除非特别陈述,在此使用的术语“用户”不必指人类用户。用户可以通过EIS中的用户ID或者账户来表示。还可以通过客户端应用程序表示用户。用户可以具有与其相关的登录证书。登录证书可以包括但不限于用户名和密码。例如,用户可以是集合的成员并且具有应用程序用户名和密码。用户还可以具有单独的用户名和密码。
如在此使用的,在实施例中,术语“客户端”和“移动设备”涉及远程客户端。客户端或者移动设备可以是用户便携式电脑、平板电脑、PDA、智能手机或者个人电脑中的一个或多个,如下面参考图1中描述的客户端102和112a-c进一步描述的。根据实施例,客户端也可以是台式电脑、使用HTML5的浏览器应用程序或者因特网TV设备。
如在此使用的,在一个实施例中,术语“远程数据库”和"客户端数据库"涉及客户端或移动设备上的用于存储由客户端或移动设备使用的数据的数据库或持久性数据存储。在一个实施例中,偶尔被同步的缓存EIS数据被存储在客户端或移动设备上的远程数据库中。
如在此使用的,在一个实施例中,术语“更新或插入”涉及数据库插入或更新或被编写以尝试插入操作的操作,并且如果由于主键或其它唯一键的限制而导致插入失败,那么在附加条件下重新提交该插入以作为更新操作。以这种方式,即使在数据不能作为新行被插入数据库表中的情况下,也可将单个插入成功地交托给数据库而不需要回滚失败的插入交易。
如在此使用的,移动业务对象(MBO)是交换单元。在一个实施例中,MBO是SYBASETM无线平台(SUP)中的数据交换的基本单元。MBO对应于来自后端数据源的数据集合,后端数据源为例如EIS服务器。数据可以来自数据库查询、网络服务操作、企业应用程序或文件。在2009年7月15日申请的、代理机构案号为1933.0720001的、名称为“MetadataDrivenMobileBusiniessObjects(元数据驱动的移动业务对象)”的、专利申请号为12/503,573的美国申请中提供了非限制性示例,其通过引用整体并入于此。
MBO包含具体实施级细节和抽象界面级细节两者。在实施级,MBO包含只读列以及传到后端数据源的参数,该列包含关于实施中数据的元数据。在界面级,MBO包含映射至列的属性,该属性对应于客户端性能。MBO可以具有还包含参数和论证的操作,其可被用于创建、更新或删除数据。MBO是能够在企业信息系统(例如,以下参考图1描述的EIS114)和客户端(例如以下参考图1描述的客户端102和112a-c)之间被同步的业务对象。通过在本地数据库108中的存储,能够持续MBO,从而在没有被连接至EIS114的期间允许由客户端102对其存取。
成员跟踪和数据逐出系统
图1是根据本发明的实施例的典型成员跟踪和数据逐出系统100。根据本发明的实施例,系统100在企业网络中操作并包括客户端102和112a-c。根据本发明的进一步实施例,客户端102可以是通常被指定为移动计算平台或个人数字助理(PDA)的许多设备中的一个,例如但不限于笔记本电脑、平板电脑、根据MicrosoftPocketPC说明与MicorsoftCE操作系统(OS)一起操作的设备、运行SymbianOS的设备、运行OS的设备、由加利福尼亚洲库比蒂诺的苹果公司提供的Apple由加拿大安大略省滑铁卢的动态研究提供的设备和移动电话、智能手机、手持式计算机、掌上电脑、手提电脑、超级移动PC以及能够运行客户端应用程序104的其它无线移动设备。客户端112a-c可以进一步包含其它无线移动计算设备或具有如PDA的任何类似资源限制的其它数据处理设备。
相关领域的技术人员会意识到,在此描述的应用至客户端102的技术一般还可以应用至非移动设备,例如个人电脑。
根据本发明的实施例,客户端102具有安装在其上的客户端应用程序。根据本发明的实施例,客户端应用程序104能够与设备输入和输出(I/O)106接口,例如监视器、键盘、轨迹球、定位笔或者触摸屏显示器,客户端应用程序104还能够与本地数据库108接口,其存储由客户端应用程序104使用的数据集合。本地数据库108包括对应于使用客户端102和客户端应用程序104的用户的集合成员的数据。
根据本发明的实施例,客户端102与同步服务器110通信。根据本发明的进一步实施例,另外的客户端112a-c类似地与同步服务器110通信。如由相关领域技术人员所理解的,经由任何一个或多个通信通道,各种客户端可被连接至同步服务器110。例如,在一个典型实施例中,客户端102和同步服务器110之间的连接性可以包含蜂窝通信网络和因特网上的通信跳跃。各种通信跳跃自身可是公共或者专用网络,并且可以包括位于因特网以及各种专用内部网上的组件。
根据本发明的实施例,同步服务器110位于一个或多个客户端102和112a-c与企业信息系统(EIS)114之间。同步服务器110有助于捕捉由EIS产生的相关数据的变化并将该变化提供给客户端102和112a-c。同步服务器110还有助于捕捉由客户端102和112a-c产生的变化并将该变化提供至EIS114。以这种方式,本地数据库108中的客户端102可使用的数据可以与来自EIS114、企业数据系统116的对应数据存储的数据同步。根据本发明的实施例,同步服务器110维持反射了来自企业数据系统116的缓存。在一个实施例中,同步服务器110利用来自企业数据系统116的选定的数据副本来维持缓存数据库(未显示)中的缓存,其对应于客户端102上由客户端应用程序104使用的MBO类别。
根据本发明的实施例,EIS114被连接至同步服务器110,从而允许同步服务器110提供前述的数据同步服务。如相关领域技术人员所理解的一样,EIS114和同步服务器110之间的通信同样也可以通过任何通信通道。相关领域的技术人员会进一步理解的是,EIS114和同步服务器110可以共享同一个物理服务器或分布式服务器作为其内的单独软件组件,或者甚至可被编译为单个组合应用程序。因此,应该理解,同步服务器110和EIS114可以被设置在企业网络100内的多个不同位置,并且其仅示例性并非限制性地显示为图1中的单独计算设备。
在本发明的实施例中,EIS114操作参数的类型的范围从简单(即原语)至复杂(即包括结构和/或列表)。例如,创建新客户的EIS114操作是期望接收具有嵌套结构的可扩展标记语言(XML)元素的网络服务。当创建新客户时,用于对应的客户集合的集合成员也相应地变化。基于客户的属性,新创建的客户可以是多个集合中的成员。这种网络服务的非限制性示例由下列XML代码表示。在下面的示例中,新创建的客户可以是“US客户”、“加利福尼亚客户”以及“圣何塞客户”集合中的成员。如相关领域技术人员所领会的,可以使用其它编程语言和技术在下面的编程语言代码样本中创建新的EIS集合成员。
根据本发明的实施例,如先前注意到的,EIS114进一步包括企业数据系统116或另外可通信地联接至企业数据系统116。根据本发明的进一步实施例,在本地数据库108内的数据包括来自企业数据系统116的数据的子集。这个子集在某种程度上基于与客户端102相关的用户的集合成员和订阅。根据本发明的实施例,这个子集数据为移动业务对象(“MBO”)的形式。在2010年6月10日申请的、名称为“PendingStateManagementforMobileBusinessObjects(用于移动业务对象的挂起状态管理)”(代理机构案号:1933.1090001)的、申请号为12/797,975的美国专利申请中描述了用于改变客户端102上本地数据库108中表的数据行以及用于提交经由同步服务器110与EIS114同步的变化的示例方法,其通过引用整体并入于此。
根据本发明的实施例,以数据包定义MBO,其中数据包包含一个或多个MBO的定义。通过使用可视建模工具,MBO可以被定义为类似于结构域的属性的集合和由远程客户端使用的操作的集合。在2010年7月20日申请的、名称为“ParameterValueBindingForMobileBusinessObjects(用于移动业务对象的参数值绑定)”的、代理机构案号为1933.1460000的、申请号待定的美国专利申请中描述了绑定用于MBO的同步参数值的示例可视建模方法和工具,其通过引用整体并入于此。
通过下面的XML代码表示MBO的非限制性示例。如相关领域技术人员所意识到的,可以使用其它编程语言和技术在下面的编程语言代码样本中定义MBO和创建新集合成员:
基于上述典型定义,MBO类别(也就是源代码)会由MBO代码生成器生成。这些类别可由客户端应用程序开发人员使用。例如,开发人员会编写例如下面的代码,从而创建将是客户集合的成员的新客户:
Customerc=newCustomer();
c.setName(″Griffins″);
c.setPhone(″(555)123-4567″);
c.setAddress(″123FourSt″);
c.setCity("Dublin″);
c.setState("CA");
c.create();
如下提供一种上传上述新客户操作至EIS的典型调用:
c.submitPending();
MyDatabase.synchronize();
如相关技术领域的人员所认识到的,客户端应用程序104和同步服务器110之间的通信可由多种不同方式处理。根据本发明的实施例,通信构架会被直接嵌入由代码生成器或由开发人员提供的客户端应用程序104中。根据本发明的另外的实施例,助手应用程序可被配置到客户端102上,从而经由同步服务器110管理与EIS114的通信。
移动业务对象和成员实体模型
根据本发明的实施例,可以使用被称为来自XML的应用程序(“AFX”)的公开可用的基于XML的特定领域语言来建模MBO。相关领域的技术人员会认识到,能够以多种不同方式建模MBO,包括通过使用可视建模工具的图表建模或者通过使用特定领域语言(例如AFX)的文本建模。因此,在此显示和讨论的、所提供的通过使用AFX的示例仅是示例性的而非限制性的。
根据本发明的实施例,程序包定义提供定义了客户端102内本地数据库108的名称的数据库定义、数据库类别定义以及零或更多实体定义。数据库类别定义识别代表本地数据库108的类别。如果被定义,则实体定义中的每一个对应一个MBO。实体定义反过来定义代表对应MBO的类别名称。
根据本发明的实施例,实体本身被存储在本地数据库108中。根据本发明的进一步实施例,使用至少一个代理键和替换键来键控该实体。代理键是由客户端102使用的关键值,以用于解释客户端没有能力存取EIS,114键创建过程。后端企业数据系统116不使用代理键。如果远程客户端意识到用于该实体的EIS114,那么可将该键用作替换键。根据本发明的进一步实施例,由同步服务器110将代理键提供给客户端102,作为待被按需分配的一系列键。
根据本发明的进一步实施例,实体定义包括用于EIS114内对应变化的操作定义。示例性而非限制性的,提供操作定义以用于创建、更新或删除(即逐出)客户端102和EIS114内的集合成员数据。根据本发明的实施例,实体定义也可提供命名查询,其是由客户端102针对本地数据库108发行的预定义查询。根据本发明的进一步实施例,实体定义还包含以下定义,该定义表示:由客户端102产生的集合成员和订阅变化可被公开至同步服务器110,并且同样地由EIS114产生的集合成员和订阅变化可被用户或客户端应用程序104订阅从而被下载至客户端102和112a-c。
结合上述元素的非限制性示例对象模型如下:
在上述典型的对象模型中,与由类别“MyDatabase”表示的本地数据库108“my-bank”相关的数据包“com.example.bank”包含被命名为“Account”的单个实体。该实体通过代理键被键控,具有通过账户ID定义的替换键,在这种情况下,该代理键是由EIS114后端系统使用的实际唯一键。
根据本发明的实施例,账户实体还具有若干属性,包括前述的代理键和账户ID,而且还具有对应于账户和账户余额的客户ID。账户实体还定义了查询“findByCustomer”,该查询考虑了具有对应的客户ID(即集合成员)的特殊账户,以在MBO实例中定位和使用。
此外,根据本发明的实施例,账户实体定义了用于描述EIS114操作的若干操作,以用于创建、更新和删除对应于来自企业数据系统116的实体的数据。
根据本发明的实施例,代码生成器在数据包定义上运行,从而生成用于包含在客户端应用程序104中的代码。这允许客户端应用程序104的开发人员能够快速使客户端应用程序104协调客户端102和同步服务器110之间的集合成员和订阅的变化的下载和上传。根据本发明的进一步实施例,代码生成器还可产生在同步服务器110上执行的代码。
在上述示例中,每个账户代表一个MBO实例,并且每个客户是集合的成员。根据本发明的实施例,如之前所述并如在典型对象模型中所示的,MBO可支持那些将变化的说明激活至EIS114的函数。在一个典型实施例中,这些变化是在MBO上执行的创建、更新或删除操作。这些操作可为用于客户、用户或其它集合成员的创建、更新和删除操作。
如果创建了例如新账户的新集合成员,那么能够调用account.create()方法来将账户指派给本地数据库108。account.delete()方法会从本地数据库108删除账户。根据本发明的实施例,这些修改作为挂起的变化而被全部存储在本地数据库108中。根据本发明的进一步实施例,本地数据库108在修改之前保留原始状态的副本。如果需要,在由EIS114针对企业数据系统116的数据重放因任何原因失败的情况下,这允许本地数据库108的恢复。
根据本发明的实施例,当客户端应用程序104准备将挂起的变化提交至同步服务器110以用于同步至EIS114时,调用submitPending()方法(例如,account.submitPending()),从而队列用于递送的挂起的变化。根据本发明的进一步实施例,该挂起的变化在消息中被递送,如下面将详细描述的。
根据本发明的进一步实施例,发送至同步服务器110的、包含挂起的变化的消息还包括原始状态。通过提交挂起状态和原始状态,EIS114能够避免、检测或解决多个冲突。
根据本发明的实施例,在EIS114不能解决冲突的情况下,或者如果EIS114希望客户端102来解决冲突,那么EIS114能够为客户端应用程序104提供失败通知。根据本发明的进一步实施例,EIS114还能够为客户端应用程序104提供成功重放操作的通知。
下面提供用于定义来自数据库中的典型“customer”的客户实体(即集合成员)的非限制性示例。
在上面的示例中,设置“state”同步参数。根据本发明的实施例,在系统100内部,该参数被转变成“customerpq”实体(持久查询)。在一个实施例中,“state”同步参数的设置导致在“customerpq”表中创建了订阅行。
下面提供了一些相关实体的定义。因此,用于定义来自数据库中典型“customer”表的客户实体(也就是集合成员)的非限制示例如下所示:
在一个实施例中,对于下载至客户端102的任何客户,其客户指令和指令行也被下载。相关产品可以被单独下载。
根据一个实施例,在同步服务器110处运行的下载光标可自动从下面的非限制性示例中显示的“下载数据”元素内的“sql”元素(通过AFX编译器)获得。根据本发明的实施例,下面的代码示例提供了下载光标,为简单起见对其稍做了修改。
用于持久查询的传统数据逐出方案(2010年3月22日)是基于最后存取时间(lastAccessedtime)(存储在客户表中和customer_pq表中)的。该传统技术如下操作:
当在客户端数据库中存取customer_pq时,其最后存取时间被更新。
当在客户端数据库中存取客户行时,其最后存取时间被更新。
客户类别获得方法如下:
publicstaticvoidevict(intn){...}
上述“逐出”方法会删除客户端上在多达多于n天内没有被存取的任何customer_pq和客户行。例如,使用方法调用“evict(7)”的传统技术会删除在7天内没有被存取的数据。与该传统方案相关的缺点包括:
1.利用例如MobiLink客户端的客户端来管理客户或customer_pq表中的最后存取时间会导致下载冲突。这是因为传统的同步系统不应该修改下载行,因为它们通过执行“重放”操作而上传变化。这导致需要使用最后存取时间来维持单独的表,其通过扩展会导致更多代码的生成并且需要更多连接查询。
2.当使用“持久查询”实施同步参数时,不生成逐出方法。换句话说,仅当使用请求式订阅时,传统逐出方案才可用,这不会在所有的移动同步环境中得到支持。
3.对于成员跟踪和数据逐出来说,依赖于“非活动超时”是不太精确的。
4.该方案不处理“对象迁移”。例如,如果存在具有状态=“NY”的客户“Jim”,并且客户端102具有纽约客户(也就是具有状态=“NY”的客户)的订阅,那么客户“Jim”被下载至客户端102并存储在本地数据库108中。在客户之后被迁移至状态=“CA”的场景下,会更新企业数据系统116中的客户数据库。当客户端102接下来同步时,其不会再次下载“Jim”。该场景下的问题是,虽然本地数据库108仍然具有“Jim”记录,但是该记录具有的是“NY”的旧状态。在以下参考图2描述的本发明的实施例中,通过使用采用代理键的成员跟踪技术,“Jim”记录从客户端自动被逐出。
5.该方案也没有将删除(也就是“逐出”)下载至客户端,由于客户端正在删除“pq”行,该删除应该被下载。由于上面的问题(2),客户端当前正在删除“pq”行。
下面参考图2描述两种解决关于传统方案的问题4的方法。根据本发明的实施例,第一种方法涉及跟踪已被下载至客户端102的(父对象的)代理键。根据该实施例,如果在第二次或随后的运行中,下载光标没有再次发现代理键,那么该技术发送“下载-删除”至客户端102。
在另一个实施例中,第二种方法跟踪成员变化,这样,每当“订阅属性”(也就是在下载光标的地点子句中使用的属性)发生变化,在单独的表中创建“成员跟踪”行,其能够在下载光标中被引用从而确定应该从客户端102删除的行。
在一个实施例中,为了解决上面关于数据逐出的问题5,如果客户端已经删除了“pq”行,那么该技术引起用于任何客户的、由被删除的“pq”行引用的“下载-删除”。在一个实施例中,从下载光标中去除条件“pq.deleted=0”。因此,从下载光标中执行的该“去除”如下:
在一个实施例中,如果采用代理键跟踪来处理对象迁移,那么不需要上面的光标变化,因为下载光标处理可能具有其自己的处理“删除”的方式。
该技术会导致相同的客户行在结果集中出现两次,一次具有pq.deleted=0并且一次具有pq.deleted=1。这是因为可能出现多个“pq”行,该多个“pq”行中的一个或多个被标记为“删除”,并且其中的一个或多个不被标记为“删除”。根据本发明的实施例,在这种情况下,生成的代码会消除pq.deleted=1的行。被删除的标记可被用于确定“upsert”(也就是更新/删除)操作与删除操作的对比。在一个实施例中,然后删除操作被计算为(x.deleted或者pq.deleted)。根据本发明的实施例,如果用于所选择的客户端的所有pq行都具有pq.deleted=1,或者该客户被删除,那么将“下载-删除”发送至客户端。
根据本发明的实施例,该技术设置与同步参数的旧的非当前值相关的持久查询订阅行(即customer_pq行),其可在同步开始处由客户端自动删除。根据本发明的实施例,期望多个订阅的用户可使用列表类型的同步参数。
在基于消息的同步系统中,用户不可能精确地调用同步。在一个实施例中,在一些情况下,同步是隐含地开始的。例如,如果用户保存与一个或多个同步参数相关的对象,或者保存对象的个性化参数的变化,其中任何个性化参数都被指定为用于任何同步参数的默认值,那么,同步是通过隐函数调用(即对“同步”函数、程序或方法的调用)而自动开始的。
订阅管理技术
根据本发明的实施例,下面描述精确的订阅管理方法。
在开发人员使用多值(列表类型)同步参数的情况下,对于他们来说订阅行的管理是不方便的,该订阅行为例如隐含生成的Customer_pull_pq实体的实例。例如,用户不能针对他们的订阅(特别是当存在多个订阅时,例如当与用户相关的客户端102订阅了多个具有关于“id”属性的同步参数的产品时)来运行查询。
根据本发明的实施例,该问题的解决方案是使订阅实体公开,并且给予它们更多描述性名称。例如,一种订阅可以被命名为“CustomerSubscription”,而不是“Customer_pull_pq”。根据一个实施例,代替使用列表类型的同步参数,开发人员能够使用简单类型的同步参数,并亲自管理多个订阅实例。
根据该典型实施例,CustomerSubscription实体应该具有“状态”属性,而不是Customer_pull_pq中使用的“stateParam”,以去掉“Param”后缀。在一个实施例中,客户端应用程序104无法存取内部持久查询(PQ)属性(例如但不限于“remoteId”)。例如,这些内部PQ属性可以是专用Java程序包或C#内部变量。在一个实施例中,“id”PQ属性可以被重新命名,从而在用户具有被命名为“id”的同步参数的情况下避免名称冲突。
成员跟踪和数据逐出方法
图2是阐释了根据本发明一个实施例的步骤的流程图200,通过这些步骤来执行成员跟踪和数据逐出。
根据本发明的一个实施例,更加具体地,流程图200阐释了一些步骤,通过这些步骤,可操作客户端102的客户端应用程序104来跟踪集合成员,并且在经由同步服务器110使业务对象与EIS114同步后逐出数据。
通过连续引用图1中阐释的实施例而描述图2。然而,图2不限于该实施例。应注意的是,流程图中的步骤不必必须以所显示的顺序发生。
在一个实施例中,该方法最小化了对同步服务器110上缓存数据库的往返操作的次数以及往返于客户端102和同步服务器110之间的结果数据的量。根据一个实施例,该方法将成员跟踪和数据逐出所需的查询结合到生成的存储程序中,并且确保所有的客户端同步处理都是在对缓存的单个远程程序调用(RPC)中发生的,且同时简单提交作为参数的客户id和最后被同步的时间。在一个实施例中,RPC返回两个结果集,其是删除和更新或插入数据流。根据该典型实施例,作为副作用而正确维持客户端跟踪表,并且不需要将潜在的大量代理键集合转换至用于任何处理的中间设备服务器。
下面参考流程图200的步骤202-224描述在客户端102的同步期间用于成员跟踪和数据逐出的方法。例如,对于订阅中的每个MBO,以父业务对象开始,执行下面描述的步骤204-222。
该方法从步骤202开始并且进行至步骤204,在步骤204中发生经由中间设备对来自EIS114的本地属性的映射。
在步骤204中,当EIS114发送数据至同步服务器110或者当同步服务器110获得来自EIS114的数据时,来自企业数据系统116的本地属性通过中间设备被映射至关系结构。在一个实施例中,本地属性被映射至SYBASETM无线平台(SUP)中的相关数据库表。在该步骤,EIS数据被映射到具有行和列的关系结构中,其中每行代表一个MBO属性,并且其中MBO属性是来自EIS的本地属性。例如,在企业数据系统116中,例如客户的集合成员可以具有例如但不限于诸如客户ID、名称、密码、地址的域的属性。在该示例中,对于企业数据系统116中的每一个客户,存在数据行,并且在步骤204中识别主键,该主键唯一地识别每个客户。在一个实施例中,被识别的主键被用于优化在客户端102和EIS114之间的同步期间的、随后的缓存操作。主键能够指示该记录变化是更新/插入(“upsert”)还是删除。例如,通过指示给定数字(其具有例如成员ID的主键)是已经存在的还是新创建的,该主键能够被用于优化在同步服务器110上的缓存数据库中的成员记录副本的创建和更新。
在本地EIS属性被映射后,方法进行至步骤206。
根据本发明的实施例,在步骤206中,生成代理键。在一个实施例中,代理键是在同步服务器110上使用的全局唯一标识符,并且其不在EIS114内被使用。根据本发明的实施例,在该步骤中生成代理键并将其填入同步服务器110上的缓存数据库中。在一个实施例中,代理键集合被输入同步服务器110上的临时表中。在该步骤中,为每个集合成员,例如客户,生成代理键。在生成代理键后,方法进行至步骤208。
根据本发明的实施例,在步骤208中,创建当前应该是用于客户端应用程序104的订阅的一部分的代理键的列表。在该步骤中,确定在步骤206中生成的对应于客户端感兴趣的数据的所有代理键。在一个实施例中,将客户端对集合成员的兴趣表示为一个或多个订阅。在步骤208中,将客户端先前具有的、现有的同步结果的代理键列表和与客户端感兴趣的数据相关的代理键进行比较。在一个实施例中,每次远程客户端同步时,同步服务器110为该客户端维持作为同步结果的、其所具有的、用于数据的代理键的列表。以这种方式,之前同步至客户端102的代理键记录被维持在同步服务器110上。根据本发明的进一步实施例,可以断定客户端应该具有基于以下两个标准的业务对象:
a)客户端具有关于该业务对象的明确的“拉动查询”订阅;
b)该业务对象是具有客户端所订阅的其它业务对象的关系的子对象。
在该步骤中,收集用于上述标准a)的结果的示例查询如下所示:
其中,“?”是将依据客户端的拉动订阅而转至客户端的、用于MBO的完整代理键的列表。
在一个实施例中,步骤208不考虑最后修改的时间戳。
在该步骤中,收集用于上述标准b)的结果的示例查询如下所示:
上述查询会返回由父MBO引用的所有在同步完成后应该位于客户端上的子MBO。在一个实施例中,上述两个查询的结果被用于填充临时表。
在一个实施例中,步骤208包括:确定上述两个查询结果的差异联集,以创建当同步结束时客户端应当具有的代理键的完整集合。本领域技术人员将理解的是,该差异联集不包括由所述两个查询返回的代理键的复制。
根据一个实施例,步骤208包括:将该代理键的完整集合输入临时表中。用于填充该临时表的示例性创建陈述如下所示:
CREATEGLOBALTEMPORARYTABLE#should_have_SK(skbigint
PRIMARYKEY)NOTTRANSACTIONAL
步骤208可被概念化为用于例如客户的集合成员的代理键之间的集差操作,该代理键是客户端当前具有的而不在同步完成之后客户端应该具有的代理键集合中的代理键。在上面所示的实施例中,该集差被存储在代理键的临时表存储列表中。在创建代理键列表后,该方法进行至步骤210。
根据本发明的实施例,在步骤210中,确定客户端当前具有的任何代理键是否不再位于客户端应该具有的代理键集合中(即在步骤208中创建的代理键集合)。步骤210能够被执行为差集操作,从而确定客户端当前具有的、因为它们不再位于客户端应该具有的代理键集合中而应该被逐出的所有代理键。执行该步骤的结果是应该从客户端102上的本地数据库108中被逐出的、该成员的代理键列表。步骤210将该“确定”表示为关于给定的代理键是否不再位于客户端应该具有的代理键集合中的决定。根据一个实施例,对客户端当前具有的每个代理键重复执行该“确定”。在一个实施例中,利用下面的查询来制定该“确定”:
在一个实施例中,用于上述查询的结果集是用于客户端的“下载-删除”光标。
如果确定代理键不再位于客户端应该具有的集合中,那么控制被转至步骤214,在步骤214中数据被逐出(删除)。另一方面,如果在步骤210中确定了代理键位于客户端应该具有的集合中,那么控制转到步骤216。
根据本发明的实施例,在步骤214中,从客户端102上的本地数据库108中去除对应于客户端的被删除的代理键的数据。在一个实施例中,该步骤确保该去除是交易的一部分,这样,当对同步失败的确定已经失效时,该去除能够被回滚。该步骤包含从本地数据库108中去除对应于应该被逐出的代理键的表记录。该去除可以被表示为下面的删除陈述:
DELETEFROM<MBO>_client_SK
WHEREskIN(SELECTskFROM#should_delete_SK)
根据本发明的一个实施例,在步骤218中,将被逐出的代理键从客户端期望具有的代理键列表(也就是客户端当前应该具有的代理键)中去除。在一个实施例中,从列出了客户端应该具有的所有代理键的“永久记录”表中删除该代理键,从而执行该步骤。在将该被逐出的代理键去除之后,该方法进行至步骤220。
在步骤220中,确定是否存在需要逐出的另外的代理键。如果确定存在需要逐出的另外的代理键,那么控制转到步骤214。以这种方式,对于不再位于代理键集合中的每个代理键重复步骤214和218。如果确定不存在需要逐出的另外的代理键,那么控制转到步骤224。
根据本发明的一个实施例,在步骤216中,更新客户端期望具有的代理键列表。在一个实施例中,经由使用更新或插入交易来执行该步骤,该更新或插入交易能够响应于对同步已经失败的确定而被回滚。对代理键列表的更新可以表示为下列插入陈述:
INSERTINTO<MBO>_client_SK(clientid,sk)ONEXISTINGSKIPselect?,skFROM#should_have_SK
其中,“?”是当前用户的ID并且其作为参数被转入上面的选择查询中。
在一个实施例中,对于客户端已经具有的代理键,上述的插入陈述不执行任何操作(由于“onexistingskip”子句),但是对于每个新的代理键,当该代理键首先成为客户端应该具有的一部分时,客户端还不具有上述“插入行”和“经由用于first_added列的默认设置而设置时间戳”的陈述。
根据一个实施例,步骤216包括:生成更新或插入光标,从而将新MBO的插入和变化的MBO的更新发送至客户端。该更新或插入光标可以被表示为下面的查询:
其中,输入参数“?”是客户ID,并且last_sync_time用于该客户(两次)。
在上述选择陈述中的最终AND子句拾取那些对于客户端来说是新的MBO变化(last_modified>)和MBO(由于成员发生变化,拉动查询或者父关系发生变化)。在代理键列表被更新后,控制被转到步骤222,在该步骤中清除临时表。
根据本发明的一个实施例,在步骤222中清除临时表,该表列出了客户端应该具有的代理键和应该被删除的代理键。该清除可以被表示为下面的删除陈述:
deletefrom#should_have_SK
deletefrom#should_delete_SK
在清除了临时表后,控制被转到步骤224。
然后,该方法终止于步骤224。
根据本发明的一个实施例,由客户端应用程序104在本地数据库108内产生的挂起的变化不被视为最终(也就是被指派)的,直到确定了成功完成同步或者直到EIS114表示企业数据系统116已经被更新从而反射该挂起的变化。相关领域的技术人员会认识到,对现存数据的修改包括对MBO的一个或多个属性的修改,如在客户端102上的本地数据库108内表示的。
在一个实施例中,每当远程客户端发起对现存成员数据的修改时,通常通过执行更新或删除(也就是逐出)函数首先将集合成员数据的原始状态保存在原始状态表中,并且将挂起变化添加至主表中。在2010年6月10日申请的、名称为“MessageBasedSynchronizationForMobileBusinessObjects(用于移动业务对象的基于消息的同步)”的、代理机构案号为1933.0940001的、专利申请号为12/813,104的美国专利申请中进一步详述了客户端应用程序104被配置成通过使用代理键和表来处理创建、更新和删除请求的各种方式示例,其通过引用整体并入于此。
示例计算机系统实施
可以通过软件、固件、硬件或其组合来实施本发明的不同方面。图3阐释了示例计算机系统300,在该系统中,本发明或本发明的部分可以被实施为计算机可读代码。例如,由图2的流程图200所示的方法可以在系统300中实施。图1中的成员跟踪和数据逐出系统100也能够在系统300中实施。基于该示例计算机系统300描述了本发明的各个实施例。在阅读了该说明后,对相关领域的技术人员来说,如何使用其它计算机系统和/或计算机系统结构来实施本发明将是显而易见的。
计算机系统300包括一个或多个处理器,例如处理器304。处理器304可以是特殊用途或一般用途处理器。处理器304被连接至通信基础设施306(例如,总线或网络)。
计算机系统300还包括主存储器308,优选为随机存取存储器(RAM),并且还可包括辅助存储器310。辅助存储器310可以包括例如,硬盘驱动312、可移动存储驱动314、闪存、记忆棒和/或任何类似的非易失性存储机构。可移动存储驱动314可以包括软盘驱动、磁带驱动、光盘驱动、闪存等。可移动存储驱动器314以已知的方式从可移动存储单元318读取和/或对其写入。可移动存储单元318可以包括由可移动存储驱动314读取或对其写入的软盘、磁带、光盘等。相关领域技术人员将会理解的是,可移动存储单元318包括具有存储在其上的计算机软件和/或数据的非暂态计算机可读存储介质。
在可选择的实施方式中,辅助存储器310可以包括用于允许计算机程序或者其他指令被下载至计算机系统300的其他类似装置。这种装置可以包括例如可移动存储单元322和接口320。这种装置的示例可以包括程序盒式存储器和盒式接口(例如在视频游戏装置中使用的那些)、可移动存储芯片(例如EPROM或者PROM)和相关插座,以及允许软件和数据从可移动存储单元322转移至计算机系统300的其他可移动存储单元322和接口320。
计算机系统300还可以包括通信接口324。通信接口324允许软件和数据在计算机系统300和外部设备之间传送。通信接口324可以包括调制解调器、网络接口(例如以太网卡)、通信端口、PCMCIA插槽和卡等。经由通信接口324传送的软件和数据是电子、电磁、光信号的形式,或者是能够被通信接口324接收的其他信号。这些信号经由通信路径326被提供至通信接口324。通信路径326携载信号并可通过使用电线或电缆、光纤、电话线、移动电话链接、RF链接或其它通信通道而实施。
计算机系统300可另外包括计算机显示器330。根据一个实施例,计算机显示器330可与显示接口302结合而被用于显示图1中描述的EIS114和同步服务器110的显示。计算机显示器330还可被用作经由客户端102上的设备I/O106显示的交互接口(未显示)。
在本文件中,术语“计算机程序介质”、“非暂态计算机可读介质”和“计算机可用介质”一般被用于指例如可移动存储单元318、可移动存储单元322和安装在硬盘驱动1112中的硬盘的介质。由通信路径326携载的信号还可体现为在此描述的逻辑。计算机程序介质和计算机可用介质还指例如主存储器308和辅助存储器310的存储器,其可是记忆半导体(例如,DRAM等)。这些计算机程序产品是为计算机系统300提供软件的装置。
计算机程序(也称为计算机控制逻辑)被存储在主存储器308和/或辅助存储器310中。计算机程序还可以通过通信接口324被接收。当执行这些计算机程序时,能够使计算机系统300实施在此描述的本发明。特别地,当执行这些计算机程序时,能够使处理器304实施本发明的程序,例如上面讨论的图2的流程图200和图1的系统100所阐释的方法中的步骤。因此,这种计算机程序表示计算机系统300的控制器。在使用软件实施本发明的情况下,软件可被存储在计算机程序产品上,并可使用可移动存储驱动314、接口320、硬盘驱动312或者通信接口324而被载入计算机系统300中。
本发明还旨在包括存储在任何计算机可用介质上的软件的计算机程序产品。当在一个或多个数据处理装置中执行这种软件时,其促使数据处理装置如在此所描述地操作。本发明的实施例采用现在已知或将来已知的任何计算机可用或可读介质。计算机可用介质的示例包括但不限于主存储装置(例如任何类型的随机存取存储器)、辅助存储装置(例如,硬盘驱动、软盘、CDROMS、ZIP磁盘、磁带、磁存储装置、光存储装置、MEMS、纳米技术存储装置等)以及通信介质(例如,有线和无线通信网络、局域网、广域网、内部网等)。
结论
虽然上面已经描述了本发明的各种实施例,但应该理解的是,其仅是示例性而非限制性的。相关领域的技术人员会理解,在不偏离随附权利要求书中限定的本发明的精神和范围的情况下,可以对其进行各种形式上和细节上的改变。应该理解的是,本发明不限于这些示例。本发明可以应用至如在此描述地操作的任何元件。因此,本发明的宽度和范围不应由任何上述示意实施例限制,而是仅根据随附权利要求和它们的等同方案限定。
Claims (14)
1.一种数据同步方法,其包括:
将用于移动业务对象(MBO)的本地属性映射至关系结构;
创建唯一代理键的列表,所述唯一代理键当前应该是客户端订阅的一部分,其中所述列表包括由父移动业务对象MBO引用的子移动业务对象(MBO),并且期望在同步完成后,所述子移动业务对象在移动客户端上;
确定所述客户端当前具有的被删除的代理键的集合,所述被删除的代理键不再位于当前应该是客户端订阅的一部分的代理键的列表中;
从客户端设备数据库中去除客户端的所述被删除的代理键;
更新客户端期望具有的代理键列表;其中所述更新包括:
对于客户端已经具有的代理键,不执行任何操作;以及
对于客户端还不具有的新的代理键中的每一个:
在所述代理键列表中插入行;以及
设置时间戳,所述时间戳表示所述新的代理键何时首先成为客户端期望具有的一部分。
2.如权利要求1所述的数据同步方法,其中,所述创建进一步包括:在临时表中存储唯一代理键的列表,以及其中,所述方法进一步包括,在所述更新后:
清除所述临时表。
3.如权利要求1所述的数据同步方法,其中,所述映射通过中间设备执行。
4.如权利要求1所述的数据同步方法,其中,所述映射基于所述客户端订阅。
5.如权利要求4所述的数据同步方法,其中,所述客户端订阅表示对集合中的一个或多个成员感兴趣。
6.如权利要求5所述的数据同步方法,其中,所述客户端订阅表示对与地理区域相关的集合中的成员感兴趣。
7.如权利要求1所述的数据同步方法,进一步包括:
当需要删除额外的代理键时,重复所述确定步骤。
8.如权利要求1所述的数据同步方法,其中,所述创建进一步包括:
基于下列中的一个或多个来确定所述客户端是否应该具有移动业务对象MBO:
所述客户端具有关于移动业务对象MBO的明确的拉动查询;或者
所述移动业务对象MBO是由所述客户端订阅的另一个MBO的子移动业务对象MBO。
9.如权利要求1所述的数据同步方法,进一步包括:
对于被删除的代理键的集合,为所述客户端创建下载删除光标。
10.如权利要求2所述的数据同步方法,其中,所述被删除的代理键的集合被存储在第二临时表中。
11.如权利要求1所述的数据同步方法,其中,去除和更新是数据库交易的一部分,其可响应于对随后数据同步失败的确定而被回滚。
12.一种用于数据同步的系统,其包括:
存储器,其被配置成存储各模块,所述模块包括:
映射模块,其被配置成将用于移动业务对象(MBO)的本地属性映射至关系结构;
创建模块,其被配置成创建唯一代理键的列表,所述唯一代理键当前应该是客户端订阅的一部分,其中,所述列表包括由父移动业务对象MBO引用的子移动业务对象(MBO),并且期望在同步完成后,所述子移动业务对象在移动客户端上;
确定模块,其被配置成确定客户端当前具有的被删除的代理键的集合,所述被删除的代理键不再位于当前应该是客户端订阅的一部分的代理键的列表中;
逐出模块,其被配置成从客户端设备数据库中去除客户端的所述被删除的代理键;
更新或插入模块,其被配置成更新客户端期望具有的代理键列表;其中,所述更新或插入模块进一步被配置成:对于所述客户端还不具有的新的代理键中的每一个:
在所述代理键列表中插入行;以及,
设置时间戳,所述时间戳表示所述新的代理键何时首先成为客户端期望具有的一部分。
13.一种用于在移动客户端设备和企业信息系统(EIS)之间同步数据更新的方法,所述方法包括:
检测对移动客户端设备订阅的更新或检测移动业务对象(MBO)的集合成员的变化;
创建当前应该是所述移动客户端设备订阅的一部分的全局唯一代理键的代理键列表,其中,所述列表包括由所述移动业务对象MBO引用的子移动业务对象(MBO),并且期望在同步完成后,所述子移动业务对象在所述移动客户端设备上;
筛选用于与所述移动客户端设备相关的用户的被缓存的EIS数据,其中,所述筛选选择由所述移动客户端设备订阅的被缓存的EIS数据的子集;
响应于对从集合中逐出成员的检测:
向所述移动客户端设备发送删除通知,从而去除被逐出的成员;并且
更新代理键列表中对应于所述被逐出的成员的行,从而表示不期望在移动客户端设备上存在与该代理键相关的数据;以及
响应于对集合中成员的变化的检测或者响应于对集合中成员的增加的检测:
向所述移动客户端设备发送更新或插入(“upsert”)通知,从而更新变化的或增加的成员;
更新所述代理键列表中对应于所述变化的或增加的成员的行,从而表示期望在移动客户端设备上存在与该代理键相关的数据;以及
在所述代理键列表中设置时间戳,所述时间戳表示与代理键相关的数据何时首先成为移动客户端设备期望具有的订阅数据的一部分。
14.如权利要求13所述的方法,其中所述检测进一步包括:
检测父移动业务对象MBO的集合成员的变化。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/839,843 | 2010-07-20 | ||
US12/839,843 US8200624B2 (en) | 2010-07-20 | 2010-07-20 | Membership tracking and data eviction in mobile middleware scenarios |
PCT/US2011/044250 WO2012012294A2 (en) | 2010-07-20 | 2011-07-15 | Memebership tracking and data eviction in mobile middleware scenarios |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103098024A CN103098024A (zh) | 2013-05-08 |
CN103098024B true CN103098024B (zh) | 2016-03-09 |
Family
ID=45494403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180035759.8A Active CN103098024B (zh) | 2010-07-20 | 2011-07-15 | 移动中间设备场景中的成员跟踪和数据逐出 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8200624B2 (zh) |
EP (1) | EP2596425B1 (zh) |
CN (1) | CN103098024B (zh) |
WO (1) | WO2012012294A2 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL127558A0 (en) | 1996-07-03 | 1999-10-28 | Genentech Inc | Hepatocyte growth factor receptor agonists and uses thereof |
US8335762B2 (en) * | 2008-10-06 | 2012-12-18 | Microsoft Corporation | Resource tracking |
WO2010041628A1 (ja) * | 2008-10-07 | 2010-04-15 | シャープ株式会社 | デジタル放送受信装置、及び受信方法 |
US20120047223A1 (en) * | 2010-08-20 | 2012-02-23 | Nokia Corporation | Method and apparatus for distributed storage |
US20120117105A1 (en) * | 2010-11-05 | 2012-05-10 | Apple Inc. | Collaborative Database Operations |
US9542432B2 (en) | 2011-09-30 | 2017-01-10 | Oracle International Corporation | Systems and methods for multitenancy data |
US9529576B2 (en) | 2011-09-30 | 2016-12-27 | Oracle International Corporation | Systems and methods for object to XML mappings |
US9177033B2 (en) * | 2011-09-30 | 2015-11-03 | Oracle International Corporation | Systems and methods for composite persistence units |
US8954461B2 (en) | 2011-09-30 | 2015-02-10 | Oracle International Corporation | Systems and methods for object to relational mapping extensions |
CN103927236B (zh) * | 2013-01-11 | 2018-01-16 | 深圳市腾讯计算机系统有限公司 | 在线校验方法和装置 |
US10657278B2 (en) * | 2013-03-15 | 2020-05-19 | Live Nation Entertainment, Inc. | Prioritized link establishment for data transfer using task scheduling |
CN104615596B (zh) * | 2013-11-04 | 2019-08-13 | 腾讯科技(深圳)有限公司 | 历史记录信息的清除方法及浏览器 |
JP2015118111A (ja) * | 2013-12-16 | 2015-06-25 | オリンパス株式会社 | レンズ枠、レンズ組立体、およびレンズ組立体の製造方法 |
US9298624B2 (en) * | 2014-05-14 | 2016-03-29 | HGST Netherlands B.V. | Systems and methods for cache coherence protocol |
US10885036B2 (en) * | 2015-02-03 | 2021-01-05 | Red Hat, Inc. | Obtaining incremental updates from a database using a partial query |
US20170154066A1 (en) * | 2015-11-30 | 2017-06-01 | International Business Machines Corporation | Subscription service for monitoring changes in remote content |
US20170220659A1 (en) * | 2016-01-29 | 2017-08-03 | Arista Networks, Inc. | System and method of key range deletions |
CN106534336B (zh) * | 2016-11-29 | 2019-08-23 | 武汉斗鱼网络科技有限公司 | 一种视频订阅动态的实现系统及方法 |
EP3602335A1 (en) * | 2017-05-04 | 2020-02-05 | Siemens Aktiengesellschaft | Subscription handling and in-memory alignment of unsynchronized real-time data streams |
US11093475B2 (en) * | 2017-11-03 | 2021-08-17 | Salesforce.Com, Inc. | External change detection |
CN113076380B (zh) * | 2021-04-27 | 2022-07-26 | 苏州科达科技股份有限公司 | 数据同步方法、装置、系统、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1581074A (zh) * | 2003-07-31 | 2005-02-16 | 国际商业机器公司 | 保持和恢复移动设备用户设置的方法和系统 |
CN1742255A (zh) * | 2002-12-23 | 2006-03-01 | 德克斯特拉公司 | 移动数据和软件更新系统及方法 |
CN1811774A (zh) * | 2005-01-28 | 2006-08-02 | 捷讯研究有限公司 | 利用移动通信设备自动集成来自多信息存储单元的内容 |
CN101416183A (zh) * | 2005-12-08 | 2009-04-22 | 卓越技术公司 | 保存无线设备当前数据的方法和系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6801915B1 (en) * | 1999-07-28 | 2004-10-05 | Robert Mack | Paired keys for data structures |
US6922685B2 (en) | 2000-05-22 | 2005-07-26 | Mci, Inc. | Method and system for managing partitioned data resources |
US7366738B2 (en) | 2001-08-01 | 2008-04-29 | Oracle International Corporation | Method and system for object cache synchronization |
US7191182B2 (en) * | 2002-07-20 | 2007-03-13 | Microsoft Corporation | Containment hierarchy in a database system |
WO2004036432A1 (ja) * | 2002-10-21 | 2004-04-29 | Annex Systems Incorporated | データベースのアクセラレーター |
WO2004064481A2 (en) * | 2003-01-23 | 2004-08-05 | Dexterra, Inc. | System and method for mobile data update |
US7730446B2 (en) * | 2003-03-12 | 2010-06-01 | Microsoft Corporation | Software business process model |
US7577934B2 (en) * | 2003-03-12 | 2009-08-18 | Microsoft Corporation | Framework for modeling and providing runtime behavior for business software applications |
US20050278277A1 (en) | 2004-05-27 | 2005-12-15 | International Business Machines Corporation | Method and apparatus for propogating tables while preserving foreign key integrity |
US7756829B2 (en) * | 2006-04-18 | 2010-07-13 | Sandeep Bhanote | Method and apparatus for mobile data collection and management |
US7979475B2 (en) * | 2006-04-26 | 2011-07-12 | Robert Mack | Coherent data identification method and apparatus for database table development |
US7752165B2 (en) * | 2007-08-01 | 2010-07-06 | Sybase, Inc. | Persistent query system for automatic on-demand data subscriptions from mobile devices |
US8725679B2 (en) | 2008-04-07 | 2014-05-13 | International Business Machines Corporation | Client side caching of synchronized data |
US9477727B2 (en) * | 2008-08-01 | 2016-10-25 | Sybase, Inc. | Abstracting data for use by a mobile device having occasional connectivity |
-
2010
- 2010-07-20 US US12/839,843 patent/US8200624B2/en active Active
-
2011
- 2011-07-15 WO PCT/US2011/044250 patent/WO2012012294A2/en active Application Filing
- 2011-07-15 CN CN201180035759.8A patent/CN103098024B/zh active Active
- 2011-07-15 EP EP11810203.7A patent/EP2596425B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1742255A (zh) * | 2002-12-23 | 2006-03-01 | 德克斯特拉公司 | 移动数据和软件更新系统及方法 |
CN1581074A (zh) * | 2003-07-31 | 2005-02-16 | 国际商业机器公司 | 保持和恢复移动设备用户设置的方法和系统 |
CN1811774A (zh) * | 2005-01-28 | 2006-08-02 | 捷讯研究有限公司 | 利用移动通信设备自动集成来自多信息存储单元的内容 |
CN101416183A (zh) * | 2005-12-08 | 2009-04-22 | 卓越技术公司 | 保存无线设备当前数据的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2012012294A2 (en) | 2012-01-26 |
EP2596425A2 (en) | 2013-05-29 |
WO2012012294A3 (en) | 2012-05-10 |
US8200624B2 (en) | 2012-06-12 |
US20120023067A1 (en) | 2012-01-26 |
EP2596425B1 (en) | 2020-04-08 |
CN103098024A (zh) | 2013-05-08 |
WO2012012294A8 (en) | 2012-03-22 |
EP2596425A4 (en) | 2017-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103098024B (zh) | 移动中间设备场景中的成员跟踪和数据逐出 | |
US11740891B2 (en) | Providing access to a hybrid application offline | |
US11985192B2 (en) | Synchronized content library | |
CN102667772B (zh) | 文件级分级存储管理系统、方法和设备 | |
CN103649945B (zh) | 最近使用的文档列表的自动同步 | |
CN103765423B (zh) | 收集与本地存储的数据文件相关联的事务数据 | |
CN102272751B (zh) | 在数据库环境通过背景同步的数据完整性 | |
CN103946844A (zh) | 跨集群文件系统同步更新 | |
CN109683826A (zh) | 用于分布式存储系统的扩容方法和装置 | |
CN101512498A (zh) | 向用户提供对分布在多个不同类型的用户设备中的数据文件的访问 | |
US20160179789A1 (en) | Content localization using fallback translations | |
CN103780636A (zh) | 一种缓存数据处理方法和系统 | |
WO2023134275A1 (zh) | 模型管理方法、模型管理服务、客户端、存储介质及程序 | |
CN105446981B (zh) | 站点地图生成方法、访问方法及装置 | |
CN107193563A (zh) | 一种服务器无状态固件版本管理的方法 | |
US20170168793A1 (en) | Split installation of a software product | |
CN108595488B (zh) | 数据迁移方法和装置 | |
CN102768721B (zh) | 控制白名单的方法及装置 | |
CN116610689A (zh) | 缓存数据的动态更新方法、装置、设备及介质 | |
CN108037930A (zh) | 一种Lustre文件系统的部署方法、装置及设备 |
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 |