專利名稱::從事件流識(shí)別模式的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明的諸實(shí)施例涉及事件流處理的領(lǐng)域。尤其,本發(fā)明的諸實(shí)施例涉及識(shí)別多個(gè)事件中的模式。
背景技術(shù):
:商務(wù)企業(yè)使用具有應(yīng)用程序的計(jì)算機(jī)系統(tǒng)來監(jiān)控和處理商業(yè)活動(dòng)和交易。例如,出售錢包的在線商店可以使用商務(wù)應(yīng)用程序來接收在線銷售訂單,使用庫存應(yīng)用程序來管理庫存中的錢包并與供應(yīng)商通信,或者使用其他的應(yīng)用程序或服務(wù)來創(chuàng)建在線界面。處理復(fù)雜交易和活動(dòng)的商務(wù)實(shí)體可以采用分布式計(jì)算機(jī)系統(tǒng)。例如,處理信用卡和自動(dòng)柜員機(jī)交易的金融機(jī)構(gòu)可能會(huì)每十分鐘接收到數(shù)以千計(jì)的交易。各種活動(dòng)或交易中的每一個(gè)可以被商務(wù)應(yīng)用程序或軟件視為單一事件。例如,在線錢包專賣店中,一個(gè)用戶登錄會(huì)話可以被金融機(jī)構(gòu)視為一個(gè)事件,而一用戶在購物中心刷信用卡可以被金融機(jī)構(gòu)視為另一個(gè)事件。盡管每個(gè)單一事件可能都是重要的,不過分析每個(gè)單一事件可能沒有什么好處。相反地,商務(wù)實(shí)體或其他組織可能對(duì)按照特定模式的多個(gè)事件的發(fā)生感興趣。此類從特定模式積累的信息表示“較高層次的事件”,并且對(duì)進(jìn)一步的分析是有好處和意義的。例如,諸如用戶在一在線商店的登錄會(huì)話、把一個(gè)物品放進(jìn)她的購物車中等的單一事件可能是無足輕重的。然而,在線商店可能對(duì)以下的特定模式感興趣(1)用戶登錄,(2)將物品放到購物車,(3)前去結(jié)帳,以及(4)用戶沒有進(jìn)一步活動(dòng)。這樣的模式可能指示用戶可能因?yàn)橐韵略蚨艞壛怂馁徫镘嚕?a)她對(duì)運(yùn)送和手續(xù)費(fèi)不滿意,(b)她決定在購買之前比較該物品的價(jià)格,(c)用戶點(diǎn)擊了“購買”按鈕,但是進(jìn)行處理的服務(wù)器沒有接收到該請(qǐng)求,或其他原因。目前的系統(tǒng)處理事件并試圖將事件匹配于特定的感興趣的模式。例如,在識(shí)別“放棄購物車”模式時(shí),在線商店可以設(shè)計(jì)一個(gè)應(yīng)用程序來識(shí)別給定事件序列,諸如,(1)用戶登錄,(2)購物車更新,(3)結(jié)帳,以及繼之以在接下來的十分鐘里用戶沒有活動(dòng)。然而,這種模式匹配需要在線商店要求軟件程序設(shè)計(jì)者定制應(yīng)用程序來處理“放棄購物車”模式。在其他系統(tǒng)中,模式匹配是通過在離線期間和/或僅在來自事件的數(shù)據(jù)被存儲(chǔ)在數(shù)據(jù)庫或數(shù)據(jù)倉庫之后執(zhí)行分析來作為后見過程來完成的。這些系統(tǒng)缺乏通用的模式識(shí)別實(shí)現(xiàn)來有效地從一系列事件識(shí)別任何給定模式。此外,定制的代碼或例程要求現(xiàn)有系統(tǒng)將事件數(shù)據(jù)的相關(guān)性與模式的評(píng)估一同處理。例如,在識(shí)別模式時(shí),現(xiàn)有系統(tǒng)等待事件發(fā)生以先將來自事件的數(shù)據(jù)相關(guān),然后再確定一種模式是否已經(jīng)發(fā)生。當(dāng)要評(píng)估一種新的模式時(shí),需要新的一組定制例程來配置現(xiàn)有系統(tǒng)以評(píng)估該模式。因此,需要一種通過監(jiān)視傳入事件并將所監(jiān)視的事件進(jìn)行相關(guān)以在多個(gè)事件中識(shí)別模式的系統(tǒng)和方法,以解決這些和其他的缺點(diǎn)和缺陷中的一個(gè)或多個(gè)。發(fā)明概述本發(fā)明的諸實(shí)施例通過編譯用于定義一系列事件的模式描述來克服已知系統(tǒng)的缺陷。一個(gè)腳本或一組可執(zhí)行代碼被附連或關(guān)聯(lián)于每個(gè)事件,并且該腳本定義數(shù)據(jù)參數(shù)以根據(jù)模式描述來將諸事件相關(guān)。本發(fā)明的諸實(shí)施例執(zhí)行每個(gè)事件的腳本以確定這些事件是否與特定模式相匹配。根據(jù)本發(fā)明的一個(gè)方面,一種方法識(shí)別一系列事件中的模式。該方法編譯一個(gè)模式描述。該模式描述定義包含第一事件和與該第一事件有關(guān)的第二事件的一系列事件。該第一事件被接收到,并且該第一事件包括類型參數(shù)數(shù)據(jù)、時(shí)間參數(shù)數(shù)據(jù)、和內(nèi)容參數(shù)數(shù)據(jù)。該方法還將第一腳本附連到該第一事件。該第一腳本根據(jù)模式描述把第二事件的類型、時(shí)間和內(nèi)容參數(shù)定義為第一事件的諸參數(shù)的函數(shù)。第一事件的附連第一腳本被執(zhí)行。所執(zhí)行的腳本識(shí)別第二事件,從而識(shí)別該模式。根據(jù)本發(fā)明的另一個(gè)方面,具有計(jì)算機(jī)可執(zhí)行組件的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)識(shí)別事件模式。由一模式編譯組件編譯多個(gè)模式描述。這些模式描述中的每一個(gè)順次定義一系列事件。一個(gè)事件組件收集多個(gè)事件。這多個(gè)事件中的每一個(gè)具有與這多事件中的每一個(gè)相關(guān)的數(shù)據(jù)參數(shù)。由一腳本組件將一個(gè)腳本關(guān)聯(lián)到所述多個(gè)事件中的每一個(gè)。該腳本根據(jù)這多個(gè)事件中的每一個(gè)的模式描述,定義這多個(gè)事件中的每一個(gè)在該系列中的后續(xù)事件的數(shù)據(jù)參數(shù)。由一模式識(shí)別引擎執(zhí)行這多個(gè)事件中的每一個(gè)的腳本,以識(shí)別該系列中的后續(xù)事件并從而識(shí)別該模式。根據(jù)本發(fā)明的另一個(gè)方面,一種系統(tǒng)在多個(gè)事件中識(shí)別一種模式。多個(gè)收集計(jì)算機(jī)將相關(guān)事件收集為一系列模式事件。第一組計(jì)算機(jī)在所收集的每一系列中識(shí)別該模式的第一部分。所收集的系列中的每一個(gè)與該系列模式事件的第一部分進(jìn)行匹配。第二組計(jì)算機(jī)在已由第一組識(shí)別出該模式的第一部分的每一系列中識(shí)別該模式的第二部分。該模式的第一部分和該模式的第二部分匹配該系列模式事件。包括該模式的第一和第二部分的每一系列事件被積累并存儲(chǔ)以供評(píng)估之用。替換地,本發(fā)明可以包括各種其他方法和裝置。其他特征部分將會(huì)是顯而易見的,部分將在下文中指出。附圖簡述圖1是例示根據(jù)本發(fā)明的一個(gè)實(shí)施例的一種用于在一系列事件中識(shí)別模式的系統(tǒng)的框圖。圖2A-2F是例示根據(jù)本發(fā)明的一個(gè)實(shí)施例的在執(zhí)行與一事件相關(guān)聯(lián)的腳本的進(jìn)程中的模式識(shí)別引擎的實(shí)例的圖示,。圖3是例示根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于存儲(chǔ)與模式有關(guān)的數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的圖示。圖4是例示根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于組織圖3中所存儲(chǔ)數(shù)據(jù)以供查詢的數(shù)據(jù)結(jié)構(gòu)的圖示。圖5是例示根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于在一系列事件中識(shí)別模式的級(jí)聯(lián)服務(wù)器的集合的圖示。圖6A-6B是例示根據(jù)本發(fā)明的一個(gè)實(shí)施例的由主機(jī)環(huán)境實(shí)現(xiàn)的在一系列事件中識(shí)別模式的方法的流程圖。圖7是例示在其中可以實(shí)現(xiàn)本發(fā)明的合適的計(jì)算系統(tǒng)環(huán)境的一個(gè)例子的框圖。附錄A描述用于實(shí)現(xiàn)本發(fā)明的一個(gè)實(shí)施例的方法的示例性算法。附錄B描述本發(fā)明的一個(gè)實(shí)施例的方法的另一種實(shí)現(xiàn)。相應(yīng)的附圖標(biāo)記在所有附圖中標(biāo)示相應(yīng)的部分。發(fā)明詳細(xì)描述首先參見圖1,框圖例示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于在一系列事件中識(shí)別模式的系統(tǒng)100。例如,系統(tǒng)100包括諸如圖7中的計(jì)算機(jī)130等的計(jì)算設(shè)備(在圖1中未示出)計(jì)算設(shè)備包括一臺(tái)計(jì)算機(jī)服務(wù)器、由公共通信網(wǎng)絡(luò)(諸如因特網(wǎng)、內(nèi)聯(lián)網(wǎng)等)鏈接起來的計(jì)算設(shè)備的集合、或者能夠執(zhí)行多種模式識(shí)別引擎112和腳本組件106的其他計(jì)算系統(tǒng)。系統(tǒng)100包括用于接收多個(gè)事件104的事件組件102。事件組件102可以包括用戶接口(UI)或者從事件源接收多個(gè)事件104的應(yīng)用程序編程接口(API)。以上述在線商店為例,事件組件102可以從接收用戶登錄會(huì)話的web服務(wù)器等接收事件流形式的事件104。在ATM的例子中,事件組件102可以從ATM機(jī)和公共通信網(wǎng)絡(luò)接收ATM交易。這些事件104包括離散活動(dòng)步驟的發(fā)生,如ATM交易、用戶登錄或與商業(yè)web網(wǎng)站的交互、用戶與安全網(wǎng)絡(luò)的登錄會(huì)話等等。另一方面,活動(dòng)的不發(fā)生可以由諸事件104中缺失一事件來表示。系統(tǒng)100還包括負(fù)責(zé)編譯順次定義一系列事件的模式描述的編譯組件110。例如,在上文“放棄購物車”例子中,模式描述可以將模式定義為(1)用戶登錄,(2)將物品放進(jìn)購物車,(3)結(jié)帳以及(4)在十分鐘內(nèi)沒有完成購物車中(諸)物品的購買。作為模式的另一個(gè)例子,“ATM欺騙”的模式描述可以將一系列自動(dòng)柜員機(jī)(ATM)交易定義為(1)第一次嘗試用顧客的ATM卡在地點(diǎn)A進(jìn)行ATM交易,以及(2)在第一次嘗試的十分鐘之內(nèi),第二次嘗試用同一張卡在不同的地點(diǎn)B進(jìn)行另一ATM交易。模式描述的另一個(gè)例子是在五金店識(shí)別“盜竊或入店行竊”。例如,五金店中的諸物品計(jì)算可以用包含諸如物品號(hào)碼、物品序列號(hào)、每單位價(jià)格、或物品的其他計(jì)量信息等的與這些物品有關(guān)的信息的射頻識(shí)別(RFID)標(biāo)簽進(jìn)行標(biāo)記。在結(jié)帳柜臺(tái)處的RFID標(biāo)簽讀取器發(fā)射無線信號(hào)來掃描五金店的RFID標(biāo)簽的出現(xiàn),以注冊被顧客購買的物品。在五金店出口也安放另一個(gè)RFID標(biāo)簽讀取器,以便在物品離開商店時(shí)對(duì)其進(jìn)行監(jiān)控。這種情況中一種值得關(guān)注的模式是,五金店的系統(tǒng)指示,在出口處的RFID標(biāo)簽讀取器掃描到一個(gè)物品的RFID標(biāo)簽顯示該標(biāo)簽尚未在結(jié)帳柜臺(tái)被掃描過。這一模式(即,沒有進(jìn)行結(jié)帳掃描)可指示可能的盜竊或入店行竊。又一個(gè)模式描述例子可以由如下的“黑客攻擊”模式來例示,其中(1)記錄到一個(gè)成功的虛擬專用網(wǎng)絡(luò)(VPN)登錄會(huì)話,(2)沒有記錄到登錄到域的嘗試,并且(3)記錄到失敗或成功的使用同一IP地址借助于Telnet登錄的嘗試。這樣的事件模式指示,該域受到黑客攻擊,或者某人正在試圖訪問該域而沒有使用必需的客戶端組件。根據(jù)本發(fā)明的一個(gè)實(shí)施例,每個(gè)事件模式可以被分解為表1中所例示的若干信息片段表1模式描述的示例本發(fā)明的諸實(shí)施例不是在與事件有關(guān)的數(shù)據(jù)被存儲(chǔ)到數(shù)據(jù)倉庫之后再對(duì)其進(jìn)行分析,而是觀察或監(jiān)視事件流并實(shí)時(shí)評(píng)估事件以確定那些指示有意義或有用信息的模式。再一次參見圖1,為達(dá)到這一目的,系統(tǒng)100包括一將模式描述編譯為一組小腳本的腳本組件,其中每個(gè)腳本描述對(duì)這些事件104中可能發(fā)生的個(gè)體事件類型的反應(yīng)。該腳本包括用于指示如何處理特定事件以找到模式描述中的下一事件的可執(zhí)行代碼、表達(dá)式、例程、函數(shù)、條件或算法。該腳本將下一事件的參數(shù)定義為該特定事件的參數(shù)的函數(shù)。表2示出在該腳本中所包括的操作的示例。表2腳本中的示例性操作?;氐綀D1,帶有關(guān)聯(lián)或附連的腳本108的諸事件被轉(zhuǎn)發(fā)給多個(gè)模式識(shí)別引擎112以供執(zhí)行。例如,如表2所例示,事件104中的每一個(gè)的關(guān)聯(lián)腳本包括各種操作以及執(zhí)行該腳本的模式識(shí)別引擎112。在一個(gè)例子中,模式識(shí)別引擎112-1、112-2、112-3和112-N是模式識(shí)別引擎112的個(gè)體實(shí)例。圖2A-2F是例示根據(jù)本發(fā)明的一個(gè)實(shí)施例的在執(zhí)行與事件104關(guān)聯(lián)的腳本進(jìn)程中模式識(shí)別引擎112的實(shí)例的圖示。圖2A是例示事件202、腳本210和模式識(shí)別引擎(PRE)218間交互的圖示。事件202包括與事件類型204、事件時(shí)間206和事件內(nèi)容208有關(guān)的參數(shù)。例如,作為在線錢包商店的例子中的典型事件,用戶登錄事件可能顯示事件類型204為“登錄”,事件時(shí)間206為“上午10:00”,以及事件內(nèi)容208為“城市=西雅圖;州=華盛頓”。在ATM交易的例子中,事件類型204可以顯示“取款”,事件時(shí)間206為“下午9:55”,以及事件內(nèi)容208為“商店0994”。在一個(gè)實(shí)施例中,每一事件202還可包括事件202的其他和附加參數(shù)數(shù)據(jù)。腳本210包括供模式識(shí)別引擎112根據(jù)模式描述處理的一個(gè)或多個(gè)操作。例如,腳本210包括諸如下一事件條件212和數(shù)據(jù)積累邏輯214等部分。如表2所例示,附連或關(guān)聯(lián)于每一事件202的腳本指示該如何根據(jù)模式描述處理后續(xù)事件(將在圖2B-2F中進(jìn)一步詳細(xì)討論。)。在圖2A中還示出,PRE218的一個(gè)實(shí)例是執(zhí)行腳本210的通用腳本解釋器,并包含針對(duì)個(gè)體模式實(shí)例的識(shí)別狀態(tài)。例如,PRE218可以是系統(tǒng)100中的可執(zhí)行模塊,它實(shí)施腳本210的執(zhí)行以使得PRE218在進(jìn)程事件句柄216處接收到腳本210,在模式事件期望220處理下一事件條件,存儲(chǔ)模式實(shí)例數(shù)據(jù)222,并且根據(jù)腳本210在“Status(狀態(tài))”224、“Wakeup(蘇醒)”226、“JoinEvents(聯(lián)合事件)”228和“GetData(獲取數(shù)據(jù))”230處曝露諸屬性。例如,在線購物車的例子中,在“登錄”事件之后,PRE218執(zhí)行腳本并把狀態(tài)224更新為“等待”(即,等待后續(xù)事件)。PRE218還輸出“Wakeup”226的時(shí)間10:05:20以監(jiān)視狀態(tài)224?!癑oinEvents”或“GetHash(獲取散列)”228描述在后續(xù)事件中需要被相關(guān)的參數(shù)數(shù)據(jù),并且“GetData”230允許外部環(huán)境檢索迄今所積累的數(shù)據(jù)。為了允許支持時(shí)間限制和基于事件未發(fā)生的模式,PRE還曝露方法217“OnWakeup(在蘇醒之際)”,該方法能以類似于合并新事件那樣的方式改變狀態(tài)。換句話說,PRE218可以是實(shí)施根據(jù)模式描述解釋和執(zhí)行可能包括一個(gè)或多個(gè)操作或例程的腳本210的計(jì)算機(jī)可執(zhí)行指令集。因而,本發(fā)明的諸實(shí)施例通過腳本210和PRE218的實(shí)現(xiàn),在適應(yīng)處理事件并評(píng)估不同條件和參數(shù)的模式方面是通用的,因?yàn)镻RE218依賴于外部環(huán)境(例如,腳本210和事件202)來處理有關(guān)事件202和腳本210。本發(fā)明的諸實(shí)施例的優(yōu)點(diǎn)至少消除了針對(duì)不同用戶和不同事件定制代碼或模式處理的需要,因?yàn)闊o論每個(gè)用戶所感興趣的事件類型或模式類型是什么,系統(tǒng)100均編譯模式描述、關(guān)聯(lián)滿足每個(gè)用戶需求的腳本,這樣PRE218的實(shí)例可以執(zhí)行腳本來確定模式的發(fā)生。在一個(gè)實(shí)施例中,包括計(jì)算機(jī)、計(jì)算系統(tǒng)、服務(wù)器、多個(gè)服務(wù)器或其他目動(dòng)化事件接收進(jìn)程或應(yīng)用程序的主機(jī)環(huán)境提供模式描述和/或每個(gè)事件的腳本。另一個(gè)實(shí)施例中,PRE218可以被實(shí)現(xiàn)為可以被實(shí)現(xiàn)為用戶數(shù)據(jù)類型(UDT)的小C#類編程語言或是其他編程語言、模型等等。小C#類可以負(fù)責(zé)保持模式的一個(gè)個(gè)體實(shí)例的識(shí)別的狀態(tài)。該狀態(tài)可以根據(jù)腳本210包括所期望的事件和超時(shí)、以及從諸事件積累的數(shù)據(jù)、或者其他數(shù)據(jù)。在此實(shí)施例中,事件202可以被傳遞給PRE218,它也是包含事件類型、事件發(fā)生的時(shí)間戳(例如,來自它在其中發(fā)生的機(jī)器),以及與事件202的內(nèi)容有關(guān)的一些數(shù)據(jù)的小C#類(UDT)。在本發(fā)明的實(shí)施例的一種實(shí)現(xiàn)中,事件202通過例程OnEvent被傳遞給PRE218。作為例示,在圖2B-2F中描述了“放棄購物車”模式。圖2B例示借助于把模式定義為一系列事件E1-E2-E3-E4的模式描述250來評(píng)估該模式,其中E1代表“Login(登錄)”,E2代表“ItemAdded(物品已被添加)”,E3代表“Checkout(結(jié)帳)”,并且E4代表事件“Pay(支付)”不發(fā)生。如果存在包含這四個(gè)事件的一系列事件,則該系列可以指示用戶已經(jīng)放棄了她的購物車。事件源248示出事件EV1、EV2、EV3目前正在等待被處理。最初,事件EV1232指示它是具有事件時(shí)間“10:00:00”和事件內(nèi)容數(shù)據(jù)“SessionID=589043543”、“州=華盛頓”和“城市=雷蒙德”的事件類型“登錄”。附連到事件EV1232的腳本包括以下用于處理事件EV1232的操作(a)事件類型“ItemAdded”被期望在五分鐘之內(nèi)發(fā)生,(b)基于“SessionID”將這一事件與事件類型“ItemAdded”相關(guān),以及(c)設(shè)置由事件EV1232提供的數(shù)據(jù)。事件EV1232被傳遞給執(zhí)行被附連到事件EV1232的腳本的PRE234。例如,在執(zhí)行該腳本之后,PRE234指示事件類型“ItemAdded”需要在事件時(shí)間“10:05:20”之前發(fā)生。PRE234還需要將EV1的“SessionID”數(shù)據(jù)與“ItemAdded”事件相關(guān),以使得它們屬于同一系列(即,同一用戶和給定登錄會(huì)話)。換句話說,事件EV1的腳本根據(jù)模式描述將下一事件或所期望事件的類型、時(shí)間和內(nèi)容參數(shù)定義為事件EV1諸參數(shù)的函數(shù)。應(yīng)該理解,可以使用諸事件中的其他識(shí)別數(shù)據(jù)以便在腳本執(zhí)行期間將諸事件中的數(shù)據(jù)相關(guān)。在一個(gè)實(shí)施例中,事件EV1的“Login”腳本是一個(gè)激活事件,這表明它是一系列中的第一事件。因而,由PRE234進(jìn)行的腳本執(zhí)行的快照252顯示事件EV1232是系列A中的第一事件,因?yàn)镋V1是所定義模式中的第一個(gè)(例如,“Login”事件)。并且,系列A的狀態(tài)為“Waiting(等待)”,因?yàn)樵撃_本指示事件“ItemAdded”被期望由同一用戶在同一SessionID下發(fā)生。替換地,如果事件“ItemAdded”在EV1腳本所要求的時(shí)間里沒有發(fā)生,則系列A被丟棄,因?yàn)槭录辉倨ヅ渌x的模式描述。亦即,腳本中的操作“WakeUp”指示PRE234將更新系列A的狀態(tài)以確定所期望的事件是否已經(jīng)發(fā)生。在PRE234上調(diào)用的GetHash(0)現(xiàn)在將會(huì)返回該SessionID的散列?,F(xiàn)在參見圖2C,從事件源248接收到新的事件EV2236,事件類型是具有事件時(shí)間“10:00:20”的“ItemAdded”,并且“SessionID”也是589043543。由于事件EV2的參數(shù)數(shù)據(jù)對(duì)應(yīng)于事件EV1的腳本所定義的期望事件,因此確定事件EV2與事件EV1屬于同一系列A。例如,在確定事件EV2與事件EV1屬于同一系列A時(shí),可以通過基于散列查找合適的PRE實(shí)例234并用“ItemAdded”的腳本調(diào)用PRE的該實(shí)例234′來達(dá)成,如果不是完全匹配,則PRE234′將忽略事件EV2。這里,模式識(shí)別處理的快照258顯示在事件EV2屬于系列A時(shí)發(fā)生什么事。在這種情形中,與事件EV2關(guān)聯(lián)的腳本定義下一事件或期望事件,并且PRE234′據(jù)此執(zhí)行該腳本。例如,事件EV2的腳本指示另一“ItemAdded”事件可在接下來5分鐘內(nèi)發(fā)生;結(jié)帳時(shí)間待定,并且SessionID被用來將數(shù)據(jù)和下一事件相關(guān)。在執(zhí)行之后,PRE234′顯示系列A中的下一事件的參數(shù)數(shù)據(jù)。例如,另一“ItemAdded”事件可以在“10:05:20”之前發(fā)生(即是說,10:00:20+5分鐘),并且如果“Checkout”事件在10:05:20之前沒有發(fā)生,則根據(jù)該模式描述,系列A就不匹配“放棄購物車”模式?,F(xiàn)在參見圖2D,從事件源248接收到具有下列參數(shù)數(shù)據(jù)事件類型“Login”,事件時(shí)間“10:02:31”,以及“SessionID”589077625的新事件EV3240,。在一個(gè)例子中,“Login”的腳本指示這是一個(gè)激活事件,確定EV3240將啟動(dòng)新的系列B,因?yàn)樵揝essionID不匹配事件EV1232的和EV2236的SessionID。由此,快照260指示事件EV3是系列B的第一事件。并且注意到,事件EV3的腳本定義下一事件(例如,“ItemAdded”要在10:07:31之前發(fā)生,等等),且由PRE242的新實(shí)例執(zhí)行事件EV3240的腳本。接下來參見圖2E,收到具有事件類型“Checkout”、事件時(shí)間“10:02:40”和SessionID589043543的另一事件EV4256。此事件EV4256的參數(shù)數(shù)據(jù)匹配事件EV3240的腳本所定義的參數(shù)數(shù)據(jù)。由此,快照262顯示事件EV4屬于系列A且它是系列A中的第三事件。事件EV4256的腳本指示,期望在未來五分鐘內(nèi)沒有“Pay”事件。由此,PRE234″執(zhí)行事件EV4256的腳本并指示“Pay”事件不應(yīng)在“10:07:40”之前發(fā)生。否則,系列A的狀態(tài)就被設(shè)置為指示系列A不匹配“放棄購物車”的模式。參見圖2F,為“Pay”設(shè)置的超時(shí)導(dǎo)致經(jīng)由WakeupTime(蘇醒時(shí)間)屬性曝露時(shí)間“10:07:40”。另外,PRE234′″記得,如果這一超時(shí)發(fā)生,則新的狀態(tài)應(yīng)該是“Match(匹配)”,因?yàn)椴辉倨谕撃J接懈嗍录?。例如,管理大量PRE實(shí)例的主機(jī)環(huán)境(例如,主機(jī)環(huán)境114)可以基于WakeupTime保存分類列表或索引。索引可以被用于查找需要被喚醒的所有實(shí)例。例如,在10:08,可以確定需要調(diào)用PRE實(shí)例234′″的方法OnWakeup需要被調(diào)用。當(dāng)這一情況發(fā)生時(shí),PRE實(shí)例234′″將其狀態(tài)設(shè)置為“Match”,這向主機(jī)環(huán)境指示“放棄購物車”模式得到匹配。在一個(gè)實(shí)施例中,PRE234′″向主機(jī)環(huán)境曝露事件系列的狀態(tài)以及與該模式有關(guān)的數(shù)據(jù),供分析該事件系列和該模式之用。作為例子,這樣的主機(jī)環(huán)境可以保存基于GetHash()的Hashtable(散列表)以及基于WakeupTime的分類列表,這兩者均指向PRE實(shí)例組。這種內(nèi)存中(in-memory)主機(jī)環(huán)境可以將匹配模式作為輸出事件來輸出。內(nèi)存中主機(jī)環(huán)境在其諸如易失性、非易失性或易失性和非易失性存儲(chǔ)器的組合等的存儲(chǔ)中保存引擎的多個(gè)實(shí)例,并且將傳入事件和腳本操作(例如,wakeup通知)投遞給適當(dāng)?shù)囊鎸?shí)例。內(nèi)存中主機(jī)環(huán)境還丟棄無關(guān)事件和/或具有“NoMatch(不匹配)”狀態(tài)的PRE234。在基于文件的主機(jī)環(huán)境中,可以通過在文件集合或一個(gè)文件中串行化PRE234的所有實(shí)例來組織事件系列的參數(shù)數(shù)據(jù)和與模式有關(guān)的數(shù)據(jù),以允許在主機(jī)環(huán)境、PRE234或其組合崩潰的情形中恢復(fù)所積累的狀態(tài)。主機(jī)環(huán)境的另一種實(shí)現(xiàn)可以是基于SQL的主機(jī)環(huán)境,該主機(jī)環(huán)境將PRE234實(shí)現(xiàn)為UDT(用戶數(shù)據(jù)類型——SQL2005的新特征),從而使用PRE234可訪問屬性的索引將腳本操作(例如,超時(shí)通知)和大量輸入事件高效地投遞給PRE234的大量等待中的實(shí)例。通過將某些或全部數(shù)據(jù)從PRE234提升到諸SQL列中,基于SQL的主機(jī)環(huán)境可以包括傳入事件或事件流的數(shù)據(jù)視圖,以使得事件成分的所有實(shí)例都是可視的,并且可以作為表來被查詢(將在圖3中討論)。在另一個(gè)例子中,存儲(chǔ)匹配的模式事件的表或數(shù)據(jù)結(jié)構(gòu)可以被分割。應(yīng)該理解,可以評(píng)估并識(shí)別其他模式以滿足用戶的興趣,并且可以使用本發(fā)明諸實(shí)施例的更多例子或應(yīng)用而不會(huì)脫離本發(fā)明的范圍?,F(xiàn)在參見圖3,圖示例示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于存儲(chǔ)與模式有關(guān)的數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)312。事件數(shù)據(jù)結(jié)構(gòu)將諸事件存儲(chǔ)在表302中。腳本操作表304包括模式描述,該模式描述帶有針對(duì)每一待識(shí)別事件的腳本操作。在一種實(shí)現(xiàn)中,諸事件作為UDT被存儲(chǔ)在表302中。表302可以包括對(duì)應(yīng)于“事件類型”和“針對(duì)聯(lián)合事件的聯(lián)合準(zhǔn)則的散列”的列。例如,對(duì)于在線購物事件,事件類型可以是“Login”、“Checkout”、“ItemAdded”等等,并且散列可以基于SessionID。在一個(gè)實(shí)施例中,表302中的列能以被集群的索引的形式被包括,以使計(jì)算系統(tǒng)(如圖7的計(jì)算機(jī)130)存儲(chǔ)器盤扇區(qū)中該表的物理存儲(chǔ)最優(yōu)化。將新的模式類型部署到這樣的主機(jī)環(huán)境中可以通過將包含這些事件類型中的每一種要執(zhí)行的操作的腳本的行插入到表304中來達(dá)成。最初,表302可以是空的,并且隨著從事件流或事件源104接收到一個(gè)或多個(gè)事件,表302的諸行開始填充與這些事件有關(guān)的數(shù)據(jù)。事件表302和腳本操作表304與諸模式在其中被評(píng)估并識(shí)別的模式表312相關(guān)。模式表312包括從事件表302、腳本操作表304推導(dǎo)出的信息,以及來自PRE的已執(zhí)行腳本信息。在模式表312的一種實(shí)現(xiàn)中,SQL語句可以將模式表312定義為createtablePatterns(PatternTypenvarchar(256),HashasPRE.GetHash(0)persisted,--從PRE提升PREasPatternRecognitionEngine,--這是之前注冊的UDTStatusasPRE.Statuspersisted,--從PRE提升WakeupasPRE.Wakeuppersisted--從PRE提升)在一個(gè)實(shí)施例中,模式表312被按模式類型306分類并組織。例如,如模式表312中所示,模式P1被索引在模式P2之上。表中還例示,模式P1包括一個(gè)或多個(gè)模式實(shí)例(如模式P1中的諸行所示),其中每個(gè)模式實(shí)例的每一行指示該模式正在等待或期望更多的事件。除了模式類型的索引或分類之外,本發(fā)明的一個(gè)實(shí)施例通過索引狀態(tài)列308和蘇醒列310來組織模式表。因此,當(dāng)在事件表302和相應(yīng)的腳本操作表304中創(chuàng)建新事件行時(shí),PRE的諸實(shí)例根據(jù)腳本操作表304執(zhí)行腳本以識(shí)別出待評(píng)估的一系列模式事件中的后續(xù)事件。由此,本發(fā)明的諸實(shí)施例實(shí)現(xiàn)一種算法以獨(dú)立地并行識(shí)別的每個(gè)模式。換句話說,PRE的一個(gè)實(shí)例可以執(zhí)行與事件關(guān)聯(lián)的腳本以評(píng)估模式P1的腳本,而PRE的另一個(gè)實(shí)例可以執(zhí)行與事件關(guān)聯(lián)的腳本以評(píng)估模式P2。附錄B例示該算法的示例性實(shí)現(xiàn),圖6A和6B例示自該算法得到的示例性方法。圖4是例示根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于組織圖3中所存儲(chǔ)數(shù)據(jù)以供查詢的數(shù)據(jù)結(jié)構(gòu)的圖示。模式表402包括作為評(píng)估模式事件的結(jié)果的模式集合。例如,集合408包括從諸PRE實(shí)例收集或提取的參數(shù)數(shù)據(jù),諸如“Login”、“Checkout”等等。模式表402進(jìn)一步包括與PRE的執(zhí)行有關(guān)的信息。在一個(gè)實(shí)施例中,模式表402中的匹配模式被移動(dòng)到單獨(dú)的匹配模式表404。由此,匹配模式表404可以被高效地搜索或查詢以進(jìn)一步評(píng)估或補(bǔ)救在線錢包商店的交易。圖5描述例示根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于在一系列事件中識(shí)別模式的服務(wù)器集合的圖示。多個(gè)收集計(jì)算機(jī)502將相關(guān)事件收集為一系列模式事件。例如,設(shè)想在線錢包商店使用數(shù)個(gè)前端服務(wù)器來收集來自用戶與在線web網(wǎng)站的交互的數(shù)據(jù)。這些前端服務(wù)器是用于收集諸如用戶登錄會(huì)話、將物品放進(jìn)用戶購物車中等的事件的諸收集計(jì)算機(jī)502的一部分。收集計(jì)算機(jī)502中的每一個(gè)都可以實(shí)現(xiàn)模式描述,將腳本關(guān)聯(lián)到這些事件中的每一個(gè)以及使用PRE執(zhí)行該腳本,如圖1和2A-2F所描述。第一組計(jì)算機(jī)504接下來在所收集的每一系列中識(shí)別該模式的第一部分。所收集的系列中的每一個(gè)與該系列模式事件的第一部分進(jìn)行匹配。例如,計(jì)算機(jī)512可以被配置成評(píng)估模式(P1、P2和P3),而計(jì)算機(jī)514可以被配置成評(píng)估或識(shí)別模式(P4和P5)。這些模式P1-P5可以被第二組計(jì)算機(jī)506視為事件。因此,第二組計(jì)算機(jī)506接收這些事件(即,來自第一組504的模式P1-P5)以在每一系列中識(shí)別該模式的第二部分。由此,由第一組504識(shí)別的模式第一部分和由第二組506識(shí)別的模式第二個(gè)部分被積累并存儲(chǔ)以供評(píng)估之用。換句話說,第一組504可以被視為或被當(dāng)作第二組506的收集計(jì)算機(jī)。如圖5所示,第二組506的計(jì)算機(jī)516將來自第一組的兩臺(tái)計(jì)算機(jī)512和514的作為事件接收。另一方面,第二組506中的計(jì)算機(jī)518接收將來自第一組504的計(jì)算機(jī)514和來自多個(gè)收集計(jì)算機(jī)502中的計(jì)算機(jī)520的作為事件接收。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,所描述的一個(gè)或多個(gè)主機(jī)環(huán)境可以是用于事件流的模式匹配的分布式基礎(chǔ)結(jié)構(gòu)的一部分,從而某些節(jié)點(diǎn)(例如,主機(jī)環(huán)境)可能是主機(jī)環(huán)境的內(nèi)存中成分,某些可能是基于文件的,而其他可能是基于SQL的主機(jī)環(huán)境。另外可能存在某些其他處理在各成分之間的事件流上執(zhí)行的情景。這類處理的例子可以包括在事件流上執(zhí)行用戶代碼、商務(wù)規(guī)則、或交易。當(dāng)匹配模式被第一組504和第二組506的計(jì)算機(jī)評(píng)估時(shí),來自匹配模式的數(shù)據(jù)和/或模式事件的參數(shù)數(shù)據(jù)可以被輸出到主機(jī)環(huán)境508(例如,基于SQL的主機(jī)環(huán)境)或工作流程商務(wù)進(jìn)程分析主機(jī)環(huán)境,以進(jìn)一步處理匹配模式?,F(xiàn)在參見圖6A和6B,這些流程圖例示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的由一主機(jī)環(huán)境實(shí)現(xiàn)的用于在一系列事件中識(shí)別模式的方法。在一個(gè)實(shí)施例中,附錄A中的示例性算法描述在一系列事件中識(shí)別模式的一種實(shí)現(xiàn)。最初,當(dāng)在602接收到新事件時(shí),在604立刻或幾乎立刻基于事件類型將其與一腳本關(guān)聯(lián)起來。在606,可以采用不同路徑來確定該事件是否應(yīng)該激活一個(gè)新系列。例如,如圖2A-2F中所描述,“Login”事件是一激活事件,因?yàn)樗窃撓盗兄械牡谝皇录?。如果該事件是激活事件,則一新的系列在608被創(chuàng)建并在610被添加到正在等待事件的這組系列中。例如,在內(nèi)存中主機(jī)環(huán)境中,這可以是在wakeup時(shí)間創(chuàng)建一個(gè)新的PRE實(shí)例并將其注冊在散列表和分類列表中。在實(shí)現(xiàn)基于SQL的主機(jī)環(huán)境的另一實(shí)施例中,該基于SQL的主機(jī)環(huán)境可以將PRE實(shí)例作為UDT插入模式表中。它接下來進(jìn)而在602接收一個(gè)或多個(gè)事件。如果該腳本不是激活腳本,則可能對(duì)這一事件感興趣的系列將在612被處理。例如,這可以通過用附連腳本首先調(diào)用PRE實(shí)例的OnEvent方法并傳遞該傳入事件來達(dá)成。在614,通過評(píng)估該模式描述,PRE執(zhí)行接下來兩個(gè)操作。重要的是要注意,散列值的匹配并不必然意味著滿足相關(guān)條件。例如,設(shè)想散列對(duì)應(yīng)于如社會(huì)保障號(hào)或名字等的將被用于根據(jù)模式描述進(jìn)行的相關(guān)的某個(gè)串。由此,PRE對(duì)照迄今在該系列中所積累的傳入事件和狀態(tài)的數(shù)據(jù)來計(jì)算實(shí)際的模式描述。如果模式描述的評(píng)估是否定的,那么該系列忽略該事件。如果評(píng)估是肯定的,則在616,該事件被合并到PRE中。作為將事件與所積累的狀態(tài)合并的結(jié)果,PRE實(shí)例的狀態(tài)可以被改變或更新。例如,如果接收到對(duì)應(yīng)于給定會(huì)話ID的“Pay”事件,則狀態(tài)變?yōu)椤癗oMatch”。在618,基于該狀態(tài),主機(jī)環(huán)境決定該對(duì)這一系列做什么。在620,如果該狀態(tài)是“Match”(例如,一個(gè)事件系列匹配一個(gè)模式),則該系列被認(rèn)為是成功完成,并且可以將該系列從這組等待實(shí)例中移除,并且所積累的數(shù)據(jù)被作為復(fù)合事件發(fā)送。替換地,可以將匹配的系列保存在如圖4所例示的另一個(gè)表中以供查詢和分析。在622,如果該狀態(tài)是“NoMatch”,則可以丟棄或忽略該系列。在624,如果該狀態(tài)是“Waiting(等待)”,則通過前進(jìn)到602,來留下該系列以等待更多事件。在本發(fā)明的另一實(shí)施例中,事件可以不必與任何現(xiàn)有系列合并或開始一個(gè)新系列,而是可以在616之前創(chuàng)建該系列的拷貝或克隆。由此,該系列的相關(guān)或后續(xù)事件兩者以及所克隆的副本被處理。作為例示,設(shè)想模式描述P1定義以下三個(gè)事件事件A、B和C,其中事件A的x值等于事件B的x值,而事件B的y值等于事件C的y值。在識(shí)別事件A-B-C時(shí),最初,接收到事件ev1,其中x值為1而沒有y值。基于該模式描述,事件ev1是一個(gè)激活事件,因?yàn)樗话▁值而沒有y值。由此,事件ev1啟動(dòng)新模式系列S1,第二事件ev2被接收到,并且包括x值1和y值2。因?yàn)槭录v1和ev2的x值是相同的,所以模式系列S1會(huì)將事件ev2識(shí)別為模式P1中的一個(gè)事件。另一方面,如果存在包括x值1和y值3的傳入事件ev3,則模式系列S1會(huì)忽略事件ev3,因?yàn)樗皇窍嚓P(guān)的或后續(xù)的事件,即具有和B(即,ev2)的y值相等的y值的事件C。有利地,在這一實(shí)施例中,本發(fā)明克隆或拷貝包括事件ev1的系列S1以使得存在該系列的兩個(gè)拷貝一個(gè)拷貝是系列S1的原始拷貝,而另一個(gè)拷貝將在新系列S2中被使用。由此,系列S1將具有該系列中的事件ev1。另一方面,新的系列S2具有事件ev1和ev2。借助于這一實(shí)現(xiàn),當(dāng)接收到傳入事件ev3時(shí),系列S1和S2兩者都將會(huì)評(píng)估并識(shí)別事件ev3是否可以匹配模式P1。系列S1會(huì)包括事件ev3,因?yàn)槭录v3的x值和ev1的x值相等。然而,系列S2會(huì)忽略事件ev3,因?yàn)槭录v3的y值不等于事件ev2的y值。接下來,假定接收到只具有y值3的新事件ev4。在這一情況中,系列S1和S2將會(huì)評(píng)估該模式描述。借助于克隆或拷貝的系列,系列S1將事件ev4識(shí)別為事件C,由此存在匹配模式。另一方面,系列S2不將事件ev4識(shí)別為事件C。如果不存在克隆的系列S1或克隆的事件ev1,則模式將不會(huì)被匹配,因?yàn)槭录v2(B(x=1,y=2))會(huì)被原始系列S1識(shí)別,并且事件ev3會(huì)被原始系列S1忽略,因?yàn)楦鶕?jù)該模式描述,它將只期望事件C。這一克隆是必需的,因?yàn)槲磥砜赡馨l(fā)生另一更加相關(guān)的匹配。根據(jù)上述實(shí)施例,模式描述的編譯以及事件腳本的附連確定是否可以發(fā)生現(xiàn)有系列的復(fù)制。例如,當(dāng)該系列在等待諸如購物車?yán)拥氖录癙ay”等事件的不發(fā)生時(shí),這一事件類型必須直接與不克隆合并,因?yàn)槟J矫枋鰧⒔Y(jié)束該系列。另一方面,如果我們正在合并一些與事件C有額外關(guān)系或條件的事件,如上述事件B,則模式描述會(huì)要求克隆該系列,因?yàn)樗赡芤靡粋€(gè)系列來識(shí)別該模式。在一系列事件正在等待事件發(fā)生的另一個(gè)實(shí)施例中,也可以基于計(jì)時(shí)器來修改該等待系列,如圖6B所例示。例如,在650,由計(jì)時(shí)器通過保持來自事件源的最后事件的時(shí)間戳來計(jì)算時(shí)間周期。替換地,事件源可以在固定間隔上發(fā)送信號(hào),這將會(huì)引起附錄A或附錄B中所描述的算法的執(zhí)行。在652,對(duì)于正在等待較遲事件的每個(gè)系列(即是說,Wakeup時(shí)間<當(dāng)前時(shí)間),(例如,“Login”事件正在等待“ItemAdded”事件),每個(gè)PRE實(shí)例的OnWakeup的操作在654被執(zhí)行。結(jié)果,這導(dǎo)致在656改變PRE實(shí)例的PRE狀態(tài)。在“放棄購物車”的例子中,假定PRE實(shí)例期望在5分鐘內(nèi)接收到一個(gè)“Pay”事件。當(dāng)在5分鐘內(nèi)沒有接收到該“Pay”事件時(shí),執(zhí)行OnWakeup操作,并且PRE實(shí)例的狀態(tài)被改變?yōu)椤癕atch”(即,在線顧客已經(jīng)放棄購物車)。在658,主機(jī)環(huán)境存儲(chǔ)或輸出匹配模式,而在660,主機(jī)環(huán)境可以丟棄該系列。該方法將會(huì)在652評(píng)估下一等待系列或在662結(jié)束。重要的是應(yīng)注意,在圖6A和6B中所例示的方法以及在附錄A中所描述的相應(yīng)算法是示例性的,并且能以任意次序?qū)崿F(xiàn)。例如,當(dāng)在基于SQL的主機(jī)環(huán)境中使用PRE時(shí),數(shù)以百萬計(jì)的實(shí)例可能受到單個(gè)操作(例如,更新操作)的影響,在這期間PRE的每個(gè)實(shí)例都可以與其他PRE實(shí)例并行執(zhí)行。圖7以計(jì)算機(jī)130的形式例示了通用計(jì)算設(shè)備的一個(gè)例子。在本發(fā)明的一個(gè)實(shí)施例中,諸如計(jì)算機(jī)130的計(jì)算機(jī)適合在本文中例示并描述的其他圖中使用。計(jì)算機(jī)130有一個(gè)或多個(gè)的處理器或處理單元132以及一個(gè)系統(tǒng)存儲(chǔ)器134。在所例示的實(shí)施例中,系統(tǒng)總線136把包括系統(tǒng)存儲(chǔ)器134在內(nèi)的各種系統(tǒng)元件耦合到處理器132??偩€136代表多種類型的總線結(jié)構(gòu)中的任何一個(gè)或多種,包括內(nèi)存總線或內(nèi)存控制器、外圍總線、加速圖形端口,以及處理器或使用各種總線體系結(jié)構(gòu)中的任何一種體系結(jié)構(gòu)的局部總線。作為例子而非限制,這樣的體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MCA)總線,增強(qiáng)ISA(EISA)總線,視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線和也稱為Mezzanine總線的外圍部件互連(PCI)總線。計(jì)算機(jī)130通常具有至少某種形式的計(jì)算機(jī)可讀介質(zhì)。包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)在內(nèi)的計(jì)算機(jī)可讀介質(zhì)可以是能由計(jì)算機(jī)130訪問的任何可用介質(zhì)。作為例子而非限制,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括用存儲(chǔ)信息如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)的介質(zhì)。例如,計(jì)算機(jī)存儲(chǔ)介質(zhì)包括RAM、ROM、EEPROM、閃存或其他存儲(chǔ)技術(shù)、CD-ROM、數(shù)字通用盤(DVD)或其他光盤存儲(chǔ)器、盒式磁帶、磁帶、磁盤存儲(chǔ)器或其他磁性存儲(chǔ)設(shè)備、或可以被用來存儲(chǔ)所需信息并可以被計(jì)算機(jī)130訪問的任何其他介質(zhì)。通信介質(zhì)一般以諸如載波等的已調(diào)制的數(shù)據(jù)信號(hào)或者其它傳輸機(jī)制的形式包含計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任意信息傳遞介質(zhì)。在本領(lǐng)域的技術(shù)人員熟悉已調(diào)制的數(shù)據(jù)信號(hào),它以在該信號(hào)中以編碼信息的方式來設(shè)置或改變其一個(gè)或多個(gè)特征。諸如有線網(wǎng)絡(luò)或直接有線連接等的有線介質(zhì),以及諸如聲音、射頻、紅外和其他無線介質(zhì)等的無線介質(zhì)都是通信介質(zhì)的例子。以上任何一個(gè)的組合也被包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。系統(tǒng)存儲(chǔ)器134包括可移動(dòng)和/或不可移動(dòng)、易失性和/或非易失性形式的計(jì)算機(jī)存儲(chǔ)介質(zhì)。在所例示的實(shí)施例中,系統(tǒng)存儲(chǔ)器134包括只讀存儲(chǔ)器(ROM)138和隨機(jī)存取存儲(chǔ)器(RAM)140。包含幫助在諸如啟動(dòng)期間在計(jì)算機(jī)130內(nèi)的各個(gè)元件之間傳送信息的基本例程的基本輸入/輸出系統(tǒng)142(BIOS)通常被存儲(chǔ)在ROM138中。RAM140通常包含處理單元132可立即訪問和/或目前正在操作的數(shù)據(jù)和/或程序模塊。作為例子而非限制,圖7例示了操作系統(tǒng)144、應(yīng)用程序146、其他程序模塊148以及程序數(shù)據(jù)150。計(jì)算機(jī)130也可以包括其他可移動(dòng)/不可移動(dòng)、易失性/非易失性的計(jì)算機(jī)存儲(chǔ)介質(zhì)。例如,圖7例示了從不可移動(dòng)非易失性介質(zhì)讀取或向其寫入的硬盤驅(qū)動(dòng)器154。圖7還示出了從可移動(dòng)非易失性磁盤158讀取或向其中寫入的磁盤驅(qū)動(dòng)器156,以及從諸如CD-ROM或其他光學(xué)介質(zhì)等的可移動(dòng)的非易失性光盤162讀取或向其中寫入的光盤驅(qū)動(dòng)器160??梢栽谠撌纠圆僮鳝h(huán)境中使用的其他可移動(dòng)/不可移動(dòng)、易失性/非易失性的計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字通用盤、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動(dòng)器154、磁盤驅(qū)動(dòng)器156和光盤驅(qū)動(dòng)器160通常通過諸如接口166等的非易失性的存儲(chǔ)接口連接到系統(tǒng)總線136。上面所討論的并且在圖7中所例示的驅(qū)動(dòng)器或其他大容量存儲(chǔ)設(shè)備及其關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)130提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。在圖7中,例如,硬盤驅(qū)動(dòng)器154被例示為存儲(chǔ)了操作系統(tǒng)170、應(yīng)用程序172、其它程序模塊174以及程序數(shù)據(jù)176。注意,這些組件可以等同于或不同于操作系統(tǒng)144、應(yīng)用程序146、其他程序模塊148和程序數(shù)據(jù)150。這里對(duì)操作系統(tǒng)170、應(yīng)用程序172、其他程序模塊174和程序數(shù)據(jù)176給予不同的附圖標(biāo)記以說明至少它們是不同的拷貝。用戶可以通過諸如鍵盤180和定點(diǎn)設(shè)備182(例如,鼠標(biāo)、跟蹤球、筆或觸摸板)等的輸入設(shè)備或用戶界面選擇設(shè)備把命令和信息輸入到計(jì)算機(jī)130中。其他輸入設(shè)備(未示出)可以包括話筒、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其他輸入設(shè)備通過被耦合到系統(tǒng)總線136的用戶輸入接口184連接到處理單元132,但也可以通過諸如并行端口、游戲端口或通用串行總線(USB)等的其他接口和總線結(jié)構(gòu)連接。監(jiān)視器188或其他類型的顯示設(shè)備也通過諸如視頻接口190等的接口連接到系統(tǒng)總線136。除了監(jiān)視器188之外,計(jì)算機(jī)通常包括諸如打印機(jī)和揚(yáng)聲器等可以通過輸出外圍接口(未示出)連接的其他外圍輸出設(shè)備(未示出)。計(jì)算機(jī)130可以使用到諸如遠(yuǎn)程計(jì)算機(jī)194等的一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī)的邏輯連接在連網(wǎng)環(huán)境中工作。遠(yuǎn)程計(jì)算機(jī)194可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或者其它公用網(wǎng)絡(luò)節(jié)點(diǎn),并且一般包括以上關(guān)于計(jì)算機(jī)130描述的元件中的許多或全部。在圖7中所示的邏輯連接包括局域網(wǎng)(LAN)196和廣域網(wǎng)(WAN)198,但還可包括其它網(wǎng)絡(luò)。LAN136和WAN138可以是有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)及其組合等等。這種連網(wǎng)環(huán)境常見于辦公室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和全球的計(jì)算機(jī)網(wǎng)絡(luò)(例如,因特網(wǎng))。當(dāng)計(jì)算機(jī)130在局域網(wǎng)連網(wǎng)環(huán)境中使用時(shí),它通過網(wǎng)絡(luò)接口或適配器186連接到LAN196。當(dāng)計(jì)算機(jī)130在廣域網(wǎng)連網(wǎng)環(huán)境中使用時(shí),它通常包括調(diào)制解調(diào)器178或用于在諸如因特網(wǎng)等的廣域網(wǎng)198上建立通信的其他裝置??梢詢?nèi)置或者外置的調(diào)制解調(diào)器178通過用戶輸入接口184或其他適當(dāng)?shù)臋C(jī)制連接到系統(tǒng)總線136。在連網(wǎng)環(huán)境中,關(guān)于個(gè)人計(jì)算機(jī)130描述的程序模塊或其中的部分可以被存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中(未示出)。作為例子而非限制,圖7例示遠(yuǎn)程應(yīng)用程序192為駐留在存儲(chǔ)器設(shè)備上。所示出的網(wǎng)絡(luò)連接是示例的,并且可以使用在計(jì)算機(jī)之間建立通信連接的其他裝置。一般來講,計(jì)算機(jī)130的數(shù)據(jù)處理器通過在不同時(shí)間存儲(chǔ)在計(jì)算機(jī)的各種計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)中的指令來編程。程序和操作系統(tǒng)通常分布在例如軟盤或CD-ROM上。從那里,它們被安裝或加載到計(jì)算機(jī)的次級(jí)內(nèi)存中。在執(zhí)行時(shí),它們被至少部分地加載到計(jì)算機(jī)的主電子內(nèi)存中。當(dāng)計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)包含用于與微處理器或其他數(shù)據(jù)處理器聯(lián)合實(shí)現(xiàn)下面所描述的步驟的指令或程序時(shí),此處所描述的本發(fā)明包括這些和其他各種類型的此類介質(zhì)。當(dāng)根據(jù)本文所描述的方法和技術(shù)進(jìn)行編程時(shí),本發(fā)明還包括計(jì)算機(jī)本身。出于例示的目的,諸如操作系統(tǒng)等的程序和其他可執(zhí)行的程序組件在此被例示為分立的塊。但是,應(yīng)該認(rèn)識(shí)到,這樣的程序和組件在不同的時(shí)間駐留在計(jì)算機(jī)的不同存儲(chǔ)組件中,并由計(jì)算機(jī)的(諸)數(shù)據(jù)處理器來執(zhí)行。盡管與包括計(jì)算機(jī)130的示例性計(jì)算系統(tǒng)環(huán)境結(jié)合描述,本發(fā)明可與眾多其他通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置一起工作。該計(jì)算系統(tǒng)環(huán)境并非試圖對(duì)本發(fā)明的使用范圍或功能提出任何限制。而且,該計(jì)算系統(tǒng)環(huán)境也不應(yīng)該被解釋為具有與在示例性操作環(huán)境中所例示的組件中的任何一個(gè)或它們的組合有關(guān)的任何依賴或要求。適用于與本發(fā)明一起使用的公知的計(jì)算系統(tǒng)、環(huán)境、和/或配置的例子包含但不限于個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程的消費(fèi)性電子產(chǎn)品、移動(dòng)電話、網(wǎng)絡(luò)PC、微型計(jì)算機(jī)、大型計(jì)算機(jī)以及包括任何以上系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境,等等。本發(fā)明可以在諸如程序模塊等的可由計(jì)算機(jī)或其它設(shè)備執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般化背景中描述。通常,程序模塊包括但不限于執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件和數(shù)據(jù)結(jié)構(gòu)。本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)踐,在這些分布式計(jì)算環(huán)境中,任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備來執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括記憶存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。軟件架構(gòu)的背景中的接口包括軟件模塊、組件、代碼部分或其他計(jì)算機(jī)可執(zhí)行指令序列。該接口包含,例如,訪問代表第一模塊執(zhí)行計(jì)算任務(wù)的第二模塊的第一模塊。在一個(gè)例子中,第一和第二模塊包括諸如由操作系統(tǒng)提供的API接口等的應(yīng)用程序編程接口(API)、組件對(duì)象模型(COM)接口(例如,用于對(duì)等應(yīng)用程序通信的COM接口)、以及可擴(kuò)展標(biāo)記語言元數(shù)據(jù)互換格式(XML)接口(例如,用于在web服務(wù)之間進(jìn)行通信的XML接口)。接口可以是緊耦合的同步的實(shí)現(xiàn),諸如在Java2平臺(tái)企業(yè)版(J2EE)、COM或分布式COM(DCOM)例子中的實(shí)現(xiàn)。替換地或補(bǔ)充地,接口可以是松耦合的異步的實(shí)現(xiàn),例如在web服務(wù)中的實(shí)現(xiàn)(例如,使用簡單對(duì)象訪問協(xié)議的實(shí)現(xiàn))。一般地,接口包括以下特征的任意組合緊耦合的、松耦合的、同步的和異步的。進(jìn)一步,接口可以符合標(biāo)準(zhǔn)協(xié)議、專用協(xié)議、或標(biāo)準(zhǔn)和專用協(xié)議的任意組合。在此所描述的接口都可以是單個(gè)接口的部分,或者可以被實(shí)現(xiàn)為分離的接口或其任意組合。接口可以本地執(zhí)行或遠(yuǎn)程執(zhí)行以提供功能性。進(jìn)一步,接口可以包括比此處所例示或描述功能性更多的或更少的功能性。在操作中,計(jì)算機(jī)130包括具有執(zhí)行諸如圖6中所例示的計(jì)算機(jī)可執(zhí)行指令以實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)可執(zhí)行組件的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)。除非另外指定,否則在此所例示并描述的方法的執(zhí)行或運(yùn)行的次序并不是必要特征。即是說,除非另外指定,否則諸方法的要素可以按任何次序執(zhí)行,并且諸方法可以包括比此處所揭示的要素更多或更少的要素。例如,構(gòu)想了在另一要素之前、同時(shí)或之后執(zhí)行或運(yùn)行特定要素是落在本發(fā)明的范圍之內(nèi)。當(dāng)介紹本發(fā)明的諸要素件或(諸)實(shí)施例時(shí),冠詞“一”、“一個(gè)”、“該”和“所述”意指有一個(gè)或多個(gè)這些要素。術(shù)語“包含”、“包括”和“具有”旨在表達(dá)包含在內(nèi),并且意指可以存在所列出要素之外的額外要素??紤]到上文,將可看到,達(dá)成了本發(fā)明的這幾個(gè)目標(biāo),并獲得其他的有利結(jié)果。由于可以在上述系統(tǒng)和方法中進(jìn)行各種改變而不會(huì)脫離本發(fā)明的范圍,因此以上描述所包含和在附圖中所示出的所有內(nèi)容旨在應(yīng)該被解釋為是示例性的而不能被認(rèn)為是限制。附錄A根據(jù)本發(fā)明的一個(gè)實(shí)施例,用于MergeLogic中的每一PatternTypeP(并行)的示例性算法ForeachPatternTypePinMergeLogic(inparallel)LoopforeachEventTypeEforthispattern(insequence)IF(IsActivating)INSERTPatterns(PatternType,PRE)SELECTP,InitializePRE(Event,Script)FROMEventsWHEREEventType=EELSEUPDATEPatternsSETPRE.OnEvent(Event,Script)FROMPatternspJOINEventseONPatterns.Hash=Events.HashWHEREPatternType=PANDEventType=EUPDATEPatternsSETPRE.OnWakeup()WHEREPatternType=PANDWakeup<@NowFROMPatternsWITH(INDEX(WakeupIndex))INSERTMatchedPatternsSELECTPatternsWITH(INDEX(StatusIndex)WHEREPatterType=PANDStatus=MatchDELETEFROMPatternsWITH(INDEX(StatusIndex)WHEREPatterType=PANDStatus>W(wǎng)aiting附錄B例如,算法從針對(duì)按模式所期望的次序或序列的每一事件類型的循環(huán)開始。例如,在腳本操作表304中,模式P1的模式描述將該模式定義為具有事件類型E1-E2-E3,并且事件E1、E2和E3腳本評(píng)估參數(shù)數(shù)據(jù)。在腳本操作表304中,為每一事件定義以下變量@PatternType,@EventType,@IsActivating和@Script。通過提供下列示例性SQL語句,算法首先確定事件類型是激活事件還是現(xiàn)有的一個(gè)或多個(gè)系列的模式事件的一部分INSERTPatterns(PatternType,PRE)SELECT@PatterType,InitializePRE(Event,@Script)FROMEventsWHEREEventType=@EventType在以上示例性實(shí)現(xiàn)中,函數(shù)InitializePRE()是用C#實(shí)現(xiàn)的用戶定義函數(shù),它接受激活事件和相應(yīng)的腳本。該函數(shù)返回根據(jù)腳本利用事件數(shù)據(jù)初始化的帶有Status=“Waiting”的PRE實(shí)例。應(yīng)該也注意到,在該表中Hash、Status和Wakeup列在插入語句中不被設(shè)置——它們是修改PRE的副產(chǎn)品。這一語句可能導(dǎo)致創(chuàng)建數(shù)以千計(jì)新實(shí)例被插入——全部都在事件表的單次掃描中,并且按模式表上聚群的索引上插入。替換地,如果事件類型不是激活事件,那么所有事件都被用如下語句合并到相應(yīng)模式中UPDATEPatternsSETPRE.OnEvent(Event,Script)FROMPatternsWITH(INDEX(Join_Index))JOINEventsONPatterns.Hash=Events.HashWHEREPatternType=@PatterTypeANDEventType=@EventType這里SQL語句將首先評(píng)估最有效率的Join類型。例如,當(dāng)兩個(gè)表都很大時(shí),這將會(huì)是Merge-Join,因?yàn)槲覀冋谑褂冒℉ash在內(nèi)的相同類型的索引。在后臺(tái),SQL服務(wù)器將(a)從磁盤檢索包含與一些事件相關(guān)的模式的所有扇區(qū);(b)將屬于該記錄的一部分的PRE實(shí)例反串行化;(c)通過傳遞事件UDT來調(diào)用其方法OnEvent;(d)向PRE請(qǐng)求所提升的屬性Status、Wakeup以及Hash;(e)將經(jīng)修改的PRE串行化回到記錄中;(f)將諸扇區(qū)寫到磁盤。注意,在這里Hash僅被用作試探——PRE在例如發(fā)生散列沖突但SessionID不同的情況下會(huì)忽略該事件的概率很小。同樣,可能存在需要一個(gè)以上的Hash列的情形——例如,如下的模式需要兩個(gè)分離的Hash列elandthene2andthene3wheree2.x=el.xande3.y=e2.y對(duì)于這樣的模式,每個(gè)合并邏輯還將會(huì)對(duì)每一事件類型使用不同的join(聯(lián)合)類型——例如對(duì)e2使用關(guān)于x的join,而對(duì)e3使用關(guān)于y的join。這也意味著,兩個(gè)模式類型只有在具有相同數(shù)目的join時(shí),它們才能共享該表。總之,這是將可能修改數(shù)百萬模式當(dāng)中的數(shù)千個(gè)的單UPDATE語句。這些模式中的一些可能會(huì)改變其狀態(tài)。例如,如果“Pay”事件被合并到PRE中,則狀態(tài)將會(huì)從“Waiting”改變?yōu)椤癗oMatch”。下一個(gè)挑戰(zhàn)是,當(dāng)改變是由于在給定超時(shí)里沒有看到任何事件而引起時(shí),該如何改變模式的狀態(tài)。借助于如下SQL語句,可通過對(duì)模式表的另一批量操作來實(shí)現(xiàn)這一超時(shí)評(píng)估UPDATEPatternsSETPRE.OnWakeup()WHEREPattemType=@PatternTypeANDWakeup<@NowFROMPatternsWITH(INDEX(Wakeup_Index))注意,這一操作使用Wakeup_Index,因此只有包含已經(jīng)到達(dá)超時(shí)的模式的磁盤扇區(qū)才會(huì)被檢索并更新。不存在死鎖的機(jī)會(huì),因?yàn)檫@一操作被本地化到表中對(duì)應(yīng)于特定模式類型的部分,并且不與針對(duì)這一模式類型的Merge(合并)同時(shí)執(zhí)行。最后,借助于如下的語句,已經(jīng)匹配的模式被批量移動(dòng)到另一個(gè)表中INSERTMatchedPatternsSELECTPatternsWITH(INDEX(Status_Index)WHEREPatterType=@PatternTypeANDStatus=MatchDELETEFROMPatternsWITH(INDEX(Status_Index)WHEREPatterType=@PatternTypeANDStatus>W(wǎng)aiting最后的語句假定,例如,Waiting是0,并且Match和NoMatch均>0。作為副作用,“NoMatch”的模式也被從模式表中刪除,而不會(huì)被移動(dòng)到任何地方。但是,這就是剔除不必要的事件而只輸出真正有用的事件的思想。既然我們已經(jīng)描述模式內(nèi)部關(guān)聯(lián)的核心思想,退回去看看接下來我們應(yīng)該怎么處理這一數(shù)據(jù)。顯然,存在兩種非常不同的情景將匹配模式發(fā)送到諸如商務(wù)活動(dòng)軟件應(yīng)用程序等的訂閱/路由機(jī)制中。這樣,對(duì)該模式感興趣的人或系統(tǒng)將會(huì)得到通知并可以進(jìn)行相應(yīng)的動(dòng)作(例如,激活針對(duì)“可能的ATM欺詐”的工作流)。僅僅讓數(shù)據(jù)可以用于通常的SQL/OLAP/BAM意義上的查詢和分析。這具有兩種子變體唯匹配模式的查詢能力和分析——例如,人們丟下購物車的原因是什么?(是運(yùn)送價(jià)格?在哪一州/市中這一問題引起我們最多的商務(wù)損失?)該模式的所有實(shí)例的查詢能力和分析,包括尚未完成的實(shí)例。這對(duì)諸如關(guān)于商務(wù)活動(dòng)的觀測等的長期模式尤其重要。例如,如果我們有處理運(yùn)送的公司,則能夠查詢或獲得關(guān)于尚未完成的運(yùn)送的進(jìn)度的積累是很重要的(作為例子,想象一下運(yùn)載用RFID標(biāo)簽標(biāo)記的物品的卡車)。在那些選項(xiàng)中,1)是最容易的——僅僅獲得匹配模式并且將其作為“事件”發(fā)送給消耗方或供進(jìn)一步的模式評(píng)估。選項(xiàng)2b是最復(fù)雜的,因?yàn)槠裎覀兊臄?shù)據(jù)被封裝在PRE二進(jìn)制blob中。圖5示出如何曝露這一數(shù)據(jù)以用于查詢能力。這里,表的定義被改變?yōu)閏reatetablePatterns_ShoppingCart(HashasPRE.GetHash(0)persisted,--從PRE提升PREasPatternRecognitionEngine,--這是先前注冊的UDTStatusasPRE.Statuspersisted,--從PRE提升WakeupasPRE.Wakeuppersisted--從PRE提升LoginasPRE.GetDataItem(″LoginTime″),CheckoutasPRE.GetDataItem(″CheckoutTime″),ShipTypeasPRE.GetDataItem(″ShipmentType″))這里,查詢和分析所需要的所有列都被提升為實(shí)際的SQL列。將它們從UDT提升將會(huì)對(duì)CPU有些額外開銷,但是不會(huì)有外加的磁盤IO。另外,這些列中的一些可以被標(biāo)記為“持久化的”,并且甚至可以被用于索引以加速查詢。注意,當(dāng)需要查詢能力時(shí),對(duì)許多模式實(shí)例來說重復(fù)使用相同的表變得不可能了——相反,該表本身專用于特定模式類型,沒有“PatternType”列,并且基于該模式定義被動(dòng)態(tài)地創(chuàng)建。權(quán)利要求1.一種用于識(shí)別模式的方法,所述方法包括編譯模式描述,所述模式描述定義包含第一事件和與所述第一事件有關(guān)的第二事件的一個(gè)系列;接收所述第一事件,所述第一事件包括類型參數(shù)數(shù)據(jù)、時(shí)間參數(shù)數(shù)據(jù)和內(nèi)容參數(shù)數(shù)據(jù);將第一腳本附連到所述第一事件,所述第一腳本根據(jù)所述模式描述按照所述第一事件的參數(shù)的函數(shù)定義所述第二事件的類型參數(shù)、時(shí)間參數(shù)和內(nèi)容參數(shù);以及執(zhí)行所述第一事件的所述附連的第一腳本,被執(zhí)行的腳本識(shí)別所述第二事件并從而識(shí)別所述模式。2.如權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行包括使所述第二事件中的參數(shù)與所述第一事件相關(guān),以確定所述第二事件是否屬于根據(jù)所述模式描述定義的所述系列。3.如權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行包括將所述第一事件的所述參數(shù)數(shù)據(jù)以及與所識(shí)別的模式有關(guān)的數(shù)據(jù)輸出到一個(gè)計(jì)算環(huán)境,以用于對(duì)所述參數(shù)數(shù)據(jù)以及所述與所識(shí)別的模式有關(guān)的數(shù)據(jù)進(jìn)行分析。4.如權(quán)利要求1所述的方法,其特征在于,所述將第一腳本附連到第一事件包括通過將所述第二事件的有關(guān)的類型參數(shù)、時(shí)間參數(shù)和內(nèi)容參數(shù)與所述第一事件的類型參數(shù)、時(shí)間參數(shù)和內(nèi)容參數(shù)進(jìn)行比較,來定義所述第二事件的類型參數(shù)、時(shí)間參數(shù)和內(nèi)容參數(shù)。5.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括將所識(shí)別的模式存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中以供分析。6.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括,當(dāng)所述第一事件的參數(shù)數(shù)據(jù)中的一個(gè)或多個(gè)根據(jù)編譯的模式描述與所述系列中的所述第二事件或額外事件的一個(gè)或多個(gè)參數(shù)數(shù)據(jù)相關(guān)時(shí),響應(yīng)于編譯的模式描述以及所述附連到第一事件的腳本,創(chuàng)建所定義的所述系列的拷貝。7.如權(quán)利要求1所述的方法,其特征在于,所述模式描述定義包含所述第一事件、所述第二事件以及與所述第一事件和所述第二事件有關(guān)的第三事件的所述系列,并且其中所述附連包括將第二腳本附連到所述第二事件,所述第二腳本根據(jù)所述模式描述按照所述第二事件的參數(shù)的函數(shù)定義所述第三事件的類型參數(shù)、時(shí)間參數(shù)和內(nèi)容參數(shù),并且其中所述執(zhí)行包括執(zhí)行所述第二事件的附連的第二腳本,該被執(zhí)行的腳本識(shí)別所述第三事件并從而識(shí)別所述模式。8.如權(quán)利要求1所述的方法,其特征在于,一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)具有用于執(zhí)行權(quán)利要求1所述的方法的計(jì)算機(jī)可執(zhí)行指令。9.一個(gè)或多個(gè)具有用于識(shí)別事件模式的計(jì)算機(jī)可執(zhí)行組件的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行組件包括用于編譯多個(gè)模式描述的模式編譯組件,所述多個(gè)模式描述中的每一個(gè)順次定義一系列事件;用于收集多個(gè)事件的事件組件,所述多個(gè)事件中的每一個(gè)具有與所述多個(gè)事件中的每一個(gè)有關(guān)的數(shù)據(jù)參數(shù);用于將腳本關(guān)聯(lián)到所述多個(gè)事件中的每一個(gè)的腳本組件,所述腳本根據(jù)所述多個(gè)事件中的每一個(gè)的模式描述定義所述多個(gè)事件中的每一個(gè)在所述系列中的后續(xù)事件的數(shù)據(jù)參數(shù);模式識(shí)別引擎,用于執(zhí)行所述多個(gè)事件中的每一個(gè)的腳本以識(shí)別所述系列中的所述后續(xù)事件并從而識(shí)別所述模式。10.如權(quán)利要求9所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述模式描述包括以下部分中的一個(gè)或多個(gè)模式名稱、事件引用、事件過濾、事件序列、事件超時(shí)期望、事件相關(guān)以及輸出結(jié)果。11.如權(quán)利要求9所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述模式識(shí)別引擎將所述第二事件中的數(shù)據(jù)參數(shù)與所述第一事件相關(guān),以確定所述第二事件是否屬于根據(jù)由所述模式編譯器定義的所述模式描述定義的所述系列。12.如權(quán)利要求9所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括用于管理所述模式識(shí)別引擎的主機(jī)環(huán)境,所述主機(jī)環(huán)境包括以下各項(xiàng)的至少其中之一內(nèi)存中主機(jī)環(huán)境、基于文件的主機(jī)環(huán)境、以及基于SQL的主機(jī)環(huán)境。13.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述模式識(shí)別引擎將所述多個(gè)事件中的每一個(gè)的參數(shù)數(shù)據(jù)和與所識(shí)別的模式有關(guān)的數(shù)據(jù)輸出到所述主機(jī)環(huán)境,以用于所述參數(shù)數(shù)據(jù)和與所識(shí)別的模式有關(guān)的數(shù)據(jù)的進(jìn)一步處理。14.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述基于SQL的主機(jī)環(huán)境將由所述模式識(shí)別引擎輸出的所述多個(gè)事件中的每一個(gè)的參數(shù)數(shù)據(jù)和與所識(shí)別的模式有關(guān)的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中,并從用戶接收檢索所述數(shù)據(jù)庫中所存儲(chǔ)的數(shù)據(jù)的查詢。15.如權(quán)利要求9所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,當(dāng)所述事件的參數(shù)數(shù)據(jù)中的一個(gè)或多個(gè)與所述定義的系列中的額外事件的一個(gè)或多個(gè)參數(shù)數(shù)據(jù)有關(guān)時(shí),所述模式識(shí)別引擎還響應(yīng)于由所述模式編譯組件編譯的所述模式描述以及由所述腳本組件附連到所述定義的系列中的事件的所述腳本,創(chuàng)建所述定義的系列的拷貝。16.一種用于在多個(gè)事件中識(shí)別模式的系統(tǒng),所述系統(tǒng)包括用于將相關(guān)事件收集為一系列模式事件的多個(gè)收集計(jì)算機(jī);用于在所收集的每一系列中識(shí)別所述模式的第一部分的第一組計(jì)算機(jī),其中所收集的每一系列匹配所述一系列模式事件的所述第一部分;用于在已由所述第一組識(shí)別出所述模式的第一部分的每一系列中識(shí)別所述模式的第二部分的第二組計(jì)算機(jī);以及其中所述模式的所述第一部分和所述模式的所述第二部分匹配所述一系列模式事件,并且其中包括所述模式的所述第一和第二部分的每一系列事件被積累并存儲(chǔ)以供評(píng)估。17.如權(quán)利要求16所述的系統(tǒng),其特征在于,進(jìn)一步包括用于接收來自用戶的查詢以響應(yīng)于所述查詢檢索所積累并存儲(chǔ)的模式。18.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述第一組計(jì)算機(jī)和所述第二組計(jì)算機(jī)包括用于將所述模式的被識(shí)別的第一部分與所述模式的被識(shí)別的第二部分相關(guān)的模式識(shí)別引擎。19.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述第一組計(jì)算機(jī)和所述第二組計(jì)算機(jī)存儲(chǔ)多個(gè)模式描述,所述多個(gè)模式描述中的每一個(gè)對(duì)應(yīng)于每一系列的模式事件。20.如權(quán)利要求16所述的系統(tǒng),其特征在于,當(dāng)由所述第一組計(jì)算機(jī)服務(wù)器在所述系列的所述第一部分中識(shí)別出的事件的參數(shù)數(shù)據(jù)中的一個(gè)或多個(gè)與由所述第二組計(jì)算機(jī)服務(wù)器在所述系列的所述第二部分中識(shí)別出的事件的一個(gè)或多個(gè)參數(shù)數(shù)據(jù)有關(guān)時(shí),所述第二組計(jì)算機(jī)服務(wù)器響應(yīng)于一模式描述和被附連到所述系列中所收集的事件的腳本創(chuàng)建所收集的每一系列的拷貝。全文摘要模式識(shí)別的系統(tǒng)和方法(圖1框110)。本發(fā)明的一種方法編譯模式描述,其中該模式描述定義包含第一事件和與該第一事件有關(guān)的第二事件的一系列事件(圖1框102)。第一事件被接收,并且它包括類型參數(shù)數(shù)據(jù)、時(shí)間參數(shù)數(shù)據(jù)、以及內(nèi)容參數(shù)數(shù)據(jù)。本發(fā)明的一種系統(tǒng)包括用于將第一腳本關(guān)聯(lián)或附連到第一事件的腳本組件(圖1框108)。第一腳本根據(jù)模式描述將第二事件的類型、時(shí)間和內(nèi)容參數(shù)定義為第一事件的參數(shù)的函數(shù)。由一模式識(shí)別引擎執(zhí)行所附連的第一腳本,并且被執(zhí)行的腳本識(shí)別第二事件并從而識(shí)別該模式。文檔編號(hào)G06F17/00GK101611394SQ200680013516公開日2009年12月23日申請(qǐng)日期2006年4月13日優(yōu)先權(quán)日2005年5月20日發(fā)明者G·B·邱德洛夫,V·米塔爾申請(qǐng)人:微軟公司