CN102200932B - 预测性和持久性事件流 - Google Patents
预测性和持久性事件流 Download PDFInfo
- Publication number
- CN102200932B CN102200932B CN201110081368.1A CN201110081368A CN102200932B CN 102200932 B CN102200932 B CN 102200932B CN 201110081368 A CN201110081368 A CN 201110081368A CN 102200932 B CN102200932 B CN 102200932B
- Authority
- CN
- China
- Prior art keywords
- event
- stream
- predicted events
- prediction
- flow
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本文中描述了预测性和持久性事件流。一种事件驱动的应用可以预测未来事件并从预测事件产生事件流。所产生的事件流可以作为预测操作来执行,直到预测被确认为正确或错误。预测的操作可以生成在预测被确认时可被呈现的结果。在某些情况下,可以在预测事件之前使用这些结果,而在其它情况下,可以高速缓存这些结果直到预测被确认。在某些情况下,当预测事件发生时,预测操作可以与实际事件流融合。在某些设备中,预测机制可以增强性能、实现原本可能困难的操作并且节约电池寿命或能量。
Description
技术领域
本发明涉及对事件流的管理,尤其涉及预测性和持久性事件流。
背景技术
事件流在许多计算机应用中是普遍的。事件流可以是连续发生的一系列事件。通常,事件可以产生其它进程或事件流。通常使用复杂事件处理(CEP)系统来处理此类事件流。
发明内容
事件驱动的应用可以预测未来事件并从预测事件产生事件流。所产生的事件流可以作为预测操作来执行,直到预测被确认为正确或错误。预测操作可以生成在预测被确认时可被呈现的结果。在某些情况下,可以在预测事件之前使用这些结果,而在其它情况下,可以高速缓存这些结果直到预测被确认。在某些情况下,当预测事件发生时,预测操作可以与实际事件流融合。在某些设备中,预测机制可以增强性能、实现原本可能困难的操作并且可节省电池寿命或能量。
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的概念精选。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
附图说明
在附图中,
图1是示出具有预测性事件流的设备的实施例的图示。
图2A是示出无预测的时间线的示例实施例的图示。
图2B是示出有预测的时间线的示例实施例的图示。
图3是示出用于通过预测管理输入流的方法的实施例的流程图。
图4是示出用于处置被错误地预测的任务流的方法的实施例的流程图。
具体实施方式
一种系统可以从事件流中的事件预测未来事件,然后基于所预测的未来事件产生预测事件流。可以处理预测事件流,直到该系统能够确定预测事件是否实际发生。如果预测事件如预测般发生,则预测事件流可以被转换成实际事件流。如果预测事件并未发生,则可以通过不同方式处置预测事件流,诸如撤销、停止或擦除预测事件流的结果。
在事件流可被无意地暂停或切断的情况下或者在预测事件流可以产生增强的响应或性能的情况下,该系统可以是有用的。例如,预测事件在通信信道被切断或降级时可能是有用的,并且可以允许应用继续起作用。在另一示例中,预测事件可以事先下载信息或者准备结果并随后在实际事件发生时立即使这些结果可用。
在一个使用场景中,设备可以以连续方式处理事件流,诸如更新地图上的位置的全球定位系统(GPS)导航设备。例如,当导航设备穿过隧道时,该设备可能会在GPS信号中引起短暂中断。在中断期间,当该设备穿过隧道时,可以创建一个或多个预测事件来表示GPS输入事件流。预测事件可以启动预测任务流,例如基于从诸如导航速度之类的先前速度以及航向计算的信息来更新地图上的方位。当该设备从隧道重新出现时,预测事件可以得到确认,并且预测事件可以与实际事件流合并或统一。
在另一个使用场景中,web浏览器可以监视来自用户的输入,诸如文本输入、光标移动或其它交互。用户输入可以作为同步事件流来对待。基于用户输入,web浏览器可以预测用户可能选择具体链接或输入搜索项的未来事件。预测事件可以在用户实际点击链接或完全输入搜索项之前产生下载目标广告或搜索项目信息的一组任务。当实际事件发生时,浏览器可以非常迅速地显示已下载的信息,从而提供比在之后下载信息的情况下高得多的性能的用户体验。
在再一个使用场景中,设备可以预测未来事件可能涉及跨网络下载信息。在执行与预测事件相关联的任务时,该设备可以使用较慢速度下载信息,并且可以消耗比该设备尝试全速下载的情况更低的带宽以及潜在更少的能量。更低的带宽消耗可以导致更低的网络成本、和更好的带宽利用、以及设备上潜在更少的能耗。
在又一个使用场景中,设备可以预测未来事件可以使现存事件流变得无用,因此现存事件流可以响应于预测事件而终止。例如,电池供电的无线设备可以响应于用户快速移动的事件(诸如当用户开车时)预测该用户可能无法很快查看电子邮件信息。通过在此时间期间避免电子邮件下载,无线设备的电池寿命可以得到保存。
本说明书通篇中,在所有附图的描述中,相似的附图标记表示相同的元素。
在将元素称为被“连接”或“耦合”时,这些元素可以直接连接或耦合在一起,或者也可以存在一个或多个中间元素。相反,在将元素称为被“直接连接”或“直接耦合”时,不存在中间元素。
本发明主题可被具体化为设备、系统、方法、和/或计算机程序产品。因此,本发明主题的部分或全部可以用硬件和/或软件(包括固件、常驻软件、微码、状态机、门阵列等)来具体化。此外,本发明主题可以采用其上嵌入有供指令执行系统使用或结合其使用的计算机可使用或计算机可读的程序代码的计算机可使用或计算机可读的存储介质上的计算机程序产品的形式。在本文的上下文中,计算机可使用或计算机可读介质可以是可包含、存储、通信、传播、或传输程序以供指令执行系统、装置或设备使用或结合其使用的任何介质。
计算机可使用或计算机可读介质可以是,例如,但不限于,电、磁、光、电磁、红外、或半导体系统、装置、设备或传播介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由指令执行系统访问的任何其它介质。注意,计算机可使用或计算机可读介质可以是其上打印有程序的纸张或其它合适的介质,因为程序可以经由例如对纸张或其它介质的光学扫描而电子地捕获,随后如有必要被编译、解释,或以其它合适的方式处理,并随后存储在计算机存储器中。
通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语“已调制数据信号”可以被定义为其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及诸如声学、RF、红外及其它无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。
当本发明主题在计算机可执行指令的一般上下文中具体化时,该实施例可以包括由一个或多个系统、计算机、或其它设备执行的程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。通常,程序模块的功能可以在各个实施例中按需进行组合或分布。
图1是实施例100的图示,示出可以使用预测性事件的系统。实施例100是设备的简化示例,该设备可以操作处理事件流的应用并且可以创建使一系列任务得到执行的预测事件。当预测被示为真或假时,可以处置预测事件流。
图1的示图示出系统的各个功能组件。在某些情况下,组件可以是硬件组件、软件组件、或硬件和软件的组合。某些组件可以是应用层软件,而其它组件可以是操作系统层组件。在某些情况下,一个组件到另一个组件的连接可以是紧密连接,其中两个或更多个组件在单个硬件平台上操作。在其它情况下,连接可以通过跨长距离的网络连接来形成。各实施例可以使用不同的硬件、软件、以及互连体系结构来实现所描述的功能。
实施例100示出可以处理作为应用的一部分的输入流。输入流可以由应用处理,以产生各种结果。在许多情况下,输入流中的事件可以使事件流被启动,而这又可以充当使其它事件流被启动的事件。
预测事件可以执行在事件发生的预期内的各种任务。在一个实施例中,预测事件流可以缓冲来自各种任务的输入,并且当预测事件发生时,预测任务的结果可以立即可用。这一实施例对于应用可可能具有显著性能益处。
例如,web浏览器应用可以监视用户界面上用户与web页的交互。基于用户交互,预测事件可以是用户可能选择特定链接以便继续。当用户查看web页时,预测事件可以使web浏览器开始下载预测链接。如果用户实际选择该链接,则数据可以立即可用而无需等待下载进程,因为下载发生在选择该链接之前。
在另一实施例中,预测任务流可以基于预测事件进行操作而无需缓冲。在另一使用示例中,GPS接收器可以在移动地图上显示用户的位置。当用户改变位置时,GPS接收机可以预测用户未来可能移动到何处并且可以取得地图的瓦片(tile)。如果用户移动至预测位置,则可以显示这些瓦片。如果用户并未移动至预测位置,则这些瓦片可被置于高速缓存中并且可以在未来使用或者可以不使用。
在类似的实施例中,预测任务流可以以比常规任务流更低的服务质量进行操作。在以上示例中,GPS移动地图设备可以在下载预测事件流中以比常规事件流低的分辨率下载瓦片。当预测事件得到确认时,可以在下载较高分辨率瓦片的同时显示低分辨率瓦片。
输入流可以被定义为这样的对象:该对象的状态可能是所感兴趣的。可以使用可消耗输入流的状态的对象来定义监视器。用于定义这些对象的一种机制是在.NET框架中使用的IObservable<T>和IObserver<T>结构,其中IObservable<T>可以用于表示输入事件流并且IObserver<T>可以用于表示监视对象。其它框架可以具有可以使用对象/观察者或模型-查看-控制器(Model-View-Controller)设计模式的类似结构。
用于处理输入流的系统可以落入计算机科学的复杂事件处理(CEP)的范畴内。
当观察输入流时,监视器可以响应于不同事件而启动其它事件流。输出流可以是从所监视的事件产生的若干事件流的聚集。输出流可以是在一个或多个事件流上执行的绑定(bind)操作的结果,这可以包括或可以不包括预测事件流。
因为输入流可以作为同步事件流来对待,因此应用代码能够以与实际事件相同的方式响应于预测事件。事件预测器可以创建预测事件并将该预测事件插入到输入事件流中,使得应用代码可以处理预测事件,如同预测事件是实际事件一样。
应用代码可以通过创建可包括该应用可以执行的各种任务的分立事件流来对预测事件作出反应。每个任务可以是预测事件流上的事件。
可以与实际事件不同地处理预测事件,因为当预测不正确时,对预测事件的响应可以被撤销、清除、忽略、停止或以其它方式校正。当预测事件被正确地预测时,响应可以对应用产生性能益处。
在许多实施例中,“正确的”预测可以是在容许范围内的任何预测。某些预测事件可以接近实际事件并且可以在实际事件发生之后进行调整或校正。在某些情况下,接近的预测事件可能足以使应用继续,即使预测事件并不与实际事件精确匹配。
在某些实施例中,可以在“砂箱”或专用模式中处理预测事件。在这一模式中,由预测事件产生的事件流可以被高速缓存、缓冲或从正常结果事件流分离,使得当预测不正确时可以删除或移除预测事件流。在预测正确的情况下,预测事件流可以被合并或转换成常规事件流中,或者高速缓存或缓冲的结果可以被释放以便立即使用。
在其它实施例中,预测事件流可以作为正常事件流操作而无需特别处理,且可以生成由应用进一步处理的结果并且可以使其对用户可见或不可见。在这一实施例中,如果预测被确认为假,则预测事件流可以被停止。这一实施例在所预测事件的结果是良性时可能是有用的。
设备102可以表示常规计算机设备,具有预测性事件处理的应用可以在其上操作。设备102被示为可以处理输入流并且可以反映台式计算机、服务器计算机、游戏控制台、网络设备或其它设备的独立设备。在其它实施例中,设备102可以是便携式设备,诸如膝上型计算机、上网本计算机、移动电话、手持式个人数字助理、便携式条形码扫描仪、便携式GPS接收器设备或其它类型的设备。
在某些实施例中,设备102的功能组件可以由使用网络连接的不同设备来执行。在某些这种实施例中,例如,所述功能的各部分可以由网络服务器来执行,而其它部分可以由客户机设备来执行。
设备102可以具有各种硬件组件104和软件组件106。所示体系结构可以表示常规计算机设备,虽然在其它实施例中可以使用其它体系结构。
硬件组件104可以包括可以使用随机存取存储器110和非易失性存储112的处理器108。硬件组件可以包括网络接口114和用户接口116。在某些情况下,硬件组件104可以包括其它外围设备118,诸如全球定位系统(GPS)接收机、仪器、或其它外围设备。
软件组件106可以包括操作系统120,各种应用122可以在其上执行。
应用122可以是可以执行任何类型功能的任何类型的应用。在某些情况下,应用122可以执行用户可与之交互的功能。许多这种应用可以向用户呈现用户接口并从用户接收输入。其它应用可以在无需用户交互的情况下处理信息,并且可以使用诸如应用编程接口(API)来操作。
应用122可以具有可以处理输入流126的应用代码124。输入流126可被定义成包含事件的实例的容器对象。事件可以由数据类型来定义并且可以由诸如用户交互之类的外部源或者来自诸如GPS接收机之类的数据源的输入来产生。在某些实施例中,应用122可以处理许多不同的事件流。输入流126可以是异步事件流,其中应用代码124能够在事件发生时处理输入事件,而不是在预定义间隔处理输入事件。
事件监视器128可以监视事件流126并且标识由应用代码124处理的事件。响应于输入流126中的事件,应用代码124可以执行各种动作作为响应。动作可以作为另一事件流来对待。
历史分析器130可以分析输入流126以生成事件历史132。在某些实施例中,事件历史132可以包含来自许多事件流——包括由设备102以及其它设备收集的事件流——的事件历史。
使用GPS地图设备作为示例,来自许多不同用户的事件流可以用于建立用户通过其设备所遵循的路径的历史。这些路径是包含设备曾经处于的位置的事件流。这一历史还可以包括设备102已创建的先前路径。
各种历史可以被事件预测器136用来预测未来事件。事件预测器136可以标识所预测的未来事件并且导致从预测事件创建事件流。所示示例可以在本说明书下文呈现的实施例200的论述中找到。
事件预测器136可以创建预测事件,然后将预测事件插入到输入流126中。应用代码124可以处理预测事件,如同预测事件是实际事件一样。在某些情况下,应用代码124可以以与实际事件不同的方式处理预测事件,诸如以保护或高速缓存模式以及其它方式处理响应。
输入流126中的事件可以是异步的,这意味着这些事件可以不被归入特定间隔并且可以在任何时间发生。在许多情况下,诸如GPS接收机输入示例,经更新的GPS位置可以基于常规基础来更新,然而应用代码124可被设计成将GPS位置事件作为异步事件来处理。
一旦预测的结果已知,事件处置器140就可以处理预测事件流。在正确预测事件的情况下,事件处置器140可以将预测事件流的分类从预测事件流改变成常规事件流。在预测事件流不具有单独分类的实施例中,事件处置器可以不执行任何动作而仅仅允许预测事件流继续。
在错误预测事件的情况下,事件处置器140可以清除预测事件流的影响。例如,事件处置器140可以停止预测事件流,创建一组反事件以撤销预测事件流的动作,然后执行反事件。
在预测事件流具有置于缓冲器或高速缓存中的结果的情况下,事件处置器140可以导致在停止预测事件流之后缓冲器或高速缓存得到清除。
在某些实施例中,事件处置器140可以在预测被确定为错误时仅仅导致预测事件流停止任何未来操作。当不存在未来操作时,在某些情况中,事件处置器140可以不执行任何动作。
在某些实施例中,警报发生器134可以用于启动事件预测器136。警报发生器134可以标识输入流中的间断并导致事件预测器136生成预测事件以补充输入流中的中断。使用以上启用GPS的设备的示例,在设备进入隧道时,警报发生器134可以感测GPS输入流中的间断。响应于检测,警报发生器134可以导致事件预测器136生成一个或多个预测事件,并且将该预测事件插入到输入流126中以使得GPS设备可以继续示出位置。
在某些实施例中,事件预测器136可以继续操作并且可以尝试预测未来输入以使得应用122可以具有增强的性能。
事件预测器136可以使用事件历史132以及其它上下文信息来生成一个或多个预测事件。可以从包括设备102已处理的输入流以及由其它设备处理的类似输入流的先前输入流126导出事件历史132。其它输入流144可以在网络142上被接收并且由历史分析器130处理以生成事件历史132。在某些实施例中,事件历史132可以从远程服务器接收,该远程服务器可以处理诸如来自多个设备的输入流之类的许多不同的输入流。
事件预测器136可以检测输入流126上的一系列事件。在使用启用GPS的设备的简单示例中,指示用户在一时段上沿高速公路前进的事件可以用于预测该用户可能沿同一高速公路以相同的速度前进。
事件预测器136还可以使用附加信息来执行预测。附加信息被成为“上下文”。上下文可以是除了输入流中的事件之外的任何其它信息。上下文的简单示例可以是日间输入的时间。
图2A和2B是示出有预测事件和无预测事件的时间线的图示。实施例200在图2A中被示为无预测的时间线,并且实施例202在图2B中被示为相同时间线但有预测事件。
在实施例200中,输入事件流204与输出事件流206一起示出。复杂事件处理系统可以接收输入事件,处理这些事件并从各种任务创建输出事件。输入事件流在.NET框架中可被表示为IObservable<T>对象,或者在其它计算框架中被表示为类似设计模式。
事件208可以导致任务流212被执行。沿任务流212,各种任务214可以被执行并且可以被暴露为任务流212上的事件。输出事件流206可以被示为各种任务流的绑定操作,并且来自任务流212的事件可被示为暴露在输出任务流206上。
从事件208在时间上随后可以遇到事件210,并且事件210可导致任务流216被执行。任务流216可以由可被暴露为事件并被绑定到输出事件流206的任务218、220、222和224组成。
实施例200的操作表示可以在无需预测的情况下执行的应用操作。换言之,输入流204上的每个事件可导致相关联任务流被执行,这可以生成绑定到输出流的事件。
将实施例200与实施例202进行比较,在实施例202中可以在有预测的情况下执行同一进程。
实施例202示出具有事件208和210的输入事件流204。事件208被示为以与实施例200相同的方式发生,且具有任务流212和任务214。
实施例202包括预测事件226,预测事件226可以是事件210的预测版本。预测事件可以通过预测算法来创建并被插入到输入事件流204中。响应于预测事件226,预测任务流228可以被创建。
预测任务流228可以包括可以对应于实施例200的任务218、220和222的任务230、232和234。来自预测任务的结果或事件可被绑定到输出事件流238。当事件210如预测般实际地发生时,预测任务流228可以改变成可包括任务224的实际任务流236。
在某些实施例中,预测任务230、232和234的输出可以被缓冲或高速缓存,但是并不被绑定到输出事件流238。在某些实施例中,预测任务230、232和234的操作可以以低于正常任务的服务质量水平来执行。例如,在较低服务质量水平期间的图像下载可以以低于在高服务质量水平任务期间的分辨率来执行。
预测事件的结果可以与输出事件流206和238对比地示出。当使用预测事件时,任务中的许多可以被迅速执行。预测任务230、232和234甚至可以在预测事件发生之前完成,只留下任务224在事件210发生之后执行。这可以大大提高应用的性能,因为在实施例202中在事件210之后只剩余两个任务,而在实施例200中在事件210之后剩余五个事件。
图3是示出用于通过预测管理输入流的方法的实施例300的流程图。实施例300是可以由应用响应于输入流来执行的进程的简化示例。
其它实施例可以使用不同顺序的、附加的或更少的步骤以及不同的名称或术语来实现类似的功能。在一些实施方式中,各种操作或一组操作可以按同步或异步的方式与其它操作并行执行。在此选择的这些步骤被挑选来以简化的形式示出操作的一些原理。
实施例300示出可被执行用于预测事件的示例操作。实施例300监视输入事件流,并且如果事件流被中断,则预测机制可用于在中断期间预测事件以进行填充。
其它实施例可以基于其它准则来创建预测事件。在某些实施例中,预测机制可以连续使用。在这一实施例中,预测机制可以用来增强应用或设备的性能。
在框302,可监视输入事件流。在具有复杂事件处理的许多计算机语言中,对象可被定义为包含特定类型的事件。其它对象可以被定义为可以预订或监视这些事件。在某些情况下,监视对象可以具有允许监视对象从输入事件流选择某些事件的过滤器或其它定义。
在.NET框架中,输入事件流可以由IObservable<T>对象表示,而监视器可以由IObserver<T>对象来呈现。其它框架可以具有类似的结构。
在框304,可以监视事件历史。事件历史可以是一连串事件。在框306,如果接收到期望事件,则进程可以返回到框302。如果在框306未接收到期望事件,则进程可以前进到框308。
在框308,可以聚集当前上下文。在框310,事件历史连同当前上下文一起可被用于预测未来事件。每个应用可以具有不同准则并且使用不同参数来预测事件。在某些应用中,可以使用公式、试探法或可以以不同方式预测事件的其它机制来预测事件。
基于来自框310的所预测的未来事件,在框312,作为响应,可以启动任务流。任务流可以具有应用可以执行的若干任务,并且这些任务可以被暴露为输出任务流的事件。
在框314中,可操作任务流,并且通过框316往回循环直到实际事件发生。在框316中对实际事件的确定可以随每个应用而变化。在某些情况下,可以发生可指示预测错误的另一事件,即使预测事件是为以后而预测的。每个应用可以具有不同的机制和不同的阈值用于确定预测的潜在正确性或错误性。
如果在框318预测是不正确的,则在框320可以处置预测任务流。处置机制的示例可以在本说明书稍后给出的实施例400中示出。
如果在框318预测是正确的,则在框322可以将预测任务流转换成实际任务流。在某些实施例中,来自预测任务流的输出可以被缓冲或高速缓存。在这种实施方式中,在框322,存储在缓冲器或高速缓存中的结果可以被释放以备使用。
图4是示出用于处置被错误地预测的任务流的方法的实施例400的流程图。实施例400是可以在预测错误时执行的进程的简化示例,诸如实施例300的框320的操作。
其它实施例可以使用不同顺序的、附加的或更少的步骤以及不同的名称或术语来实现类似的功能。在一些实施方式中,各种操作或一组操作可以按同步或异步的方式与其它操作并行执行。在此选择的这些步骤被挑选来以简化的形式示出操作的一些原理。
实施例400示出突出用于当发现预测错误时处置预测任务流的结果的不同机制的一般进程。
在某些情况下,预测事件流可以产生许多事件流。例如,在原始预测事件流中执行的任务可以暴露由另一观察者对象消耗的事件,并且启动另一事件流。这可以发生多次,从而创建如果发现预测错误则可能被清除的一连串事件和事件流。
在框402,可能会发现预测错误。框402可以对应于实施例300的框318。当在框402发现预测错误时,在框403可以停止预测事件流。
在许多实施例中,预测事件可能并不精确地匹配于实际事件。在这些情况下,当预测事件在预定义的值范围内时,预测事件可以被确定为‘正确’。当预测事件是预定义等效关系的等效模量时,预测事件可被视为‘正确’。
如果在框404任务的输出被缓冲,则缓冲器可以在框406被擦除并且该进程在框422结束。在这一情况下,预测任务流的影响可能未被结合到输出事件流中。
如果在框404输出未被缓冲并且在框410已完成任务将不被解退(unwind),则该进程在框422结束。在这一情况下,预测事件流的输出可能是良性的,诸如具有在事件的预期内的已下载信息。当事件并未发生时,下载的信息可以被忽略。
当在框410已完成任务将被解退时,已完成任务可以被撤销。在简单情况下,可以撤销每个已完成任务。在其中已经从预测任务产生其它事件流的更复杂情况下,任务列表可以是宽泛的。
在框412可以对任务进行排序以准备撤销预测任务。在某些情况下,可以以原始任务的次序来撤销任务,而在其它情况下,可以以相反次序来撤销任务。实际次序可以取决于任务类型和具体应用。在某些情况下,可以执行完全不同任务的序列,其中该序列补偿预测任务的动作。
在框414可以分析已完成任务的每一个。对于框414中的每个任务,反任务可以在框416创建并在框418执行。反任务可以执行原始任务的逆反,撤销原始任务的操作,或者以其它方式重建已完成任务之前的环境。
在某些实施例中,预测任务流可以通过在实施例400中所述的方法的组合来处置。例如,某些任务可被忽略,被缓冲的那些任务可以使缓冲器被清洗,而反任务可用的其它任务可以通过使用反任务而得到校正。
以上对本发明主题的描述是出于说明和描述的目的而提出的。它不旨在穷举本主题或将本主题限于所公开的精确形式,且鉴于以上教导其它修改和变形都是可能的。选择并描述实施方式来最好地解释本发明的原理及其实践应用,从而使本领域的其它技术人员能够在各种实施方式和各种适于所构想的特定用途的修改中最好地利用本发明。所附权利要求书旨在包括除受现有技术所限的范围之外的其它替换实施方式。
Claims (14)
1.一种在计算机处理器上执行的方法,所述方法包括:
监视包括一系列异步事件的输入流(302),所述监视由观察者对象来执行,所述一系列异步事件是由异步事件的集合来定义的,所述集合具有所述异步事件符合的数据类型;
从所述输入流确定事件历史(304);
响应于所述输入事件流中的第一事件产生第一事件流(212),所述第一事件流包括多个事件;
基于所述事件历史和当前上下文来确定预测的未来事件(310);
响应于所述预测的未来事件产生预测事件流(312),所述预测事件流包括待执行的预测任务,所述预测任务是所述预测事件流上的一个事件;
在确定所述未来事件的实际结果之前,执行所述预测事件流中的多个所述预测任务(314);
将所述预测事件流(322)和所述第一事件流绑定到输出流中;以及
基于所述实际结果来处置所述预测任务流,
其中当确定所述实际结果并不等效于所述预测事件时:
停止所述预测事件流;
为在所述预测事件流中执行的所述预测任务的每一个创建反事件;以及
执行每个反事件,所述反事件可被绑定到所述输出事件流。
2.如权利要求1所述的方法,其特征在于,还包括:
确定所述实际结果等效于所述预测事件;以及
将所述预测事件流转换成常规事件流。
3.如权利要求2所述的方法,所述预测事件流包括以低于所述常规事件流的服务质量执行的事件。
4.如权利要求1所述的方法,其特征在于,还包括:
为所述一系列事件确定当前上下文;以及
所述预测的未来事件是附加地基于所述当前上下文而预测的。
5.如权利要求4所述的方法,其特征在于,所述事件历史包括来自各自源自不同用户的多个输入流的历史。
6.如权利要求5所述的方法,其特征在于,所述上下文包括描述当前情况的参数值。
7.如权利要求1所述的方法,其特征在于,所述预测事件流包括终止所述第一事件流。
8.如权利要求7所述的方法,其特征在于,还包括:
确定所述实际结果并不等效于所述预测事件,以及重新开始所述第一事件流。
9.如权利要求1所述的方法,其特征在于,还包括:
标识所述输入流中的期望事件,所述期望事件是从所述事件历史标识的;
确定所述期望事件并未发生;以及
基于并未发生的所述期望事件,使所述预测事件得到确定。
10.如权利要求9所述的方法,其特征在于,所述期望事件包括对所述输入流的中断。
11.如权利要求1所述的方法,其特征在于,所述预测事件流被缓冲以免绑定到所述输出流直到所述实际结果被确定。
12.如权利要求11所述的方法,其特征在于,还包括:
确定所述实际结果等效于所述预测事件,以及释放所述预测事件流的缓冲。
13.一种系统,包括:
处理器(108);
监视包括一系列异步事件的输入事件监视器(128),所述监视由观察者对象来执行,所述一系列异步事件是由异步事件的集合来定义的,所述集合具有所述异步事件符合的数据类型;
事件预测器(136),用于:
预测未来事件并响应于所述未来事件启动包括多个待执行任务的预测事件流;以及
将所述预测事件流绑定到输出流中;
事件处置器,用于:
确定所述事件的实际结果;以及
基于所述实际结果,处置所述预测任务流,
其中当确定所述实际结果并不等效于所述预测事件时:
停止所述预测事件流;
为在所述预测事件流中执行的所述预测任务的每一个创建反事件;以及
执行每个反事件,所述反事件可被绑定到所述输出事件流。
14.如权利要求13所述的系统,其特征在于,所述输入事件监视器还:
检测所述一系列输入事件已被中断;以及
使所述事件预测器执行所述预测。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/732,244 US20110239229A1 (en) | 2010-03-26 | 2010-03-26 | Predicative and persistent event streams |
US12/732,244 | 2010-03-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102200932A CN102200932A (zh) | 2011-09-28 |
CN102200932B true CN102200932B (zh) | 2015-07-15 |
Family
ID=44657840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110081368.1A Active CN102200932B (zh) | 2010-03-26 | 2011-03-25 | 预测性和持久性事件流 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20110239229A1 (zh) |
CN (1) | CN102200932B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9659063B2 (en) * | 2010-12-17 | 2017-05-23 | Software Ag | Systems and/or methods for event stream deviation detection |
TWI510802B (zh) * | 2011-03-21 | 2015-12-01 | Hon Hai Prec Ind Co Ltd | 移動通訊終端及其位置更新方法 |
US8739186B2 (en) | 2011-10-26 | 2014-05-27 | Autodesk, Inc. | Application level speculative processing |
WO2013097073A1 (zh) * | 2011-12-26 | 2013-07-04 | 华为技术有限公司 | 一种流处理方法和装置 |
US9098805B2 (en) | 2012-03-06 | 2015-08-04 | Koodbee, Llc | Prediction processing system and method of use and method of doing business |
US9009734B2 (en) * | 2012-03-06 | 2015-04-14 | Autodesk, Inc. | Application level speculative processing |
US20140180695A1 (en) * | 2012-12-25 | 2014-06-26 | Microsoft Corporation | Generation of conversation to achieve a goal |
US10095978B2 (en) | 2013-01-05 | 2018-10-09 | Microsoft Technology Licensing, Llc | Monitor-mine-manage cycle |
US9918114B2 (en) * | 2015-06-01 | 2018-03-13 | Comcast Cable Communications, Llc | Transmission of applications with content |
US9792259B2 (en) | 2015-12-17 | 2017-10-17 | Software Ag | Systems and/or methods for interactive exploration of dependencies in streaming data |
CN108604122B (zh) * | 2016-05-10 | 2022-06-28 | 谷歌有限责任公司 | 在虚拟现实环境中使用预测动作的方法和装置 |
US11726979B2 (en) | 2016-09-13 | 2023-08-15 | Oracle International Corporation | Determining a chronological order of transactions executed in relation to an object stored in a storage system |
US10860534B2 (en) | 2016-10-27 | 2020-12-08 | Oracle International Corporation | Executing a conditional command on an object stored in a storage system |
US10180863B2 (en) * | 2016-10-31 | 2019-01-15 | Oracle International Corporation | Determining system information based on object mutation events |
CN107016924B (zh) * | 2016-12-20 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 虚拟地图中的瓦片地图生成方法、更新方法和装置 |
CN110535689B (zh) * | 2019-08-07 | 2022-08-02 | 北京数衍科技有限公司 | 用于事件流中断补偿机制实现的中间件框架及方法 |
US11361137B2 (en) * | 2020-06-03 | 2022-06-14 | Siemens Industry Software Inc. | Integrated simulator and analysis and optimization engine |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6915173B2 (en) * | 2002-08-22 | 2005-07-05 | Ibex Process Technology, Inc. | Advance failure prediction |
CN101233477A (zh) * | 2004-12-28 | 2008-07-30 | 索尼爱立信移动通讯股份有限公司 | 预测用户对移动终端的输入的系统和方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5928323A (en) * | 1996-05-30 | 1999-07-27 | Sun Microsystems, Inc. | Apparatus and method for dynamically generating information with server-side software objects |
US6920468B1 (en) * | 1998-07-08 | 2005-07-19 | Ncr Corporation | Event occurrence detection method and apparatus |
EP1412856A4 (en) * | 2001-07-05 | 2004-09-22 | Computer Ass Think Inc | SYSTEM AND METHOD FOR ANALYZING BUSINESS EVENTS |
US8230445B2 (en) * | 2003-01-14 | 2012-07-24 | International Business Machines Corporation | Event management method and system |
US7647726B2 (en) * | 2007-04-05 | 2010-01-19 | Steven William Gallo | Cover for plant growing medium |
US8160981B2 (en) * | 2007-09-25 | 2012-04-17 | Saffron Technology, Inc. | Event-based anticipation systems, methods and computer program products for associative memories wherein times of future events occurring are predicted |
-
2010
- 2010-03-26 US US12/732,244 patent/US20110239229A1/en not_active Abandoned
-
2011
- 2011-03-25 CN CN201110081368.1A patent/CN102200932B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6915173B2 (en) * | 2002-08-22 | 2005-07-05 | Ibex Process Technology, Inc. | Advance failure prediction |
CN101233477A (zh) * | 2004-12-28 | 2008-07-30 | 索尼爱立信移动通讯股份有限公司 | 预测用户对移动终端的输入的系统和方法 |
Non-Patent Citations (1)
Title |
---|
experiences with client-based speculative remote display;John R.Lange 等;《USENIX Association》;20081231;第419-428页、附图5 * |
Also Published As
Publication number | Publication date |
---|---|
US20110239229A1 (en) | 2011-09-29 |
CN102200932A (zh) | 2011-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102200932B (zh) | 预测性和持久性事件流 | |
KR102424030B1 (ko) | 리소스 관리 방법 및 단말 장치 | |
CN106250434B (zh) | 加载网页的方法及装置 | |
US20070011334A1 (en) | Methods and apparatuses to provide composite applications | |
KR101529802B1 (ko) | 효율적인 콘텍스트 분류를 제공하기 위한 방법 및 장치 | |
KR101657379B1 (ko) | 원격 환경에 대해 데이터 엔트리 콘텐츠를 제공하기 위한 방법 및 장치 | |
US11010215B2 (en) | Recommending applications based on call requests between applications | |
US20090150814A1 (en) | Dynamic update of a user interface based on collected user interactions | |
US20080288380A1 (en) | Method and System for Providing Streamed Game Software on Portable Terminal | |
US20070067373A1 (en) | Methods and apparatuses to provide mobile applications | |
CN107656768B (zh) | 控制页面跳转的方法及其系统 | |
CN111666497B (zh) | 应用程序的加载方法、装置、电子设备及可读存储介质 | |
CN104137094A (zh) | 用于计算设备的内容预先取回 | |
CN102999262A (zh) | 活动锁定墙纸 | |
CN111044045B (zh) | 基于神经网络的导航方法、装置及终端设备 | |
CN104395882A (zh) | 定制的表情符号项集的建立和上下文感知呈现 | |
US20100125838A1 (en) | Method and Apparatus for Optimizing a Program | |
CN102087615A (zh) | 消息队列中逻辑关联的消息的自动合并 | |
CN106714920B (zh) | 对媒体内容的智能流传输 | |
CN104715309A (zh) | 业务控制方法及装置 | |
US9906608B2 (en) | Intelligent adaptation of mobile applications based on constraints and contexts | |
CN102833272A (zh) | 一种基于用户订阅的下载方法及装置 | |
CN112214376A (zh) | 存储空间提示方法及装置 | |
CN107918880A (zh) | 广告投放的控制方法及装置 | |
CN111783018A (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 | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150729 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150729 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |