專利名稱:預(yù)測(cè)性和持久性事件流的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)事件流的管理,尤其涉及預(yù)測(cè)性和持久性事件流。
背景技術(shù):
事件流在許多計(jì)算機(jī)應(yīng)用中是普遍的。事件流可以是連續(xù)發(fā)生的一系列事件。通常,事件可以產(chǎn)生其它進(jìn)程或事件流。通常使用復(fù)雜事件處理(CEP)系統(tǒng)來(lái)處理此類事件流。
發(fā)明內(nèi)容
事件驅(qū)動(dòng)的應(yīng)用可以預(yù)測(cè)未來(lái)事件并從預(yù)測(cè)事件產(chǎn)生事件流。所產(chǎn)生的事件流可以作為預(yù)測(cè)操作來(lái)執(zhí)行,直到預(yù)測(cè)被確認(rèn)為正確或錯(cuò)誤。預(yù)測(cè)操作可以生成在預(yù)測(cè)被確認(rèn)時(shí)可被呈現(xiàn)的結(jié)果。在某些情況下,可以在預(yù)測(cè)事件之前使用這些結(jié)果,而在其它情況下, 可以高速緩存這些結(jié)果直到預(yù)測(cè)被確認(rèn)。在某些情況下,當(dāng)預(yù)測(cè)事件發(fā)生時(shí),預(yù)測(cè)操作可以與實(shí)際事件流融合。在某些設(shè)備中,預(yù)測(cè)機(jī)制可以增強(qiáng)性能、實(shí)現(xiàn)原本可能困難的操作并且可節(jié)省電池壽命或能量。
提供本概述以便以簡(jiǎn)化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的概念精選。本概述并不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限定所要求保護(hù)的主題的范圍。
在附圖中, 圖1是示出具有預(yù)測(cè)性事件流的設(shè)備的實(shí)施例的圖示。
圖2A是示出無(wú)預(yù)測(cè)的時(shí)間線的示例實(shí)施例的圖示。
圖2B是示出有預(yù)測(cè)的時(shí)間線的示例實(shí)施例的圖示。
圖3是示出用于通過(guò)預(yù)測(cè)管理輸入流的方法的實(shí)施例的流程圖。
圖4是示出用于處置被錯(cuò)誤地預(yù)測(cè)的任務(wù)流的方法的實(shí)施例的流程圖。
具體實(shí)施例方式一種系統(tǒng)可以從事件流中的事件預(yù)測(cè)未來(lái)事件,然后基于所預(yù)測(cè)的未來(lái)事件產(chǎn)生預(yù)測(cè)事件流??梢蕴幚眍A(yù)測(cè)事件流,直到該系統(tǒng)能夠確定預(yù)測(cè)事件是否實(shí)際發(fā)生。如果預(yù)測(cè)事件如預(yù)測(cè)般發(fā)生,則預(yù)測(cè)事件流可以被轉(zhuǎn)換成實(shí)際事件流。如果預(yù)測(cè)事件并未發(fā)生,則可以通過(guò)不同方式處置預(yù)測(cè)事件流,諸如撤銷、停止或擦除預(yù)測(cè)事件流的結(jié)果。
在事件流可被無(wú)意地暫?;蚯袛嗟那闆r下或者在預(yù)測(cè)事件流可以產(chǎn)生增強(qiáng)的響應(yīng)或性能的情況下,該系統(tǒng)可以是有用的。例如,預(yù)測(cè)事件在通信信道被切斷或降級(jí)時(shí)可能是有用的,并且可以允許應(yīng)用繼續(xù)起作用。在另一示例中,預(yù)測(cè)事件可以事先下載信息或者準(zhǔn)備結(jié)果并隨后在實(shí)際事件發(fā)生時(shí)立即使這些結(jié)果可用。
在一個(gè)使用場(chǎng)景中,設(shè)備可以以連續(xù)方式處理事件流,諸如更新地圖上的位置的全球定位系統(tǒng)(GPS)導(dǎo)航設(shè)備。例如,當(dāng)導(dǎo)航設(shè)備穿過(guò)隧道時(shí),該設(shè)備可能會(huì)在GPS信號(hào)中引起短暫中斷。在中斷期間,當(dāng)該設(shè)備穿過(guò)隧道時(shí),可以創(chuàng)建一個(gè)或多個(gè)預(yù)測(cè)事件來(lái)表示 GPS輸入事件流。預(yù)測(cè)事件可以啟動(dòng)預(yù)測(cè)任務(wù)流,例如基于從諸如導(dǎo)航速度之類的先前速度以及航向計(jì)算的信息來(lái)更新地圖上的方位。當(dāng)該設(shè)備從隧道重新出現(xiàn)時(shí),預(yù)測(cè)事件可以得到確認(rèn),并且預(yù)測(cè)事件可以與實(shí)際事件流合并或統(tǒng)一。
在另一個(gè)使用場(chǎng)景中,web瀏覽器可以監(jiān)視來(lái)自用戶的輸入,諸如文本輸入、光標(biāo)移動(dòng)或其它交互。用戶輸入可以作為同步事件流來(lái)對(duì)待。基于用戶輸入,web瀏覽器可以預(yù)測(cè)用戶可能選擇具體鏈接或輸入搜索項(xiàng)的未來(lái)事件。預(yù)測(cè)事件可以在用戶實(shí)際點(diǎn)擊鏈接或完全輸入搜索項(xiàng)之前產(chǎn)生下載目標(biāo)廣告或搜索項(xiàng)目信息的一組任務(wù)。當(dāng)實(shí)際事件發(fā)生時(shí), 瀏覽器可以非常迅速地顯示已下載的信息,從而提供比在之后下載信息的情況下高得多的性能的用戶體驗(yàn)。
在再一個(gè)使用場(chǎng)景中,設(shè)備可以預(yù)測(cè)未來(lái)事件可能涉及跨網(wǎng)絡(luò)下載信息。在執(zhí)行與預(yù)測(cè)事件相關(guān)聯(lián)的任務(wù)時(shí),該設(shè)備可以使用較慢速度下載信息,并且可以消耗比該設(shè)備嘗試全速下載的情況更低的帶寬以及潛在更少的能量。更低的帶寬消耗可以導(dǎo)致更低的網(wǎng)絡(luò)成本、和更好的帶寬利用、以及設(shè)備上潛在更少的能耗。
在又一個(gè)使用場(chǎng)景中,設(shè)備可以預(yù)測(cè)未來(lái)事件可以使現(xiàn)存事件流變得無(wú)用,因此現(xiàn)存事件流可以響應(yīng)于預(yù)測(cè)事件而終止。例如,電池供電的無(wú)線設(shè)備可以響應(yīng)于用戶快速移動(dòng)的事件(諸如當(dāng)用戶開(kāi)車時(shí))預(yù)測(cè)該用戶可能無(wú)法很快查看電子郵件信息。通過(guò)在此時(shí)間期間避免電子郵件下載,無(wú)線設(shè)備的電池壽命可以得到保存。
本說(shuō)明書(shū)通篇中,在所有附圖的描述中,相似的附圖標(biāo)記表示相同的元素。
在將元素稱為被“連接”或“耦合”時(shí),這些元素可以直接連接或耦合在一起,或者也可以存在一個(gè)或多個(gè)中間元素。相反,在將元素稱為被“直接連接”或“直接耦合”時(shí),不存在中間元素。
本發(fā)明主題可被具體化為設(shè)備、系統(tǒng)、方法、和/或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明主題的部分或全部可以用硬件和/或軟件(包括固件、常駐軟件、微碼、狀態(tài)機(jī)、門陣列等) 來(lái)具體化。此外,本發(fā)明主題可以采用其上嵌入有供指令執(zhí)行系統(tǒng)使用或結(jié)合其使用的計(jì)算機(jī)可使用或計(jì)算機(jī)可讀的程序代碼的計(jì)算機(jī)可使用或計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品的形式。在本文的上下文中,計(jì)算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)可以是可包含、存儲(chǔ)、通信、傳播、或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或結(jié)合其使用的任何介質(zhì)。
計(jì)算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)可以是,例如,但不限于,電、磁、光、電磁、紅外、 或半導(dǎo)體系統(tǒng)、裝置、設(shè)備或傳播介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。
計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)這樣的信息的任意方法或技術(shù)來(lái)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,RAM、ROM、EEPR0M、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或能用于存儲(chǔ)所需信息且可以由指令執(zhí)行系統(tǒng)訪問(wèn)的任何其它介質(zhì)。注意,計(jì)算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)可以是其上打印有程序的紙張或其它合適的介質(zhì),因?yàn)槌绦蚩梢越?jīng)由例如對(duì)紙張或其它介質(zhì)的光學(xué)掃描而電子地捕獲,隨后如有必要被編譯、解釋,或以其它合適的方式處理,并隨后存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中。
通信介質(zhì)通常以諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)” 可以被定義為其一個(gè)或多個(gè)特征以在信號(hào)中編碼信息的方式被設(shè)定或更改的信號(hào)。作為示例而非限制,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接線連接,以及諸如聲學(xué)、RF、紅外及其它無(wú)線介質(zhì)之類的無(wú)線介質(zhì)。上述的任意組合也應(yīng)包含在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。
當(dāng)本發(fā)明主題在計(jì)算機(jī)可執(zhí)行指令的一般上下文中具體化時(shí),該實(shí)施例可以包括由一個(gè)或多個(gè)系統(tǒng)、計(jì)算機(jī)、或其它設(shè)備執(zhí)行的程序模塊。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。通常,程序模塊的功能可以在各個(gè)實(shí)施例中按需進(jìn)行組合或分布。
圖1是實(shí)施例100的圖示,示出可以使用預(yù)測(cè)性事件的系統(tǒng)。實(shí)施例100是設(shè)備的簡(jiǎn)化示例,該設(shè)備可以操作處理事件流的應(yīng)用并且可以創(chuàng)建使一系列任務(wù)得到執(zhí)行的預(yù)測(cè)事件。當(dāng)預(yù)測(cè)被示為真或假時(shí),可以處置預(yù)測(cè)事件流。
圖1的示圖示出系統(tǒng)的各個(gè)功能組件。在某些情況下,組件可以是硬件組件、軟件組件、或硬件和軟件的組合。某些組件可以是應(yīng)用層軟件,而其它組件可以是操作系統(tǒng)層組件。在某些情況下,一個(gè)組件到另一個(gè)組件的連接可以是緊密連接,其中兩個(gè)或更多個(gè)組件在單個(gè)硬件平臺(tái)上操作。在其它情況下,連接可以通過(guò)跨長(zhǎng)距離的網(wǎng)絡(luò)連接來(lái)形成。各實(shí)施例可以使用不同的硬件、軟件、以及互連體系結(jié)構(gòu)來(lái)實(shí)現(xiàn)所描述的功能。
實(shí)施例100示出可以處理作為應(yīng)用的一部分的輸入流。輸入流可以由應(yīng)用處理, 以產(chǎn)生各種結(jié)果。在許多情況下,輸入流中的事件可以使事件流被啟動(dòng),而這又可以充當(dāng)使其它事件流被啟動(dòng)的事件。
預(yù)測(cè)事件可以執(zhí)行在事件發(fā)生的預(yù)期內(nèi)的各種任務(wù)。在一個(gè)實(shí)施例中,預(yù)測(cè)事件流可以緩沖來(lái)自各種任務(wù)的輸入,并且當(dāng)預(yù)測(cè)事件發(fā)生時(shí),預(yù)測(cè)任務(wù)的結(jié)果可以立即可用。 這一實(shí)施例對(duì)于應(yīng)用可可能具有顯著性能益處。
例如,web瀏覽器應(yīng)用可以監(jiān)視用戶界面上用戶與web頁(yè)的交互?;谟脩艚换ィ?預(yù)測(cè)事件可以是用戶可能選擇特定鏈接以便繼續(xù)。當(dāng)用戶查看web頁(yè)時(shí),預(yù)測(cè)事件可以使 web瀏覽器開(kāi)始下載預(yù)測(cè)鏈接。如果用戶實(shí)際選擇該鏈接,則數(shù)據(jù)可以立即可用而無(wú)需等待下載進(jìn)程,因?yàn)橄螺d發(fā)生在選擇該鏈接之前。
在另一實(shí)施例中,預(yù)測(cè)任務(wù)流可以基于預(yù)測(cè)事件進(jìn)行操作而無(wú)需緩沖。在另一使用示例中,GPS接收器可以在移動(dòng)地圖上顯示用戶的位置。當(dāng)用戶改變位置時(shí),GPS接收機(jī)可以預(yù)測(cè)用戶未來(lái)可能移動(dòng)到何處并且可以取得地圖的瓦片(tile)。如果用戶移動(dòng)至預(yù)測(cè)位置,則可以顯示這些瓦片。如果用戶并未移動(dòng)至預(yù)測(cè)位置,則這些瓦片可被置于高速緩存中并且可以在未來(lái)使用或者可以不使用。
在類似的實(shí)施例中,預(yù)測(cè)任務(wù)流可以以比常規(guī)任務(wù)流更低的服務(wù)質(zhì)量進(jìn)行操作。 在以上示例中,GPS移動(dòng)地圖設(shè)備可以在下載預(yù)測(cè)事件流中以比常規(guī)事件流低的分辨率下載瓦片。當(dāng)預(yù)測(cè)事件得到確認(rèn)時(shí),可以在下載較高分辨率瓦片的同時(shí)顯示低分辨率瓦片。
輸入流可以被定義為這樣的對(duì)象該對(duì)象的狀態(tài)可能是所感興趣的。可以使用可消耗輸入流的狀態(tài)的對(duì)象來(lái)定義監(jiān)視器。用于定義這些對(duì)象的一種機(jī)制是在.NET框架中使用的IObservableCD和IObserverCD結(jié)構(gòu),其中IObservableCD可以用于表示輸入事件流并且IObserveKT〉可以用于表示監(jiān)視對(duì)象。其它框架可以具有可以使用對(duì)象/觀察者或模型-查看-控制器(Model-View-Controller)設(shè)計(jì)模式的類似結(jié)構(gòu)。
用于處理輸入流的系統(tǒng)可以落入計(jì)算機(jī)科學(xué)的復(fù)雜事件處理(CEP)的范疇內(nèi)。
當(dāng)觀察輸入流時(shí),監(jiān)視器可以響應(yīng)于不同事件而啟動(dòng)其它事件流。輸出流可以是從所監(jiān)視的事件產(chǎn)生的若干事件流的聚集。輸出流可以是在一個(gè)或多個(gè)事件流上執(zhí)行的綁定(bind)操作的結(jié)果,這可以包括或可以不包括預(yù)測(cè)事件流。
因?yàn)檩斎肓骺梢宰鳛橥绞录鱽?lái)對(duì)待,因此應(yīng)用代碼能夠以與實(shí)際事件相同的方式響應(yīng)于預(yù)測(cè)事件。事件預(yù)測(cè)器可以創(chuàng)建預(yù)測(cè)事件并將該預(yù)測(cè)事件插入到輸入事件流中,使得應(yīng)用代碼可以處理預(yù)測(cè)事件,如同預(yù)測(cè)事件是實(shí)際事件一樣。
應(yīng)用代碼可以通過(guò)創(chuàng)建可包括該應(yīng)用可以執(zhí)行的各種任務(wù)的分立事件流來(lái)對(duì)預(yù)測(cè)事件作出反應(yīng)。每個(gè)任務(wù)可以是預(yù)測(cè)事件流上的事件。
可以與實(shí)際事件不同地處理預(yù)測(cè)事件,因?yàn)楫?dāng)預(yù)測(cè)不正確時(shí),對(duì)預(yù)測(cè)事件的響應(yīng)可以被撤銷、清除、忽略、停止或以其它方式校正。當(dāng)預(yù)測(cè)事件被正確地預(yù)測(cè)時(shí),響應(yīng)可以對(duì)應(yīng)用產(chǎn)生性能益處。
在許多實(shí)施例中,“正確的”預(yù)測(cè)可以是在容許范圍內(nèi)的任何預(yù)測(cè)。某些預(yù)測(cè)事件可以接近實(shí)際事件并且可以在實(shí)際事件發(fā)生之后進(jìn)行調(diào)整或校正。在某些情況下,接近的預(yù)測(cè)事件可能足以使應(yīng)用繼續(xù),即使預(yù)測(cè)事件并不與實(shí)際事件精確匹配。
在某些實(shí)施例中,可以在“砂箱”或?qū)S媚J街刑幚眍A(yù)測(cè)事件。在這一模式中,由預(yù)測(cè)事件產(chǎn)生的事件流可以被高速緩存、緩沖或從正常結(jié)果事件流分離,使得當(dāng)預(yù)測(cè)不正確時(shí)可以刪除或移除預(yù)測(cè)事件流。在預(yù)測(cè)正確的情況下,預(yù)測(cè)事件流可以被合并或轉(zhuǎn)換成常規(guī)事件流中,或者高速緩存或緩沖的結(jié)果可以被釋放以便立即使用。
在其它實(shí)施例中,預(yù)測(cè)事件流可以作為正常事件流操作而無(wú)需特別處理,且可以生成由應(yīng)用進(jìn)一步處理的結(jié)果并且可以使其對(duì)用戶可見(jiàn)或不可見(jiàn)。在這一實(shí)施例中,如果預(yù)測(cè)被確認(rèn)為假,則預(yù)測(cè)事件流可以被停止。這一實(shí)施例在所預(yù)測(cè)事件的結(jié)果是良性時(shí)可能是有用的。
設(shè)備102可以表示常規(guī)計(jì)算機(jī)設(shè)備,具有預(yù)測(cè)性事件處理的應(yīng)用可以在其上操作。設(shè)備102被示為可以處理輸入流并且可以反映臺(tái)式計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、游戲控制臺(tái)、網(wǎng)絡(luò)設(shè)備或其它設(shè)備的獨(dú)立設(shè)備。在其它實(shí)施例中,設(shè)備102可以是便攜式設(shè)備,諸如膝上型計(jì)算機(jī)、上網(wǎng)本計(jì)算機(jī)、移動(dòng)電話、手持式個(gè)人數(shù)字助理、便攜式條形碼掃描儀、便攜式GPS接收器設(shè)備或其它類型的設(shè)備。
在某些實(shí)施例中,設(shè)備102的功能組件可以由使用網(wǎng)絡(luò)連接的不同設(shè)備來(lái)執(zhí)行。 在某些這種實(shí)施例中,例如,所述功能的各部分可以由網(wǎng)絡(luò)服務(wù)器來(lái)執(zhí)行,而其它部分可以由客戶機(jī)設(shè)備來(lái)執(zhí)行。
設(shè)備102可以具有各種硬件組件104和軟件組件106。所示體系結(jié)構(gòu)可以表示常規(guī)計(jì)算機(jī)設(shè)備,雖然在其它實(shí)施例中可以使用其它體系結(jié)構(gòu)。
硬件組件104可以包括可以使用隨機(jī)存取存儲(chǔ)器110和非易失性存儲(chǔ)112的處理器108。硬件組件可以包括網(wǎng)絡(luò)接口 114和用戶接口 116。在某些情況下,硬件組件104可以包括其它外圍設(shè)備118,諸如全球定位系統(tǒng)(GPS)接收機(jī)、儀器、或其它外圍設(shè)備。
軟件組件106可以包括操作系統(tǒng)120,各種應(yīng)用122可以在其上執(zhí)行。
應(yīng)用122可以是可以執(zhí)行任何類型功能的任何類型的應(yīng)用。在某些情況下,應(yīng)用 122可以執(zhí)行用戶可與之交互的功能。許多這種應(yīng)用可以向用戶呈現(xiàn)用戶接口并從用戶接收輸入。其它應(yīng)用可以在無(wú)需用戶交互的情況下處理信息,并且可以使用諸如應(yīng)用編程接口(API)來(lái)操作。
應(yīng)用122可以具有可以處理輸入流126的應(yīng)用代碼124。輸入流126可被定義成包含事件的實(shí)例的容器對(duì)象。事件可以由數(shù)據(jù)類型來(lái)定義并且可以由諸如用戶交互之類的外部源或者來(lái)自諸如GPS接收機(jī)之類的數(shù)據(jù)源的輸入來(lái)產(chǎn)生。在某些實(shí)施例中,應(yīng)用122 可以處理許多不同的事件流。輸入流126可以是異步事件流,其中應(yīng)用代碼124能夠在事件發(fā)生時(shí)處理輸入事件,而不是在預(yù)定義間隔處理輸入事件。
事件監(jiān)視器128可以監(jiān)視事件流126并且標(biāo)識(shí)由應(yīng)用代碼124處理的事件。響應(yīng)于輸入流126中的事件,應(yīng)用代碼124可以執(zhí)行各種動(dòng)作作為響應(yīng)。動(dòng)作可以作為另一事件流來(lái)對(duì)待。
歷史分析器130可以分析輸入流126以生成事件歷史132。在某些實(shí)施例中,事件歷史132可以包含來(lái)自許多事件流——包括由設(shè)備102以及其它設(shè)備收集的事件流——的事件歷史。
使用GPS地圖設(shè)備作為示例,來(lái)自許多不同用戶的事件流可以用于建立用戶通過(guò)其設(shè)備所遵循的路徑的歷史。這些路徑是包含設(shè)備曾經(jīng)處于的位置的事件流。這一歷史還可以包括設(shè)備102已創(chuàng)建的先前路徑。
各種歷史可以被事件預(yù)測(cè)器136用來(lái)預(yù)測(cè)未來(lái)事件。事件預(yù)測(cè)器136可以標(biāo)識(shí)所預(yù)測(cè)的未來(lái)事件并且導(dǎo)致從預(yù)測(cè)事件創(chuàng)建事件流。所示示例可以在本說(shuō)明書(shū)下文呈現(xiàn)的實(shí)施例200的論述中找到。
事件預(yù)測(cè)器136可以創(chuàng)建預(yù)測(cè)事件,然后將預(yù)測(cè)事件插入到輸入流126中。應(yīng)用代碼124可以處理預(yù)測(cè)事件,如同預(yù)測(cè)事件是實(shí)際事件一樣。在某些情況下,應(yīng)用代碼124 可以以與實(shí)際事件不同的方式處理預(yù)測(cè)事件,諸如以保護(hù)或高速緩存模式以及其它方式處理響應(yīng)。
輸入流126中的事件可以是異步的,這意味著這些事件可以不被歸入特定間隔并且可以在任何時(shí)間發(fā)生。在許多情況下,諸如GPS接收機(jī)輸入示例,經(jīng)更新的GPS位置可以基于常規(guī)基礎(chǔ)來(lái)更新,然而應(yīng)用代碼124可被設(shè)計(jì)成將GPS位置事件作為異步事件來(lái)處理。
一旦預(yù)測(cè)的結(jié)果已知,事件處置器140就可以處理預(yù)測(cè)事件流。在正確預(yù)測(cè)事件的情況下,事件處置器140可以將預(yù)測(cè)事件流的分類從預(yù)測(cè)事件流改變成常規(guī)事件流。在預(yù)測(cè)事件流不具有單獨(dú)分類的實(shí)施例中,事件處置器可以不執(zhí)行任何動(dòng)作而僅僅允許預(yù)測(cè)事件流繼續(xù)。
在錯(cuò)誤預(yù)測(cè)事件的情況下,事件處置器140可以清除預(yù)測(cè)事件流的影響。例如,事件處置器140可以停止預(yù)測(cè)事件流,創(chuàng)建一組反事件以撤銷預(yù)測(cè)事件流的動(dòng)作,然后執(zhí)行反事件。
在預(yù)測(cè)事件流具有置于緩沖器或高速緩存中的結(jié)果的情況下,事件處置器140可以導(dǎo)致在停止預(yù)測(cè)事件流之后緩沖器或高速緩存得到清除。
在某些實(shí)施例中,事件處置器140可以在預(yù)測(cè)被確定為錯(cuò)誤時(shí)僅僅導(dǎo)致預(yù)測(cè)事件流停止任何未來(lái)操作。當(dāng)不存在未來(lái)操作時(shí),在某些情況中,事件處置器140可以不執(zhí)行任何動(dòng)作。
在某些實(shí)施例中,警報(bào)發(fā)生器134可以用于啟動(dòng)事件預(yù)測(cè)器136。警報(bào)發(fā)生器134 可以標(biāo)識(shí)輸入流中的間斷并導(dǎo)致事件預(yù)測(cè)器136生成預(yù)測(cè)事件以補(bǔ)充輸入流中的中斷。使用以上啟用GPS的設(shè)備的示例,在設(shè)備進(jìn)入隧道時(shí),警報(bào)發(fā)生器134可以感測(cè)GPS輸入流中的間斷。響應(yīng)于檢測(cè),警報(bào)發(fā)生器134可以導(dǎo)致事件預(yù)測(cè)器136生成一個(gè)或多個(gè)預(yù)測(cè)事件, 并且將該預(yù)測(cè)事件插入到輸入流126中以使得GPS設(shè)備可以繼續(xù)示出位置。
在某些實(shí)施例中,事件預(yù)測(cè)器136可以繼續(xù)操作并且可以嘗試預(yù)測(cè)未來(lái)輸入以使得應(yīng)用122可以具有增強(qiáng)的性能。
事件預(yù)測(cè)器136可以使用事件歷史132以及其它上下文信息來(lái)生成一個(gè)或多個(gè)預(yù)測(cè)事件??梢詮陌ㄔO(shè)備102已處理的輸入流以及由其它設(shè)備處理的類似輸入流的先前輸入流126導(dǎo)出事件歷史132。其它輸入流144可以在網(wǎng)絡(luò)142上被接收并且由歷史分析器 130處理以生成事件歷史132。在某些實(shí)施例中,事件歷史132可以從遠(yuǎn)程服務(wù)器接收,該遠(yuǎn)程服務(wù)器可以處理諸如來(lái)自多個(gè)設(shè)備的輸入流之類的許多不同的輸入流。
事件預(yù)測(cè)器136可以檢測(cè)輸入流126上的一系列事件。在使用啟用GPS的設(shè)備的簡(jiǎn)單示例中,指示用戶在一時(shí)段上沿高速公路前進(jìn)的事件可以用于預(yù)測(cè)該用戶可能沿同一高速公路以相同的速度前進(jìn)。
事件預(yù)測(cè)器136還可以使用附加信息來(lái)執(zhí)行預(yù)測(cè)。附加信息被成為“上下文”。上下文可以是除了輸入流中的事件之外的任何其它信息。上下文的簡(jiǎn)單示例可以是日間輸入的時(shí)間。
圖2A和2B是示出有預(yù)測(cè)事件和無(wú)預(yù)測(cè)事件的時(shí)間線的圖示。實(shí)施例200在圖2A 中被示為無(wú)預(yù)測(cè)的時(shí)間線,并且實(shí)施例202在圖2B中被示為相同時(shí)間線但有預(yù)測(cè)事件。
在實(shí)施例200中,輸入事件流204與輸出事件流206 —起示出。復(fù)雜事件處理系統(tǒng)可以接收輸入事件,處理這些事件并從各種任務(wù)創(chuàng)建輸出事件。輸入事件流在.NET框架中可被表示為IObservableCD對(duì)象,或者在其它計(jì)算框架中被表示為類似設(shè)計(jì)模式。
事件208可以導(dǎo)致任務(wù)流212被執(zhí)行。沿任務(wù)流212,各種任務(wù)214可以被執(zhí)行并且可以被暴露為任務(wù)流212上的事件。輸出事件流206可以被示為各種任務(wù)流的綁定操作,并且來(lái)自任務(wù)流212的事件可被示為暴露在輸出任務(wù)流206上。
從事件208在時(shí)間上隨后可以遇到事件210,并且事件210可導(dǎo)致任務(wù)流216被執(zhí)行。任務(wù)流216可以由可被暴露為事件并被綁定到輸出事件流206的任務(wù)218、220、222和 224組成。
實(shí)施例200的操作表示可以在無(wú)需預(yù)測(cè)的情況下執(zhí)行的應(yīng)用操作。換言之,輸入流204上的每個(gè)事件可導(dǎo)致相關(guān)聯(lián)任務(wù)流被執(zhí)行,這可以生成綁定到輸出流的事件。
將實(shí)施例200與實(shí)施例202進(jìn)行比較,在實(shí)施例202中可以在有預(yù)測(cè)的情況下執(zhí)行同一進(jìn)程。
實(shí)施例202示出具有事件208和210的輸入事件流204。事件208被示為以與實(shí)施例200相同的方式發(fā)生,且具有任務(wù)流212和任務(wù)214。
實(shí)施例202包括預(yù)測(cè)事件226,預(yù)測(cè)事件226可以是事件210的預(yù)測(cè)版本。預(yù)測(cè)事件可以通過(guò)預(yù)測(cè)算法來(lái)創(chuàng)建并被插入到輸入事件流204中。響應(yīng)于預(yù)測(cè)事件226,預(yù)測(cè)任務(wù)流228可以被創(chuàng)建。
預(yù)測(cè)任務(wù)流228可以包括可以對(duì)應(yīng)于實(shí)施例200的任務(wù)218、220和222的任務(wù) 230、232和234。來(lái)自預(yù)測(cè)任務(wù)的結(jié)果或事件可被綁定到輸出事件流238。當(dāng)事件210如預(yù)測(cè)般實(shí)際地發(fā)生時(shí),預(yù)測(cè)任務(wù)流228可以改變成可包括任務(wù)224的實(shí)際任務(wù)流236。
在某些實(shí)施例中,預(yù)測(cè)任務(wù)230、232和234的輸出可以被緩沖或高速緩存,但是并不被綁定到輸出事件流238。在某些實(shí)施例中,預(yù)測(cè)任務(wù)230、232和234的操作可以以低于正常任務(wù)的服務(wù)質(zhì)量水平來(lái)執(zhí)行。例如,在較低服務(wù)質(zhì)量水平期間的圖像下載可以以低于在高服務(wù)質(zhì)量水平任務(wù)期間的分辨率來(lái)執(zhí)行。
預(yù)測(cè)事件的結(jié)果可以與輸出事件流206和238對(duì)比地示出。當(dāng)使用預(yù)測(cè)事件時(shí), 任務(wù)中的許多可以被迅速執(zhí)行。預(yù)測(cè)任務(wù)230、232和234甚至可以在預(yù)測(cè)事件發(fā)生之前完成,只留下任務(wù)224在事件210發(fā)生之后執(zhí)行。這可以大大提高應(yīng)用的性能,因?yàn)樵趯?shí)施例 202中在事件210之后只剩余兩個(gè)任務(wù),而在實(shí)施例200中在事件210之后剩余五個(gè)事件。
圖3是示出用于通過(guò)預(yù)測(cè)管理輸入流的方法的實(shí)施例300的流程圖。實(shí)施例300 是可以由應(yīng)用響應(yīng)于輸入流來(lái)執(zhí)行的進(jìn)程的簡(jiǎn)化示例。
其它實(shí)施例可以使用不同順序的、附加的或更少的步驟以及不同的名稱或術(shù)語(yǔ)來(lái)實(shí)現(xiàn)類似的功能。在一些實(shí)施方式中,各種操作或一組操作可以按同步或異步的方式與其它操作并行執(zhí)行。在此選擇的這些步驟被挑選來(lái)以簡(jiǎn)化的形式示出操作的一些原理。
實(shí)施例300示出可被執(zhí)行用于預(yù)測(cè)事件的示例操作。實(shí)施例300監(jiān)視輸入事件流, 并且如果事件流被中斷,則預(yù)測(cè)機(jī)制可用于在中斷期間預(yù)測(cè)事件以進(jìn)行填充。
其它實(shí)施例可以基于其它準(zhǔn)則來(lái)創(chuàng)建預(yù)測(cè)事件。在某些實(shí)施例中,預(yù)測(cè)機(jī)制可以連續(xù)使用。在這一實(shí)施例中,預(yù)測(cè)機(jī)制可以用來(lái)增強(qiáng)應(yīng)用或設(shè)備的性能。
在框302,可監(jiān)視輸入事件流。在具有復(fù)雜事件處理的許多計(jì)算機(jī)語(yǔ)言中,對(duì)象可被定義為包含特定類型的事件。其它對(duì)象可以被定義為可以預(yù)訂或監(jiān)視這些事件。在某些情況下,監(jiān)視對(duì)象可以具有允許監(jiān)視對(duì)象從輸入事件流選擇某些事件的過(guò)濾器或其它定義。
在.NET框架中,輸入事件流可以由IObservableCD對(duì)象表示,而監(jiān)視器可以由 IObserverCD對(duì)象來(lái)呈現(xiàn)。其它框架可以具有類似的結(jié)構(gòu)。
在框304,可以監(jiān)視事件歷史。事件歷史可以是一連串事件。在框306,如果接收到期望事件,則進(jìn)程可以返回到框302。如果在框306未接收到期望事件,則進(jìn)程可以前進(jìn)到框308。
在框308,可以聚集當(dāng)前上下文。在框310,事件歷史連同當(dāng)前上下文一起可被用于預(yù)測(cè)未來(lái)事件。每個(gè)應(yīng)用可以具有不同準(zhǔn)則并且使用不同參數(shù)來(lái)預(yù)測(cè)事件。在某些應(yīng)用中,可以使用公式、試探法或可以以不同方式預(yù)測(cè)事件的其它機(jī)制來(lái)預(yù)測(cè)事件。
基于來(lái)自框310的所預(yù)測(cè)的未來(lái)事件,在框312,作為響應(yīng),可以啟動(dòng)任務(wù)流。任務(wù)流可以具有應(yīng)用可以執(zhí)行的若干任務(wù),并且這些任務(wù)可以被暴露為輸出任務(wù)流的事件。
在框314中,可操作任務(wù)流,并且通過(guò)框316往回循環(huán)直到實(shí)際事件發(fā)生。在框 316中對(duì)實(shí)際事件的確定可以隨每個(gè)應(yīng)用而變化。在某些情況下,可以發(fā)生可指示預(yù)測(cè)錯(cuò)誤的另一事件,即使預(yù)測(cè)事件是為以后而預(yù)測(cè)的。每個(gè)應(yīng)用可以具有不同的機(jī)制和不同的閾值用于確定預(yù)測(cè)的潛在正確性或錯(cuò)誤性。
如果在框318預(yù)測(cè)是不正確的,則在框320可以處置預(yù)測(cè)任務(wù)流。處置機(jī)制的示例可以在本說(shuō)明書(shū)稍后給出的實(shí)施例400中示出。
如果在框318預(yù)測(cè)是正確的,則在框322可以將預(yù)測(cè)任務(wù)流轉(zhuǎn)換成實(shí)際任務(wù)流。 在某些實(shí)施例中,來(lái)自預(yù)測(cè)任務(wù)流的輸出可以被緩沖或高速緩存。在這種實(shí)施方式中,在框 322,存儲(chǔ)在緩沖器或高速緩存中的結(jié)果可以被釋放以備使用。
圖4是示出用于處置被錯(cuò)誤地預(yù)測(cè)的任務(wù)流的方法的實(shí)施例400的流程圖。實(shí)施例400是可以在預(yù)測(cè)錯(cuò)誤時(shí)執(zhí)行的進(jìn)程的簡(jiǎn)化示例,諸如實(shí)施例300的框320的操作。
其它實(shí)施例可以使用不同順序的、附加的或更少的步驟以及不同的名稱或術(shù)語(yǔ)來(lái)實(shí)現(xiàn)類似的功能。在一些實(shí)施方式中,各種操作或一組操作可以按同步或異步的方式與其它操作并行執(zhí)行。在此選擇的這些步驟被挑選來(lái)以簡(jiǎn)化的形式示出操作的一些原理。
實(shí)施例400示出突出用于當(dāng)發(fā)現(xiàn)預(yù)測(cè)錯(cuò)誤時(shí)處置預(yù)測(cè)任務(wù)流的結(jié)果的不同機(jī)制的一般進(jìn)程。
在某些情況下,預(yù)測(cè)事件流可以產(chǎn)生許多事件流。例如,在原始預(yù)測(cè)事件流中執(zhí)行的任務(wù)可以暴露由另一觀察者對(duì)象消耗的事件,并且啟動(dòng)另一事件流。這可以發(fā)生多次,從而創(chuàng)建如果發(fā)現(xiàn)預(yù)測(cè)錯(cuò)誤則可能被清除的一連串事件和事件流。
在框402,可能會(huì)發(fā)現(xiàn)預(yù)測(cè)錯(cuò)誤???02可以對(duì)應(yīng)于實(shí)施例300的框318。當(dāng)在框 402發(fā)現(xiàn)預(yù)測(cè)錯(cuò)誤時(shí),在框403可以停止預(yù)測(cè)事件流。
在許多實(shí)施例中,預(yù)測(cè)事件可能并不精確地匹配于實(shí)際事件。在這些情況下,當(dāng)預(yù)測(cè)事件在預(yù)定義的值范圍內(nèi)時(shí),預(yù)測(cè)事件可以被確定為‘正確’。當(dāng)預(yù)測(cè)事件是預(yù)定義等效關(guān)系的等效模量時(shí),預(yù)測(cè)事件可被視為‘正確’。
如果在框404任務(wù)的輸出被緩沖,則緩沖器可以在框406被擦除并且該進(jìn)程在框 422結(jié)束。在這一情況下,預(yù)測(cè)任務(wù)流的影響可能未被結(jié)合到輸出事件流中。
如果在框404輸出未被緩沖并且在框410已完成任務(wù)將不被解退(unwind),則該進(jìn)程在框422結(jié)束。在這一情況下,預(yù)測(cè)事件流的輸出可能是良性的,諸如具有在事件的預(yù)期內(nèi)的已下載信息。當(dāng)事件并未發(fā)生時(shí),下載的信息可以被忽略。
當(dāng)在框410已完成任務(wù)將被解退時(shí),已完成任務(wù)可以被撤銷。在簡(jiǎn)單情況下,可以撤銷每個(gè)已完成任務(wù)。在其中已經(jīng)從預(yù)測(cè)任務(wù)產(chǎn)生其它事件流的更復(fù)雜情況下,任務(wù)列表可以是寬泛的。
在框412可以對(duì)任務(wù)進(jìn)行排序以準(zhǔn)備撤銷預(yù)測(cè)任務(wù)。在某些情況下,可以以原始任務(wù)的次序來(lái)撤銷任務(wù),而在其它情況下,可以以相反次序來(lái)撤銷任務(wù)。實(shí)際次序可以取決于任務(wù)類型和具體應(yīng)用。在某些情況下,可以執(zhí)行完全不同任務(wù)的序列,其中該序列補(bǔ)償預(yù)測(cè)任務(wù)的動(dòng)作。
在框414可以分析已完成任務(wù)的每一個(gè)。對(duì)于框414中的每個(gè)任務(wù),反任務(wù)可以在框416創(chuàng)建并在框418執(zhí)行。反任務(wù)可以執(zhí)行原始任務(wù)的逆反,撤銷原始任務(wù)的操作,或者以其它方式重建已完成任務(wù)之前的環(huán)境。
在某些實(shí)施例中,預(yù)測(cè)任務(wù)流可以通過(guò)在實(shí)施例400中所述的方法的組合來(lái)處置。例如,某些任務(wù)可被忽略,被緩沖的那些任務(wù)可以使緩沖器被清洗,而反任務(wù)可用的其它任務(wù)可以通過(guò)使用反任務(wù)而得到校正。
以上對(duì)本發(fā)明主題的描述是出于說(shuō)明和描述的目的而提出的。它不旨在窮舉本主題或?qū)⒈局黝}限于所公開(kāi)的精確形式,且鑒于以上教導(dǎo)其它修改和變形都是可能的。選擇并描述實(shí)施方式來(lái)最好地解釋本發(fā)明的原理及其實(shí)踐應(yīng)用,從而使本領(lǐng)域的其它技術(shù)人員能夠在各種實(shí)施方式和各種適于所構(gòu)想的特定用途的修改中最好地利用本發(fā)明。所附權(quán)利要求書(shū)旨在包括除受現(xiàn)有技術(shù)所限的范圍之外的其它替換實(shí)施方式。
權(quán)利要求
1.一種在計(jì)算機(jī)處理器上執(zhí)行的方法,所述方法包括監(jiān)視包括一系列異步事件的輸入流(302),所述監(jiān)視由觀察者對(duì)象來(lái)執(zhí)行,所述一系列異步事件是由異步事件的集合來(lái)定義的,所述集合具有所述異步事件符合的數(shù)據(jù)類型; 從所述輸入流確定事件歷史(304);響應(yīng)于所述輸入事件流中的第一事件產(chǎn)生第一事件流(212),所述第一事件流包括多個(gè)事件;基于所述事件歷史和所述當(dāng)前上下文來(lái)確定預(yù)測(cè)的未來(lái)事件(310); 響應(yīng)于所述預(yù)測(cè)的未來(lái)事件產(chǎn)生預(yù)測(cè)事件流(312),所述預(yù)測(cè)事件流包括待執(zhí)行的預(yù)測(cè)任務(wù),所述預(yù)測(cè)任務(wù)是所述預(yù)測(cè)事件流上的一個(gè)事件;在確定所述未來(lái)事件的實(shí)際結(jié)果之前,執(zhí)行所述預(yù)測(cè)事件流中的多個(gè)所述預(yù)測(cè)任務(wù) (314);將所述預(yù)測(cè)事件流(322)和所述第一事件流綁定到輸出流中;以及基于所述實(shí)際結(jié)果來(lái)處置所述預(yù)測(cè)任務(wù)流。
2.如權(quán)利要求1所述的方法,其特征在于,還包括 確定所述實(shí)際結(jié)果等效于所述預(yù)測(cè)事件;以及將所述預(yù)測(cè)事件流轉(zhuǎn)換成常規(guī)事件流。
3.如權(quán)利要求2所述的方法,所述預(yù)測(cè)事件流包括以低于所述常規(guī)事件流的服務(wù)質(zhì)量執(zhí)行的事件。
4.如權(quán)利要求1所述的方法,其特征在于,還包括確定所述實(shí)際結(jié)果并不等效于所述預(yù)測(cè)事件,且作為響應(yīng) 停止所述預(yù)測(cè)事件流;為在所述預(yù)測(cè)事件流中執(zhí)行的所述預(yù)測(cè)任務(wù)的每一個(gè)創(chuàng)建反事件;以及執(zhí)行每個(gè)反事件,所述反事件可被綁定到所述輸出事件流。
5.如權(quán)利要求1所述的方法,其特征在于,還包括 為所述一系列事件確定當(dāng)前上下文;以及所述預(yù)測(cè)的未來(lái)事件是附加地基于所述當(dāng)前上下文而預(yù)測(cè)的。
6.如權(quán)利要求5所述的方法,其特征在于,所述事件歷史包括來(lái)自各自源自不同用戶的多個(gè)輸入流的歷史。
7.如權(quán)利要求6所述的方法,其特征在于,所述上下文包括描述當(dāng)前情況的參數(shù)值。
8.如權(quán)利要求1所述的方法,其特征在于,所述預(yù)測(cè)事件流包括終止所述第一事件流。
9.如權(quán)利要求8所述的方法,其特征在于,還包括確定所述實(shí)際結(jié)果并不等效于所述預(yù)測(cè)事件,以及重新開(kāi)始所述第一事件流。
10.如權(quán)利要求1所述的方法,其特征在于,還包括標(biāo)識(shí)所述輸入流中的期望事件,所述期望事件是從所述事件歷史標(biāo)識(shí)的;確定所述期望事件并未發(fā)生;以及基于并未發(fā)生的所述期望事件,使所述預(yù)測(cè)事件得到確定。
11.如權(quán)利要求10所述的方法,其特征在于,所述期望事件包括對(duì)所述輸入流的中斷。
12.如權(quán)利要求1所述的方法,其特征在于,所述預(yù)測(cè)事件流被緩沖以免綁定到所述輸出流直到所述實(shí)際結(jié)果被確定。
13.如權(quán)利要求12所述的方法,其特征在于,還包括確定所述實(shí)際結(jié)果等效于所述預(yù)測(cè)事件,以及釋放所述預(yù)測(cè)事件流的緩沖。
14.一種系統(tǒng),包括 處理器(108);監(jiān)視包括一系列異步事件的輸入事件監(jiān)視器(128),所述監(jiān)視由觀察者對(duì)象來(lái)執(zhí)行,所述一系列異步事件是由異步事件的集合來(lái)定義的,所述集合具有所述異步事件符合的數(shù)據(jù)類型;事件預(yù)測(cè)器(136),用于:預(yù)測(cè)未來(lái)事件并響應(yīng)于所述未來(lái)事件啟動(dòng)包括多個(gè)待執(zhí)行任務(wù)的預(yù)測(cè)事件流;以及將所述預(yù)測(cè)事件流綁定到輸出流中;事件處置器,用于確定所述事件的實(shí)際結(jié)果;以及基于所述實(shí)際結(jié)果,處置所述預(yù)測(cè)任務(wù)流。
15.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述輸入事件監(jiān)視器還 檢測(cè)所述一系列輸入事件已被中斷;以及使所述事件預(yù)測(cè)器執(zhí)行所述預(yù)測(cè)。
全文摘要
本文中描述了預(yù)測(cè)性和持久性事件流。一種事件驅(qū)動(dòng)的應(yīng)用可以預(yù)測(cè)未來(lái)事件并從預(yù)測(cè)事件產(chǎn)生事件流。所產(chǎn)生的事件流可以作為預(yù)測(cè)操作來(lái)執(zhí)行,直到預(yù)測(cè)被確認(rèn)為正確或錯(cuò)誤。預(yù)測(cè)的操作可以生成在預(yù)測(cè)被確認(rèn)時(shí)可被呈現(xiàn)的結(jié)果。在某些情況下,可以在預(yù)測(cè)事件之前使用這些結(jié)果,而在其它情況下,可以高速緩存這些結(jié)果直到預(yù)測(cè)被確認(rèn)。在某些情況下,當(dāng)預(yù)測(cè)事件發(fā)生時(shí),預(yù)測(cè)操作可以與實(shí)際事件流融合。在某些設(shè)備中,預(yù)測(cè)機(jī)制可以增強(qiáng)性能、實(shí)現(xiàn)原本可能困難的操作并且節(jié)約電池壽命或能量。
文檔編號(hào)G06F11/00GK102200932SQ201110081368
公開(kāi)日2011年9月28日 申請(qǐng)日期2011年3月25日 優(yōu)先權(quán)日2010年3月26日
發(fā)明者H·J·M·梅杰, D·A·馬諾列斯庫(kù), B·C·貝克曼 申請(qǐng)人:微軟公司