CN101196912B - 用于应用程序状态同步的方法和设备 - Google Patents

用于应用程序状态同步的方法和设备 Download PDF

Info

Publication number
CN101196912B
CN101196912B CN200710197019.XA CN200710197019A CN101196912B CN 101196912 B CN101196912 B CN 101196912B CN 200710197019 A CN200710197019 A CN 200710197019A CN 101196912 B CN101196912 B CN 101196912B
Authority
CN
China
Prior art keywords
update request
client computer
priority
response
frequently
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
Application number
CN200710197019.XA
Other languages
English (en)
Other versions
CN101196912A (zh
Inventor
崔伟毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAP SE
Original Assignee
SAP SE
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SAP SE filed Critical SAP SE
Publication of CN101196912A publication Critical patent/CN101196912A/zh
Application granted granted Critical
Publication of CN101196912B publication Critical patent/CN101196912B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Abstract

描述了一种方法和设备,用于以同步方式,使客户机中的应用程序状态与后端系统中的数据源同步。根据按照接收的更新请求的历史确定的优先权,向客户机发送一个响应。当接收到来自后端系统中的数据源的通知消息时,按照与每个更新请求有关的优先权,从目前待定被服务的多个更新请求中选择一个更新请求。通过网络向与选择的更新请求对应的客户机发送一个响应。该响应包括按照数据源中的变化以及对应客户机中的当前应用程序状态的状态更新。

Description

用于应用程序状态同步的方法和设备
技术领域
本发明总体上涉及企业计算。更具体地说,本发明涉及使应用程序状态与数据源同步。
背景技术
越来越多的基于浏览器的应用程序被引入现代企业计算。通常,浏览器根据用户请求,对其应用程序状态(application state),如来自对应的服务器的业务流程图(business process view),进行更新。浏览器性能的最新进步,如RIA(Rich Internet Application)技术的采用,已经使得浏览器能够在不需要来自用户的明确要求的情况下,使其应用程序状态与后端服务器(backend server)自动同步。因此,当正在使应用程序状态同步时,浏览器用户与浏览器之间的互动不必受阻。通常,基于脚本的计时器被用来利用隐藏的HTTP(HypertextTransport Protocol,超文本传输协议)通信信道,触发来自浏览器内部的定期请求和响应。
图1为示出了基于浏览器的应用程序中的,基于计时器的状态同步的例子的时序图。当由终端用户通过基于浏览器的应用程序103中的用户接口,触发了状态同步请求101时,通常用计时器值对基于脚本的计时器105进行初始化,从而以正在进行的方式(ongoing manner)(例如,循循环),用服务器侧的动作109,形成定期请求和响应。使用HTTP的基于浏览器的隐藏通信信道107可以被设置为用在响应中携带的最新状态数据,更新浏览器用户界面117。当在服务器接收到请求时,可以调用业务对象113,以从数据源115中检索最新状态数据。
但是,不论浏览器中的应用程序状态与服务器是否同步,基于计时器的通信信道都在浏览器与服务器之间,定期发回数量几乎相同的数据。很明显,在很多情况下,尤其当应用程序状态不经常改变时,这种方法效率很低。
此外,浏览器与服务器之间的大量不必要的请求和响应,可能导致浪费计算处理能力和网络传输容量。通常,这样的隐藏通信信道的处理事物还增加了用户与浏览器互动的响应等待时间。通常,同步要求越严格,这样的事物的数量越大,即使当根据服务器的很小变化进行更新时仍会如此。
发明内容
本发明的实施例包括一种方法和设备,用于根据按照接收的更新请求的历史确定的优先权,向客户机发送一个响应,以便使状态与数据源同步。当接收到来自后端系统中的数据源的通知消息时,按照与每个更新请求有关的优先权,从目前等待服务的多个更新请求中选择一个更新请求。通过网络向与选择的更新请求对应的客户机发送一个响应。该响应包括按照数据源中的变化以及对应客户机中的当前应用程序状态的状态更新。
根据附图和后面的详细描述,本发明的其他特性将变得更加清楚。
附图说明
通过例子对本发明进行说明,并且,对附图的数字没有限制,在附图中,相同的标号表示相似的要素。
图1为示出了基于浏览器的应用程序中的,基于计时器的状态同步的例子的时序图。
图2为示出了用于使客户应用程序与后端系统同步的网络系统的一个实施例的框图。
图3为示出了用于使客户机与后端系统同步的处理的一个实施例的流程图。
图4为示出了用于使客户机与后端系统同步的网络循环境的一个实施例的框图。
图5A为示出了客户应用程序接收经过更新的状态数据的过程的一个例子的流程图。
图5B为示出了客户应用程序更新应用程序状态的过程的一个例子的流程图。
图6为示出了用于更新请求的请求令牌的一个实施例的框图。
图7为示出了用于通过网络使客户机与数据源同步的服务器系统的一个实施例的框图。
图8A为示出了用于处理来自客户机的状态同步请求的过程的一个实施例的流程图。
图8B为示出了处理用于客户机的状态变化通知的过程的一个实施例的流程图。
图9A和9B为示出了按照用于使客户机对后端系统中的数据源同步的处理的一个实施例的时序流的时序图。
图10示出了可以与本发明的一个实施例一起使用的计算机系统的一个例子。
具体实施方式
在这里,对用于通过互联网,以异步方式,使客户应用程序的状态与后端系统同步的方法和设备进行描述。在以下描述中,叙述了许多具体细节,以便透彻地说明本发明的实施例。但对本领域的技术人员来说显而易见,可以在没有这些特殊细节的情况下实践本发明的实施例。在另外一些情况下,为了不使对本描述的理解变得模糊,没有详细示出众所周知的组件、结构和技术。
说明书中对“一个实施例”或“实施例”的引用,指的是结合该实施例描述的具体特性、结构或性能可以被包括在本发明的至少一个实施例中。在说明书中不同地方出现的短语“在一个实施例中”,不必都指同一个实施例。
可以由包括硬件(例如电路、专用逻辑电路等)、软件(如在通用计算机系统或专用机器上运行的软件)或者二者的组合的处理逻辑执行在以下附图中示出的处理。尽管以下按照某种顺序操作,对处理进行描述,但应该理解,所描述的某些操作可以按照不同顺序执行。此外,可以并行地而不是顺序地执行某些操作。
图2为示出了用于使客户应用程序与后端系统同步的网络系统的一个实施例的框图。参照图2,按照一个实施例,一个或多个客户机201、203通过网络213,耦合到应用程序服务器215。网络213可以是因特网、局域网或广域网。客户机201可以包括具有渲染引擎207的web浏览器205。web浏览器205可以基于来自Microsoft公司的Internet Explorer、来自Mozzila.org的Mozzila或者来自Opera Software的Opera。web浏览器205可以与呈现容器(presentation container)209异步耦合。呈现容器209可以保持由web浏览器205的渲染引擎207呈现的数据的状态。呈现容器209内的服务网关211可以通过网络213,从应用程序服务器215检索应用程序状态的更新。在一个实施例中,服务网关201将包括保持在呈现容器209中的数据的当前状态的更新请求,发送到应用程序服务器215,以便按照应用程序服务器215内的业务对象221,接收应用程序状态的更新。
在一个实施例中,当接收到来自客户机201的更新请求时,业务对象确定是否有任何更新存在。按照业务对象221确定的,当没有对应的状态更新存在时,应用程序服务器215可以不对来自客户机201的更新请求进行响应。在一个实施例中,由更新请求建立的网络连接保持打开,直到从应用程序服务器215发送了至少一个更新响应为止。在一个实施例中,业务对象221异步耦合到将数据源存储为持续对象(persistent object)219(诸如数据表或数据库中的结构)的后端系统。通过局域网、广域网或者诸如串行总线或互连之类的本地连接,可以建立异步连接。在一个实施例中,当数据源中出现变化时,由后端系统217通知业务对象221。业务对象221可以为接收的更新请求,识别数据源中的相关变化。在一个实施例中,当业务对象221根据从客户机201接收的更新请求识别出数据源中的相关变化时,应用程序服务器215向客户机201发送一个响应。在一个实施例中,当收到后端系统217的通知时,应用程序服务器215对请求做出响应。
图3为示出了用于使客户机与后端系统同步的处理300的一个实施例的流程图。例如,可以由图2和/或图4所示的系统执行处理300。在一个实施例中,处理300包括,但不限于,响应于接收到来自客户机的更新请求,在多个更新请求中确定更新请求的优先权,并且根据与来自数据源的关于数据变化的通知消息对应的优先权,将一响应发送到与选择的更新请求对应的客户机。在一个实施例中,在框301,从客户机接收更新请求。更新请求可以包括关于客户机的当前应用程序状态的信息,如来自打印盘(printing spool)的打印作业的完成信息或者当前应用程序需要的某些资源的可用性信息。在一个实施例中,在框303,在多个等待服务的更新请求中,处理逻辑确定接收的更新请求的优先权。可以在多个更新请求当中,保持优先权关系。在一个实施例中,可以从同一个客户机接收不止一个更新请求。按照一个实施例,在框305,响应于来自后端系统的通知消息,按照来自已经接收的多个更新请求当中的优先权,选择更新请求。后端系统可以包括关于客户机的应用程序状态的数据源。数据源中的变化可以导致从后端系统发出通知消息。在一个实施例中,在框307,按照选择的更新请求,将响应发送到客户机。响应可以包括按照后端系统中的数据源中的变化,对应用程序状态以及对应客户机中的当前应用程序状态的更新。
图4为示出了用于使客户机与后端系统同步的网络循环境的一个实施例的框图。在一个实施例中,系统400包括通信模块、优先权模块和更新模块,但不限于此。通信模块可以接收来自客户机的更新请求。通信模块可以接收来自数据源的、关于数据变化的通知消息。通信模块可以向客户机发送响应。优先权模块可以在多个更新请求当中,确定更新请求优先权。响应于与根据优先权从多个更新请求中选择的更新请求对应的通知消息,更新模块可以生成包括数据变化的响应。在一个实施例中,客户机401发送更新请求,以便与后端系统411中的数据源同步。响应于与数据源同步的更新请求,更新响应可以被发送到客户机401,以便更新客户机401中的当前应用程序状态。当接收到更新响应时,客户机401可以发出另一个更新请求。
在一个实施例中,应用程序服务器403中的通信模块405接收更新请求。更新请求可以包括关于客户机401的当前应用程序状态的信息。在一个实施例中,通信模块将更新请求发送到优先权处理器模块407,以便在当前等待在应用程序服务器403中被服务的多个请求当中,确定该请求的优先权。在一个实施例中,通过局域网、广域网或者诸如串行总线或互连之类的本地连接,应用程序服务器403利用通信耦合到后端系统411。在一个实施例中,在不阻碍应用程序服务器运行的情况下,应用程序服务器403监听来自后端系统411的通知消息。例如,接收通知消息可以被实现为单独的线程(separatethread)。因此,相对于应用程序服务器403的运行,从后端系统411接收通知消息可以异步进行。在一个实施例中,应用程序服务器403按照接收的更新请求,向后端系统411发送请求消息。在另一个实施例中,在没有接收到来自任何客户机的任何更新请求的情况下,应用程序服务器403向后端系统411发送消息,以便注册通知消息。
在一个实施例中,当与后端系统411有关的数据源出现变化时,后端系统411发送由通信模块405接收的通知消息。在一个实施例中,通信模块405从后端系统411中,为更新模块409检索数据变化,以便按照更新请求的优先权选择更新请求(例如,通过第一线程)。在一个实施例中,通信模块按照更新模块409的选择,向客户机401发送更新响应(例如,通过第二线程)。可以由更新模块409根据来自后端系统411的单个通知消息,选择多个更新请求。在一个实施例中,通信模块405为每个选择的更新请求,发出一个更新响应。注意,可以用软件、硬件或者二者的组合,实现图4中的部分或所有组件。
图5A和5B为示出了客户应用程序接收经过更新的状态数据并且更新对应的应用程序状态的示例处理的流程图。客户应用程序可以是RIA应用程序。参照图5A,在框501,客户处理逻辑可以给更新请求指定一个回调对象(callback object)。更新请求可以是状态同步请求。可以使回调对象与对处理器(handler)的索引(reference)联系起来,以便完成对应用程序状态的更新,如刷新用户界面。在框503,处理逻辑还可以生成请求令牌。请求令牌可以是包括在更新请求中的数据结构。请求令牌中的数据结构可以包括对在框501指定的回调对象的索引。在框505,处理逻辑发送包括生成的请求令牌的状态更新请求。随后,在框507,在不阻碍客户应用程序运行的情况下,处理逻辑可以等待对更新状态数据的响应。在处理逻辑在框509接收到用生成的请求令牌更新应用程序状态的响应之后,在框511,处理逻辑可以检查当前应用程序状态是否已经被中断。当用户从一个业务流程图切换到新的业务流程图时,可以使与旧的业务流程图对应的应用程序状态中断。如果对应的应用程序状态已经被中断,则处理逻辑可以完成。另外,在框513,处理逻辑可以激活在请求令牌中被引用的处理器,以进行更新操作,其中,请求令牌包括在接收的响应中。处理逻辑可以调用图5B中的更新处理514,以便以异步方式进行更新操作。更新处理514可以在框515更新上下文数据,并且在框517,按照更新的上下文数据,刷新用户界面。
图6为示出了用于更新请求的请求令牌的一个实施例的框图。在一个实施例中,请求令牌601为包括请求参数603、回调对象索引605和客户机/对话标识符607的数据结构。在一个实施例中,回调对象索引605指向由生成令牌601的客户机指定的回调对象609。客户机可以与多个回调对象有关。在接收到更新响应之后,请求客户机可以用回调对象索引605对所指的回调对象609进行定位。可以使请求参数603与对应的更新请求有关,如在接收到更新响应之后,当请求客户机通过回调对象索引605激活回调对象609时的一组要求的输入值。在一个实施例中,客户机/对话标识符607为接收服务器识别请求客户机,以便在多个更新请求当中保持优先权。在另一个实施例中,客户机/对话标识符607包括在请求客户机与接收服务器之间建立的连接对话。
图7为示出了用于通过网络,使客户机与数据源同步的服务器系统的一个实施例的框图。在一个实施例中,web客户机701通过网络203,利用通信耦合到应用程序服务器705。web客户机701可以向应用程序服务器705发送状态更新请求,用于使web客户机701中的应用程序状态与后端系统721中的数据源723同步。在一个实施例中,应用程序服务器705中的请求处理器模块707接收状态更新请求。请求处理器模块707可以从包括请求令牌和对应的客户应用程序状态的更新请求中提取请求信息。请求处理器模块707可以将请求记录在请求记录数据库711中,请求记录数据库711可以是本地连接或远程连接的单个数据库或多个数据库。数据库711中的请求记录可以包括何时接收到请求以及请求客户机的标识,如IP地址。在一个实施例中,优先权处理器模块713保持在优先权队列715中所接收的、待定被应用程序服务器705服务的更新请求当中的优先权。在一个实施例中,优先权队列715包括与更新请求有关的更新令牌。优先权处理器模块713可以确定相对于优先权队列中715中的其他更新请求的在请求处理器模块707接收的更新请求的优先权。在一个实施例中,优先权处理器模块713根据从请求记录数据库711检索的信息,做出优先权判定。
在一个实施例中,通知消息处理器模块719定期或连续监听来自利用通信耦合到应用程序服务器705的后端系统721的消息。在一个实施例中,后端系统721包括数据源723。数据源723可以是用于持续管理业务对象的数据库。后端系统721和应用程序服务器705可以被合并在单个系统中。在一个实施例中,一旦数据源723的更新可用,则通知消息处理器模块719接收来自后端系统721的更新消息,以通报更新。更新消息可以起源于数据源723。
在一个实施例中,通知消息处理器模块719在接收到更新消息之后,从数据源723中检索经过更新的数据。在一个实施例中,状态更新模块717按照关于有关的应用程序状态的信息,使队列715中的待定更新请求与经过更新的数据匹配。状态更新模块717可以根据优先权队列715,选择具有最高优先权的、经过匹配的更新请求。状态更新模块717可以从优先权队列中去除对应于已经选择的更新请求的条目。在一个实施例中,状态更新模块717将选择记录在请求记录711中。在一个实施例中,响应处理器模块709根据更新的数据,构成用于选择的更新请求的响应。在一个实施例中,请求处理器模块707将构成的响应发回与选择的、包括请求令牌的更新请求有关的请求客户机。注意,图7中示出的部分或所有组件可以用硬件、软件或二者的组合实现。
图8A为示出了用于依照图7的系统,处理来自客户机的状态同步请求的过程的一个实施例的流程图。在一个实施例中,在框801,处理逻辑接收来自客户机的状态更新请求。更新请求可以包括关于客户机的当前应用程序状态的信息。例如,股票代号(stock symbol)和最新报价的日期/时间可以包括在股票监控应用程序的应用程序状态中。在一个实施例中,更新请求携带具有图6所示的结构的请求令牌。更新请求可以是具有请求体(request body)内的请求令牌的HTTP请求。按照一个实施例,在框803,处理逻辑对更新请求进行解码,以便提取应用程序状态信息、请求令牌以及嵌入的令牌数据。令牌数据可以包括图6所示的对话id。在框803,处理逻辑可以将接收的请求记录在请求记录数据库中。
在一个实施例中,在框805,处理逻辑确定更新请求的对话id是否是新的。处理逻辑可以将对话id与存储在请求数据库中的一组现有对话id进行比较。在一个实施例中,处理逻辑使新接收的对话id与存储在优先权队列中的对话id匹配。按照一个实施例,如果发现存在具有相同对话id的更新请求,则处理逻辑根据请求记录数据库,对请求客户机的请求历史进行分析。处理逻辑可以从请求客户机获得一段时间中提出更新请求的频率。在一个实施例中,处理逻辑在请求客户机与具有等待服务的更新请求的其他客户机之间,对获得的频率进行比较。在另一个实施例中,处理逻辑在不同对话id的更新请求之间,对获得的频率进行比较。在一个实施例中,两个以上的对话id可以与来自同一个等待服务的请求客户机的更新请求联系起来。如果请求客户机的获得的频率大于预定频率值,则处理逻辑可以确定新接收的更新请求是频繁的。可以预先将样本频率值确定为基准,后面将以启发式的方式,对这个基准进行仔细调整。在另一个实施例中,处理逻辑根据从同一个请求客户机接收的早期的更新请求的平均时间间隔,确定新接收的更新请求是频繁的。如果来自同一个请求对话id的早期更新请求的平均时间间隔小于预定时间间隔值,则处理逻辑可以确定新接收的更新请求是频繁的。根据频率值的倒数,获得样本时间间隔值。
在一个实施例中,在框811,处理逻辑为从等待服务的一个或多个客户机接收的一组更新请求更新优先权队列。处理逻辑可以根据与优先权队列的每个更新请求有关的获得历史更新优先权队列。在另一个实施例中,处理逻辑可以根据自同一个对话id的最后的更新请求开始的时间间隔更新优先权队列。按照一个实施例,在框809,如果处理逻辑确定新接收的更新请求不是频繁的,则处理逻辑将新条目加入优先权队列,从而包括新接收的更新请求。在框809,处理逻辑可以给新加入优先权队列的条目指定最低优先权。
图8B为示出了用于处理用于客户机的状态变化通知的过程的一个实施例的流程图。在一个实施例中,在框813,处理逻辑监听来自数据源的状态变化通知消息。数据源可以是本地数据库或远程数据库。存储在数据源中的数据可以是与客户机的应用程序状态有关的业务对象。存储在数据源中的数据的更新,可以与客户机中的应用程序状态的变化对应。存储在数据源中的数据的变化,可以触发状态变化通知消息。在一个实施例中,在框815,处理逻辑接收状态变化通知。处理逻辑可以按照通知消息,从数据源中检索数据变化。在一个实施例中,在框817,处理逻辑选择更新请求,以进行服务。可以按照优先权队列,选择待定被服务的更新请求。
在一个实施例中,处理逻辑根据与更新请求有关的状态信息,识别出与来自数据源的数据变化相关的更新请求。数据源中的经过更新的数据可以包括与更新请求的状态信息匹配的状态标识符。在一个实施例中,处理逻辑从通知消息中获得关于已经更新的状态的信息。在一个实施例中,处理逻辑按照优先权队列,选择应用程序状态与数据源中的经过更新的数据匹配的每个更新请求。按照一个实施例,在框819,处理逻辑按照数据源中的数据变化,构成更新响应中的经过更新的状态数据。按照特定要求和情况,经过更新的状态数据可以包含最近的总体状态或者状态增量。在一个实施例中,处理逻辑为选择的更新请求更新时间标记。时间标记可以包括请求令牌中的令牌时间标记。处理逻辑可以更新请求记录中的时间标记。按照一个实施例,在框823,处理逻辑将更新的状态数据与原始请求令牌一起发送到与选择的更新请求有关的客户机。可以在HTTP响应中发送更新的状态数据。按照一个实施例,在框825,如果过程802没有中断,则处理逻辑返回到框813,继续不断或定期监听通知消息。例如,可以由来自人的关机消息,使过程802中断。
图9A和9B为示出了按照用于使客户机与后端系统中的数据源同步的处理的一个实施例的时序流的时序图。从图9A开始,在时间段911期间,图9A中的用户901通过基于浏览器的异步RIA用户界面903,发出同步请求。随后,在时间段913期间,可以对事件广播器905引发事件。在时间段915期间,在接收到事件之后,事件广播器905可以得到整体控制器907在时间段917期间执行的命令。整体控制器907可以在时间段917期间执行该命令,从而进入循环909,循环909用于在不阻碍用户界面运行的情况下,使用户界面903与数据源同步。当数据源中出现更新时,整体控制器907可以在时间段919期间异步接收通知用户界面903的上下文更新消息,以便在时间段921期间进行用户界面更新。
转到图9B,整体控制器907可以在时间段941期间引起业务命令925,从而初始化回调对象935。在时间段945期间,回调对象935可以收集上下文信息并构成它本身。在时间段943期间,可以由业务命令使构成的回调对象935的索引返回,并对其进行指定,从而生成请求令牌。同样在时间段943期间,业务命令925可以向远程对象927发送具有请求令牌的状态更新请求,用于在不阻碍用户界面运行的情况下,与数据源931同步。可以用业务命令925,将远程对象927保持在通过网络连接的应用程序服务器中。远程对象927可以位于与主持远程对象927的应用程序服务器分开的后端系统中。在一个实施例中,在时间段947期间,远程对象927对从业务命令925接收的更新请求中的请求令牌进行解码。在时间段947期间,远程对象927可以搜索请求记录,以便确定是否已经存在以前接收的用于相同应用程序状态的更新请求。在时间段947期间,远程对象927还可以按照请求记录,对接收的更新请求是否为频繁请求进行分析。在一个实施例中,如果接收的更新请求被确定为频繁更新请求,则在时间段949期间,远程对象927调用优先权队列对象929,以便在待定被服务的更新请求当中,按优先次序排队。
在一个实施例中,在时间段955期间,数据源931中发生数据变化。数据源955可以将变化通知远程对象927,以便远程对象927在时间段951期间,检索更新的数据。在一个实施例中,在时间段953期间,远程对象927选择具有与检索的更新的数据相关的应用程序状态的更新请求。远程对象927可以调用优先权队列对象929,以便在时间段965期间,按照对更新请求的选择以及数据源中的数据变化更新队列。在一个实施例中,在时间段967期间,远程对象927更新请求记录中的时间标记。远程对象927可以在更新响应中,更新请求令牌中的时间标记和/或与要返回到业务命令925的应用程序状态相关的最新信息。在一个实施例中,响应于在时间段943期间发送的更新请求,在时间段957期间,业务命令925接收包括应用程序状态方面的更新的更新响应。在时间段957期间,业务命令925可以从接收的响应中,对所包含的的请求令牌进行解码。
在一个实施例中,在时间段957期间,业务命令925按照回调索引以及从请求令牌中提取的一组参数,调用回调功能。回调索引可以指回调对象935。在一个实施例中,业务命令调用回调对象935,以便在时间段961期间,激活上下文更新。在一个实施例中,整体控制器907接收来自回调对象935的上下文更新,以便在时间段919期间,异步通知图9A的用户界面903,从而在图9A中的时间段921期间,进行用户界面更新。按照一个实施例,在激活上下文更新之后,在时间段963期间,回调对象935可以执行一个命令并且激活业务命令925,从而再次对回调对象935进行初始化,用于发送新的更新请求,至此,完成循环909。
图10示出了可以与本发明的一个实施例一起使用的计算机系统1001的一个例子。例如,系统1001可以被实现为上述的图2、3或7所示的服务器和/或客户机的一部分。注意,尽管图10示出了计算机系统的各种部件,但不是要代表使部件相互连接的任何具体结构或方式,这是由于这些细节与本发明关系不大。还应该理解,也可以将部件较少的网络计算机和其他数据处理系统或者部件较多的外部设备与本发明一起使用。
如图10所示,作为一种类型的数据处理系统的计算机系统1001包括被耦合到一个或多个微处理器1005、ROM(只读存储器)1007、易失性RAM 1009和非易失性存储器1011的总线1003。微处理器1005可以从存储器1007、1009、1011中检索指令并执行指令,从而进行上述操作。总线1003将各种这样的部件相互连接在一起,并且,还将这些部件1005、1007、1009和1011相互连接到显示控制器和显示装置1013以及外部装置,如输入/输出(I/O)装置,输入/输出装置可以是鼠标、键盘、调制解调器、网络接口、打印机以及本领域众所周知的其他设备。通常,输入/输出装置1015通过输入/输出控制器1017耦合到系统。易失性RAM(随机存取存储器)1009一般被实现为需要连续供电,以便对存储器中的数据进行刷新或保持的动态RAM(DRAM)。
大容量存储器1011一般是磁性硬盘驱动器、磁光盘驱动器、光盘驱动器、DVD RAM或者即使在脱离电源之后仍然保持数据(例如,大量数据)的其他类型的存储器系统。通常,尽管不需要,大容量存储器1011也可以是随机存取存储器。尽管图10示出了,大容量存储器1011为被直接耦合到数据处理系统中的其余部件的本地器件,但应该理解,本发明可以使用远离系统的非易失性存储器,如通过诸如调制解调器和以太网接口之类的网络接口耦合到数据处理系统的网络存储装置。如本领域众所周知的,总线1003可以包括通过各种桥、控制器和/或适配器相互连接的一条或多条总线。
根据对计算机存储器内的数据位进行运算的算法和符号表示,给出了前面的详细描述。这些算法描述以及表示是数据处理领域的技术人员使用的工具,用于最有效地将他们工作的内容转达给本领域的其他技术人员。在这里算法通常被理解为导致希望的结果的、一序列有条理的运算。运算指的是需要对物理量进行物理处理。虽然不是必须的,但是通常这些量采用能够被存储、传输、组合、比较和以别的方式处理的电或磁信号的形式。有时已经证明,在原理上,出于共同使用的原因,将这些信号引用为位、值、元素、符号、字符、术语或数等。
但应该记住,所有这些或相似的术语与适当的物理量相关,并且仅是应用于这些量的方便的标记。应该理解,如根据以上讨论显而易见的,除非特别说明,在描述中自始至终,利用术语如“处理”或“计算”或“确定”或“显示”等进行的讨论指的是计算机系统或相似的电子计算装置的动作和处理,计算机系统或相似的电子计算装置,对表示为计算机系统的寄存器和存储器内的物理(电子)量的数据进行处理,并将这些数据转换为被相似地表示为计算机系统的存储器或寄存器或者其他这样的信息存储、传输或显示装置内的物理量的其他数据。
此外,可以由一个设备执行上述的操作。该设备可以按照要求的目的特殊构成,或者,它可以包括由存储在计算机中的计算机程序有选择地启动或重新配置的通用计算机。这样的计算机程序可以被存储在计算机可读存储介质中,如包括软盘、光盘、CD-ROM以及磁光盘等的任何类型的盘,只读存储器(ROM)、RAM、EPROM、EEPROM、磁卡或光卡,或者适合于存储电子指令的任何类型的介质,但不限于此,并且,每一个都被耦合到计算机系统总线。
可以用逻辑电路,如专用逻辑电路或者用执行程序代码指令的微控制器或其他形式的处理核心,实现以上描述的部分。可以用程序代码,如机器可执行指令,执行通过以上讨论讲解的这些处理,其中,机器可执行指令使机器执行这些指令,以完成某些功能。在这个上下文中,“机器”可以是将中间形式(或“抽象”)指令转换为处理器专用指令(例如,抽象执行循环境如“虚拟机”(例如,Java Virtual Machine(Java虚拟机))、翻译机、通用语言运行循环境(Common Language Runtime)、高级语言虚拟机等),和/或布置在半导体芯片上的,被设计为执行指令的电子电路(例如,用晶体管实现的“逻辑电路”),如通用处理器和/或专用处理器。还可以在不执行程序代码的情况下,由被设计为完成处理(或部分处理)的(替换机器或与机器结合的)电子电路完成通过以上讨论讲解的处理。
相信,可以按照由各种软件开发框架(例如,微软公司的.NET,Mono,Java,Oracle公司的Fusion等)支持的各种面向对象的或非面向对象的计算机编程语言(例如,Java,C#,VB,Python,C,C++,J#,APL,Cobol,ABAP,Fortran,Pascal,Perl等),以源码级程序代码,描述通过以上讨论讲解的处理。源码级程序代码可以被转换为中间形式的、抽象执行循环境(例如,Java VirtualMachine,Common Language Runtime,高级语言虚拟机、翻译机等)可理解的程序代码(如Java字节代码,Microsoft Intermediate Language等),或者,转换为以专门用处理器为目标的形式更特殊的程序代码。
制造产品可以被用于存储程序代码。存储程序代码的制造产品可以被体现为一个或多个存储器(例如,一个或多个闪存存储器、随机存取存储器(静态、动态或其他))、光盘、CD-ROM、DVD ROM、EPROM、EEPROM、磁卡或光卡、或者适合于存储电子指令的其他类型的机器可读介质,但不限于此。也可以通过体现在传播介质(例如,通过通信链接(例如,网络连接))中的数据信号,将程序代码从远程计算机(例如服务器)下载到请求计算机(例如客户机)。
这里所提供的处理和显示不是固有地与任何具体计算机或其他设备有关。按照这里的思路,可以将各种通用系统与程序一起使用,或者,可以证明,便于构成更专用的设备,以进行所描述的操作。根据以下描述,各种这样的系统需要的结构将显而易见。此外,不是参照任何具体编程语言对本发明进行描述的。应该理解,如这里所描述的,各种编程语言都可以用于实现本发明的思路。
以上讨论仅对本发明的某些典型实施例进行了描述。根据这样的讨论、附图以及权利要求,本领域技术人员不难理解,可以在不脱离本发明的精神和范围的情况下进行各种修改。

Claims (9)

1.一种用于应用程序状态同步的方法,包括:
响应于通过网络连接从客户机接收的更新请求而在多个更新请求当中确定所述更新请求的优先权,所述确定优先权包括:
确定所述更新请求是否是频繁的,包括获得在一段时间内从客户机接收的更新请求的频率值,将所获得的频率值与预定频率值进行比较,并且如果所获得的频率值大于预定频率值则确定所述更新请求是频繁的;
将更高的优先权分配给被确定为频繁的更新请求;以及
响应于来自数据源的关于数据变化的通知消息而向与根据优先权从所述多个更新请求中选择的更新请求对应的所述客户机发送一个响应。
2.一种用于应用程序状态同步的方法,包括:
响应于通过网络连接从客户机接收的更新请求而在多个更新请求当中确定所述更新请求的优先权,所述确定优先权包括:
确定所述更新请求是否是频繁的,包括获得从客户机接收的更新请求的时间间隔,其中所述时间间隔为通过网络来自客户机的所述更新请求与上一次更新请求之间经过的时间,将所获得的时间间隔与预定时间间隔值进行比较,并且如果所获得的时间间隔小于预定时间间隔值则确定所述更新请求是频繁的;
将更高的优先权分配给被确定为频繁的更新请求;以及
响应于来自数据源的关于数据变化的通知消息而向与根据优先权从所述多个更新请求中选择的更新请求对应的所述客户机发送一个响应。
3.如权利要求1或2所述的方法,其中,所述数据源在企业资源规划ERP系统中。
4.如权利要求1或2所述的方法,其中web客户机具有回调对象,并且,其中,所述响应包括对所述回调对象的索引。
5.如权利要求4所述的方法,还包括对所述更新请求进行解码,以检索对所述回调对象的索引。
6.如权利要求4所述的方法,还包括在发送所述响应之后,通过连接接收来自所述客户机的第二更新请求,所述第二更新请求包括对所述回调对象的索引。
7.如权利要求5所述的方法,其中,所述连接为基于HTTP的连接。
8.一种用于应用程序状态同步的设备,包括:
用于响应于通过网络连接从客户机接收的更新请求而在多个更新请求当中确定所述更新请求的优先权的装置,所述确定优先权包括:确定所述更新请求是否是频繁的,包括获得在一段时间内从客户机接收的更新请求的频率值,将所获得的频率值与预定频率值进行比较,并且如果所获得的频率值大于预定频率值则确定所述更新请求是频繁的,以及将更高的优先权分配给被确定为频繁的更新请求;以及
用于响应于来自数据源的关于数据变化的通知消息而向与根据优先权从所述多个更新请求中选择的更新请求对应的所述客户机发送一个响应的装置。
9.一种用于应用程序状态同步的设备,包括:
用于响应于通过网络连接从客户机接收的更新请求而在多个更新请求当中确定所述更新请求的优先权的装置,所述确定优先权包括:确定所述更新请求是否是频繁的,包括获得从客户机接收的更新请求的时间间隔,其中所述时间间隔为通过网络来自客户机的所述更新请求与上一次更新请求之间经过的时间,将所获得的时间间隔与预定时间间隔值进行比较,并且如果所获得的时间间隔小于预定时间间隔值则确定所述更新请求是频繁的,以及将更高的优先权分配给被确定为频繁的更新请求;以及
用于响应于来自数据源的关于数据变化的通知消息而向与根据优先权从所述多个更新请求中选择的更新请求对应的所述客户机发送一个响应的装置。
CN200710197019.XA 2006-12-04 2007-12-04 用于应用程序状态同步的方法和设备 Active CN101196912B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/633,760 2006-12-04
US11/633,760 US7774356B2 (en) 2006-12-04 2006-12-04 Method and apparatus for application state synchronization

Publications (2)

Publication Number Publication Date
CN101196912A CN101196912A (zh) 2008-06-11
CN101196912B true CN101196912B (zh) 2015-02-11

Family

ID=39477400

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200710197019.XA Active CN101196912B (zh) 2006-12-04 2007-12-04 用于应用程序状态同步的方法和设备

Country Status (2)

Country Link
US (1) US7774356B2 (zh)
CN (1) CN101196912B (zh)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8190561B1 (en) * 2006-12-06 2012-05-29 At&T Mobility Ii Llc LDAP replication priority queuing mechanism
US8914786B2 (en) * 2007-03-23 2014-12-16 Zumobi, Inc. Systems and methods for controlling application updates across a wireless interface
US8407183B2 (en) * 2007-12-21 2013-03-26 Sap Ag Business intelligence data extraction on demand
US7996360B2 (en) * 2008-06-27 2011-08-09 International Business Machines Corporation Coordinating updates to replicated data
CN101626632B (zh) * 2008-07-11 2014-07-23 深圳富泰宏精密工业有限公司 多媒体移动终端的会期排程装置及方法
WO2010060206A1 (en) 2008-11-26 2010-06-03 Calgary Scientific Inc. Method and system for providing remote access to a state of an application program
US8473571B2 (en) * 2009-01-08 2013-06-25 Microsoft Corporation Synchronizing presentation states between multiple applications
US20100179980A1 (en) * 2009-01-14 2010-07-15 Movidilo S.L. Cache system for mobile communications devices
US10055105B2 (en) 2009-02-03 2018-08-21 Calgary Scientific Inc. Method and system for enabling interaction with a plurality of applications using a single user interface
CN101576920B (zh) * 2009-06-19 2012-11-28 用友软件股份有限公司 搜索引擎系统
US9977819B2 (en) * 2010-08-09 2018-05-22 Ianywhere Solutions, Inc. Sharing data on mobile devices
US9118505B2 (en) * 2010-11-05 2015-08-25 Blackberry Limited System and method for controlling updates on a mobile device
US8983907B2 (en) * 2010-12-08 2015-03-17 Microsoft Technology Licensing, Llc Change notifications from an updated data representation
US8666997B2 (en) 2010-12-08 2014-03-04 Microsoft Corporation Placeholders returned for data representation items
US9741084B2 (en) 2011-01-04 2017-08-22 Calgary Scientific Inc. Method and system for providing remote access to data for display on a mobile device
US9069829B2 (en) * 2011-01-21 2015-06-30 Microsoft Technology Licensing, Llc Data items manager
CA2734860A1 (en) 2011-03-21 2012-09-21 Calgary Scientific Inc. Method and system for providing a state model of an application program
US8838533B2 (en) 2011-05-20 2014-09-16 Microsoft Corporation Optimistic application of data edits
EP2745467A4 (en) 2011-08-15 2015-10-14 Calgary Scient Inc METHOD FOR FLOW CONTROL AND RELIABLE COMMUNICATION IN A COMMUNITY ENVIRONMENT
SG2014011506A (en) 2011-08-15 2014-05-29 Calgary Scient Inc Non-invasive remote access to an application program
US20130046732A1 (en) * 2011-08-17 2013-02-21 Hsin-Ti Chueh Data synchronization management methods and systems
CN103959708B (zh) 2011-09-30 2017-10-17 卡尔加里科学公司 包括用于协作远程应用共享和注释的交互式数字表层的非耦合应用扩展
AU2012342170B2 (en) 2011-11-23 2017-03-09 Calgary Scientific Inc. Methods and systems for collaborative remote application sharing and conferencing
US9274780B1 (en) * 2011-12-21 2016-03-01 Amazon Technologies, Inc. Distribution of applications with a saved state
US8332349B1 (en) * 2012-01-06 2012-12-11 Advent Software, Inc. Asynchronous acid event-driven data processing using audit trail tools for transaction systems
US20130212227A1 (en) * 2012-02-09 2013-08-15 Cogent Real-Time Systems Inc. System and method for streaming data via http
US9602581B2 (en) 2012-03-02 2017-03-21 Calgary Scientific Inc. Remote control of an application using dynamic-linked library (DLL) injection
US9729673B2 (en) 2012-06-21 2017-08-08 Calgary Scientific Inc. Method and system for providing synchronized views of multiple applications for display on a remote computing device
US9317616B1 (en) * 2012-06-21 2016-04-19 Amazon Technologies, Inc. Dynamic web updates based on state
US9692676B2 (en) * 2012-06-28 2017-06-27 International Business Machines Corporation Scalable off-load of applications from switch to server
US9684886B2 (en) 2012-08-10 2017-06-20 Sap Se Cross-domain business mashup integration
GB2505179A (en) * 2012-08-20 2014-02-26 Ibm Managing a data cache for a computer system
US9083690B2 (en) * 2013-01-30 2015-07-14 Oracle International Corporation Communication session termination rankings and protocols
US9372818B2 (en) * 2013-03-15 2016-06-21 Atmel Corporation Proactive quality of service in multi-matrix system bus
US8886671B1 (en) 2013-08-14 2014-11-11 Advent Software, Inc. Multi-tenant in-memory database (MUTED) system and method
JP2017505473A (ja) 2013-11-29 2017-02-16 カルガリー サイエンティフィック インコーポレイテッド クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の提供方法
US9471524B2 (en) 2013-12-09 2016-10-18 Atmel Corporation System bus transaction queue reallocation
US10802681B2 (en) 2014-01-27 2020-10-13 Microsoft Technology Licensing, Llc Actionable notifications
US10540063B2 (en) 2014-01-27 2020-01-21 Microsoft Technology Licensing, Llc Processing actionable notifications
CN111698669A (zh) * 2014-04-15 2020-09-22 华为技术有限公司 共享应用信息方法和装置
US20160092537A1 (en) * 2014-09-30 2016-03-31 Alcatel-Lucent Canada, Inc Polling based synchronization in managed networks
US9992258B2 (en) * 2015-01-13 2018-06-05 Whatsapp Inc. Techniques for managing a remote web client from an application on a mobile device
US10015264B2 (en) 2015-01-30 2018-07-03 Calgary Scientific Inc. Generalized proxy architecture to provide remote access to an application framework
CA2974204A1 (en) 2015-01-30 2016-08-04 Calgary Scientific Inc. Method of providing access to a service in a client-server remote access system
US10505946B2 (en) * 2016-11-15 2019-12-10 Vmware, Inc. Adaptive token cache management
US10489381B2 (en) * 2017-04-13 2019-11-26 Sap Se Adaptive metadata refreshing
US10922307B2 (en) 2017-12-11 2021-02-16 NextWorld, LLC Automated transaction engine
TWI678087B (zh) * 2018-11-22 2019-11-21 財團法人工業技術研究院 訊息佇列發佈與訂閱之同步方法及其系統
CN110333888B (zh) * 2019-07-10 2023-10-13 广州酷狗计算机科技有限公司 功能更新方法、装置、设备及存储介质
CN113504927A (zh) * 2021-07-26 2021-10-15 平安普惠企业管理有限公司 用户信息更新的方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1188385A (zh) * 1996-12-26 1998-07-22 日本电气株式会社 在个人通信系统中的移动管理系统
US6581075B1 (en) * 2000-12-28 2003-06-17 Nortel Networks Limited System and method for database synchronization
US7003110B1 (en) * 2000-11-14 2006-02-21 Lucent Technologies Inc. Software aging method and apparatus for discouraging software piracy

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5168570A (en) * 1989-12-29 1992-12-01 Supercomputer Systems Limited Partnership Method and apparatus for a multiple request toggling priority system
US5710933A (en) * 1995-03-31 1998-01-20 International Business Machines Corporation System resource enable apparatus
US6292835B1 (en) * 1997-11-26 2001-09-18 International Business Machines Corporation Network bandwidth and object obsolescence sensitive scheduling method and apparatus for objects distributed broadcasting
US6182197B1 (en) * 1998-07-10 2001-01-30 International Business Machines Corporation Real-time shared disk system for computer clusters
US6763379B1 (en) * 1999-10-14 2004-07-13 Ideaflood, Inc. System, apparatus and method for presenting and displaying content on a wide area network
US6876994B2 (en) * 2000-05-30 2005-04-05 Matsushita Electric Industrial Co., Ltd. Data acquisition apparatus and method
US20030097345A1 (en) * 2001-10-18 2003-05-22 Mitch Upton System and method for invoking business functionality for a workflow
US7606881B2 (en) * 2002-04-25 2009-10-20 Oracle International Corporation System and method for synchronization of version annotated objects
JP4128516B2 (ja) * 2002-11-18 2008-07-30 株式会社リコー 画像形成装置、プログラム更新方法
US20040098378A1 (en) * 2002-11-19 2004-05-20 Gur Kimchi Distributed client server index update system and method
US20070219816A1 (en) * 2005-10-14 2007-09-20 Leviathan Entertainment, Llc System and Method of Prioritizing Items in a Queue
US7512631B2 (en) * 2006-03-23 2009-03-31 International Business Machines Corporation Method for identifying database triggers
US7506090B2 (en) * 2006-06-14 2009-03-17 Honeywell International Inc. System and method for user-configurable resource arbitration in a process control system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1188385A (zh) * 1996-12-26 1998-07-22 日本电气株式会社 在个人通信系统中的移动管理系统
US7003110B1 (en) * 2000-11-14 2006-02-21 Lucent Technologies Inc. Software aging method and apparatus for discouraging software piracy
US6581075B1 (en) * 2000-12-28 2003-06-17 Nortel Networks Limited System and method for database synchronization

Also Published As

Publication number Publication date
US20080134211A1 (en) 2008-06-05
US7774356B2 (en) 2010-08-10
CN101196912A (zh) 2008-06-11

Similar Documents

Publication Publication Date Title
CN101196912B (zh) 用于应用程序状态同步的方法和设备
US9288156B2 (en) Method and apparatus for supporting scalable multi-modal dialog application sessions
US20100235509A1 (en) Method, Equipment and System for Resource Acquisition
CN106059825A (zh) 一种分布式系统及配置方法
CN109388626B (zh) 用于向业务分配编号的方法和装置
CN106557369A (zh) 一种多线程的管理方法及系统
CN111464615A (zh) 请求处理方法、装置、服务器及存储介质
CN102668456A (zh) 用于调整会话超时周期的方法及系统
CN102981911A (zh) 一种分布式消息处理系统及其中的设备和方法
CN104793982A (zh) 一种创建虚拟机的方法和设备
CN110740155A (zh) 分布式系统中的请求处理方法及装置
CN111800511B (zh) 同步登录态的处理方法、系统、设备及可读存储介质
CN113377817A (zh) 数据处理方法、系统、设备及存储介质
CN113274736B (zh) 云游戏资源调度方法、装置、设备及存储介质
US11366864B2 (en) Bot integration in a web-based search engine
CN111835809A (zh) 工单消息分配方法、装置、服务器及存储介质
US20090106781A1 (en) Remote call handling methods and systems
CN103092942A (zh) 查询信息获取及展示的客户端、方法及系统
CN108683612B (zh) 一种消息获取方法和装置
CN109547563B (zh) 消息推送处理方法、装置、存储介质及服务器
CN113297516A (zh) 客户交互界面生成方法、装置和电子设备
CN107528878B (zh) 数据处理系统、数据处理控制装置及方法
CN112860960B (zh) 数据查询方法及装置
CN111324374A (zh) 基于应用性能管理系统的应用程序的注册方法和装置
CN110401721B (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
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: German Waldo

Applicant after: SAP AG

Address before: German Waldo

Applicant before: SAP AG

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: SAP AG TO: SAP EUROPE AG

C14 Grant of patent or utility model
GR01 Patent grant