專利名稱:靈活的基于預訂的事件通告的制作方法
技術領域:
本發(fā)明涉及事件通告技術。具體而言,本發(fā)明涉及基于對通告通道的預訂執(zhí)行事件通告的方法,系統(tǒng)和計算機程序產(chǎn)品。
一些訪問信息方法是同步的或“基于拉”的。換言之,每訪問一次信息就需要遞交一次對信息的請求。這樣有時就不能有效地同步訪問信息。例如,可能會訪問到一些相關聯(lián)但不希望要的信息。當然,用戶或應用程序一般不會知道所請求的信息不是希望的。因此,人們研究了一種技術,當需關心的事件異步發(fā)生時,能夠通告用戶或應用程序,換言之,不要求相關的請求以詢問事件是否發(fā)生。
需關心的事件可包括,例如,如果知道計算機正變得不穩(wěn)定而自從可能想要存儲數(shù)據(jù)以來已計算機發(fā)生的錯誤。又如,用戶可能想要知道特定的數(shù)據(jù)字段是否有特定值或數(shù)據(jù)字段的組合是否具有數(shù)據(jù)值的特定組合。例如,投資人可能想要知道在一年的某一特定時間中股票價格是否跌落到某一特定值以下。又如,用戶可能想要知道其它的異步事件,如從特定的發(fā)送者接收的電子郵件。
一種被通告事件發(fā)生的特定應用程序是事件日志記錄,一般常規(guī)的日志記錄了關于許多各類主題的大量事件,而不顧各個應用程序或用戶對所給出的事件是否感興趣。如果用戶希望了解一個特定的事件序列,則用戶一般需要瀏覽整個日志記錄并通過目視跟蹤所關心的事件以得出適當?shù)慕Y(jié)論。例如,假定計算機系統(tǒng)崩潰了,則網(wǎng)絡管理員需要調(diào)查事件日志記錄,詳查所有的信息并將相關信息和不相關信息區(qū)分開,然后根據(jù)相關信息得出為何計算機系統(tǒng)會崩潰的結(jié)論。
人們普通認同,人腦能夠進行令人驚奇的精神事件處理。例如,人類常常能夠輕而易舉地從不相關事件中區(qū)分出相關事件,并根據(jù)相關事件形成判斷,甚至在怎樣表示信息的結(jié)構(gòu)一致性很小時也可以。然而,計算機系統(tǒng)對于沒有可預測結(jié)構(gòu)的信息的解釋能力方面就更有限了。
因此,日志的事項具有一些可預測的結(jié)構(gòu),使計算機能具有某些解釋信息的能力。例如,一個常規(guī)的事件日志記錄技術為各個事件項目分配了有限數(shù)目的字段。這類字段可包括事件ID,事件源ID,事件類型(例如,信息,警告,或增加嚴重性等級的出錯)和描述。用于表示事件項目的字段和類型一般是不可擴充的。因此,會被記錄的事件信息的類型是十分受約束的。
一種稍能減少這種約束的常規(guī)方法是為應用程序在事件項目的描述字段中設計具有一些預定結(jié)構(gòu)的描述。這樣,理解這樣結(jié)構(gòu)的應用程序可從該描述中進行篩分,并用該預定結(jié)構(gòu)提取所需意義。不過,這需要解釋該描述的應用程序具有對所述預定結(jié)構(gòu)的理解。各個應用程序在寫入事件描述時一般采用其自己的預定結(jié)構(gòu)。因此,因為缺乏應該如何構(gòu)造描述字段的標準,各個事件的事件描述還是難以解釋。
此外,由于事件日志記錄記錄了所有的事件,而不顧應用程序或用戶對此事件是否感興趣,寶貴的計算機處理和存儲資源將被浪費在寫入并不關心的事件項目上。
因此,需要一種事件通告技術,能夠廣泛解釋事件,并當處理不太感興趣的事件時減小處理和存儲資源。
根據(jù)本發(fā)明,分布式計算機網(wǎng)絡或單個計算機系統(tǒng)可以包括許多事件源或許多事件消費者。在事件源和事件消費者間建立了許多通告“通道”。各個通道可以相應于一個特定范圍,例如,一個通道接收調(diào)試出錯事件,另一個通道用于電子郵件相關事件,而另一個通道用于日歷提醒事件。各個通道可接收對具有特定特征的事件通告的預訂,此外,每個通道還可以保持自己的用于確定預訂者和發(fā)布者在通道中權限的安全性。將整個通告服務劃分為多個通道,能夠更好地控制各個通道的安全性。
各個通告通道可通過使用模式定義控制通告。由事件消費者接收的事件預訂使用識別在模式定義中會取得的任意所需事件通告位置的語句。事件預訂也可以識別在那個位置的所關心事件的相關特性和屬性。用識別模式定義中的節(jié)點位置和所關心的子節(jié)點屬性的常規(guī)XPATH語句可以完成上述操作。
然后通道接收來自一個或更多的事件源的事件通告。事件通告可采用XML報片形式。然后通道確定由模式定義確定的接收到的XML報片的位置。通道為各個預訂和各個事件通告將事件通告和預訂匹配。具體而言,通道確定事件通告的位置和屬性與事件預訂的位置和屬性是否相匹配,如果匹配,則復制事件并發(fā)送到在相應預訂中指定的接收者,如果不匹配,則不復制事件。
完成這個匹配操作的一種方法是為各個預訂請求分配一個過濾器。各個過濾器設計為接收事件通告并將那些事件通告與特定預訂匹配。這對小量的預訂很有效,但對大量預訂無效。
為使過濾操作更有效,或?qū)㈩A訂請求轉(zhuǎn)化為過濾器的判定樹。例如,假定預定只與兩個處理引發(fā)的事件有關,其中,一個有標識符5,一個有符識符6。判定樹的根過濾器執(zhí)行測試,以確定是否有除處理5或6以外的處理引發(fā)事件的預訂。如果是這樣,則在根過濾器立即將事件通告過濾出去。因此,在該樹中的其它過濾器不需要浪費處理那個事件通告的資源。該樹可響應各個預訂請求重構(gòu),從而減少各個事件通告所需的平均處理資源。在該結(jié)構(gòu)中,可進行足夠有效的處理,支持實時事件通告處理。
注意,該事件通告系統(tǒng)允許事件消費者控制事件通告的過濾。因此,根據(jù)事件消費者的需要,可將事件通告過濾出以保留處理。如果事件消費者是日志記錄應用程序,則只記錄那些感興趣的事件通告。與一般需要記錄大量事件而不顧是否有事件消費者對事件感興趣的常規(guī)日志記錄機制相比,該方式反差巨大。
還需注意,事件通告具有由模式定義確定的特定位置。各個特定事件類型可具有與事件類型相應的模式。事件消費者可使用相應的模式,不僅從事件通告中讀取數(shù)據(jù),而且理解數(shù)據(jù)的意義并根據(jù)該數(shù)據(jù)進行智能判斷。該模式定義也允許擴充事件類型的數(shù)目,并增加與任意給定事件類型相關的字段數(shù)目。因此,日志記錄不需要局限于字段的具體固定數(shù)目和類型,而可更適用于給定的事件類型。
在下面的描述中將闡述本發(fā)明的附加特征和優(yōu)點,通過該描述或通過實施該描述將清楚其一部分。通過附加的權利要求特別指出的手段及其結(jié)合可得到和實現(xiàn)本發(fā)明的特征和優(yōu)點。從下面的描述和附加的權利要求,或通過實施下述的發(fā)明內(nèi)容,將對本發(fā)明的這些和其它特征更為全面地理解。
然后通道接收來自一個或更多的事件源的事件通告。事件通告可采用XML報片形式。然后通道確定由模式定義確定的XML報片的位置。通道匹配事件通告和預訂。具體而言,通道確定在模式定義中事件通告的位置和屬性是否與事件預訂的位置和屬性相匹配,如果匹配,則復制事件并發(fā)送到在相應預訂中指定的接收者,如果不匹配,則不復制事件。
本發(fā)明的實施例包括通用或?qū)S玫挠嬎銠C系統(tǒng),包括各種計算機硬件組件,將在下面詳細描述。在本發(fā)明范圍中的實施例也包括用于記錄或具有計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的計算機可讀媒介。這樣的計算機可讀介質(zhì)可以是任意有效的可由通用或?qū)S糜嬎銠C系統(tǒng)訪問的介質(zhì)。舉例說,(但不加限制)這樣的計算機可讀介質(zhì)可包括諸如RAM,ROM,EPROM,CD-ROM或其它光盤存儲裝置,磁盤存儲裝置或其它磁存儲裝置的物理存儲介質(zhì),或任何其它可用于記錄或存儲所需的以計算機執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)出現(xiàn)的程序代碼、并可由通用或?qū)S糜嬎銠C系統(tǒng)訪問的介質(zhì)。
當通過網(wǎng)絡或其它通信連接(硬件、無線或硬件與無線的組合)將信息傳遞或提供給計算機系統(tǒng)或計算機裝置時,該連接一般可看作計算機可讀介質(zhì)。這樣,任何這樣的連接可稱作計算機可讀介質(zhì)。計算機可讀介質(zhì)的范圍也包括上述的組合。計算機執(zhí)行指令包括,例如,使通用計算機系統(tǒng)或?qū)S糜嬎銠C系統(tǒng)執(zhí)行某一功能或一組功能的指令和數(shù)據(jù)。
本領域的普通技術人員將清楚本發(fā)明用于具有各類計算機系統(tǒng)結(jié)構(gòu)的網(wǎng)絡計算機環(huán)境,這些計算機結(jié)構(gòu)包括個人計算機,膝上型計算機,手提式計算機,多處理器系統(tǒng),基于微處理器或編程的電子消費品,網(wǎng)絡PCs,微型計算機,大型機,移動電話,PDAs,尋呼機等等。本發(fā)明也可用于分布式計算環(huán)境,其中本地和遠程計算機系統(tǒng)通過電信網(wǎng)絡鏈接(通過硬連線鏈路,無線鏈路或通過這兩者的組合)并執(zhí)行任務。在分布式計算機環(huán)境中,程序模塊可位于本地和遠程存儲裝置中。
圖1和下述描述提供可實施本發(fā)明的適當計算機環(huán)境的簡要、概括描述。雖然不需要,本發(fā)明將以計算機執(zhí)行指令的通用環(huán)境來描述,諸如由計算機系統(tǒng)執(zhí)行的程序模塊。通常,計算機模塊包括例程,程序,對象,組件,數(shù)據(jù)結(jié)構(gòu)等等,執(zhí)行特定任務或應用具體特定數(shù)據(jù)類型。計算機可執(zhí)行指令,相應的數(shù)據(jù)結(jié)構(gòu)和程序模塊,代表了用于執(zhí)行上述方法步驟的的程序代碼方法的例子。這些執(zhí)行指令的特定序列或相應數(shù)據(jù)結(jié)構(gòu)代表了實現(xiàn)上述步驟功能的操作。
參考圖1,用于本發(fā)明原則的適宜操作環(huán)境包括作為常規(guī)計算裝置120的通用計算裝置,它包括處理單元121,系統(tǒng)存儲器122,耦合包括系統(tǒng)存儲器122的各種系統(tǒng)元件處理單元121的系統(tǒng)總線123。系統(tǒng)總線123可以是任意若干種類型的總線結(jié)構(gòu),包括存儲器總線或存儲器控制器,外圍總線,和采用任何各種總線結(jié)構(gòu)的局部總線。系統(tǒng)存儲器包括只讀存儲器(ROM)124和隨機存取存儲器(RAM)125?;据斎?輸出系統(tǒng)(BIOS)126,具有在諸如啟動時協(xié)助傳輸計算機120中器件間信息的基本例程,存儲在ROM124中。
計算機120也可以包括用于對磁硬盤139進行讀寫的磁硬盤驅(qū)動器127,用于對活動磁盤129進行讀寫的磁盤驅(qū)動器128,和對諸如CD-ROM或其它光學介質(zhì)的活動磁盤131進行讀寫的光盤驅(qū)動器130。磁硬盤驅(qū)動器127,磁盤驅(qū)動器128,和光盤驅(qū)動器130分別通過硬盤驅(qū)動接口132,磁盤驅(qū)動接口133和光驅(qū)接口134連接到系統(tǒng)總線123。該驅(qū)動器和其相應的計算機可讀介質(zhì)為計算機120提供了計算機執(zhí)行指令,數(shù)據(jù)結(jié)構(gòu),程序模塊和其它數(shù)據(jù)的非易失性存儲。雖然這里所述的示例環(huán)境采用了磁硬盤139,移動式磁盤129和移動式光盤131,可以使用用于存儲數(shù)據(jù)的其它類型計算機可讀介質(zhì),包括磁帶、閃存卡、數(shù)字通用盤、Bernouolli卡盤,RAMs,ROMs等等。
包括一個或多個程序模塊的程序編碼裝置可存儲在硬盤139、磁盤129、光盤131、ROM 124或RAM 125中,包括操作系統(tǒng)135、一個或更多的應用程序136、其它程序模塊137和程序數(shù)據(jù)138。
用戶可以通過鍵盤140、定點裝置142或諸如麥克風、操縱桿、游戲盤、圓盤式衛(wèi)星盤,掃描器等其它輸入裝置(沒有示出)將命令或信息鍵入到計算機120中。這些和其它的輸入裝置常常通過一系列與系統(tǒng)總線123耦合的通信接口146連接到處理單元121。另外一種方式是,輸入裝置可通過諸如并行接口、游戲接口或通用串行總線(USB)與其它接口連接。監(jiān)測器147或另一個顯示裝置也通過諸如視頻適配器148的接口連接到系統(tǒng)總線123。除了監(jiān)測器外,個人計算機通常包括諸如揚聲器或打印機之類的其它外圍輸出裝置(沒有示出)。
計算機120可以工作在采用邏輯連接到一個或多個遠程計算機(例如遠程計算機149a和149b)的網(wǎng)絡環(huán)境中。遠程計算機149a和149b可以是另一個個人計算機、服務器、路由器、網(wǎng)絡PC、對等裝置或其它公用網(wǎng)絡節(jié)點,并且雖然只在圖1中示出了存儲器裝置150a和150b及其相關聯(lián)的應用程序136a和136b,它通常還包括許多或所有關于上述計算機120的器件。在圖1中示出的邏輯連接包括局部區(qū)域網(wǎng)(LAN)151和廣域網(wǎng)(WAN)152,這里僅為示例而不做限制。這些網(wǎng)絡環(huán)境在辦公室或企業(yè)計算機網(wǎng)絡,內(nèi)聯(lián)網(wǎng)和國際互連網(wǎng)是普通的。
當用于LAN網(wǎng)絡環(huán)境中時,計算機120通過網(wǎng)絡接口或適配器153連接到局域網(wǎng)151。當用于WAN網(wǎng)絡環(huán)境中時,計算機120可包括為調(diào)制解調(diào)器154,無線聯(lián)接,或在諸如Internet的廣域網(wǎng)152中建立聯(lián)接的其它裝置。調(diào)制解調(diào)器154,可以是內(nèi)部或外部的,通過串行口接口146連接到系統(tǒng)總線123。在網(wǎng)絡環(huán)境中,關于計算機120描述的程序模塊或部分可存儲在遠程存儲裝置中。須理解,所示網(wǎng)絡連接是示范性的,也可采用在廣域網(wǎng)152中建立連接的方法。
雖然圖1描述了用于本發(fā)明的適宜操作環(huán)境,本發(fā)明的原則可用于任意能夠采用本發(fā)明原則的情況,必要時可進行適宜的修改。圖1示出的環(huán)境只是示范性的,僅是本發(fā)明原則可用的廣闊范圍的一小部分。
圖2示出了通過許多通告通道220(包括通道221和222)結(jié)合許多事件消費者230(包括通過236的消費者231)的許多事件源210(包括通過215的源211)。各個事件源210可以是產(chǎn)生或輸送事件通告的任意事件源。各個事件消費者230可以是能夠處理事件通告的任意事件消費者(即使它只是將事件通告輸送到另一個事件消費者)。通道的意義將在下面詳細描述。雖然在圖2示例中示出了5個事件源,6個事件消費者和2個通道,本發(fā)明不限制事件源,事件消費者和通道的具體數(shù)目。事實上,本發(fā)明原理的一個優(yōu)點是能夠用于任意數(shù)目的事件源,事件消費者或通道。
事件源210和事件消費者230可以位于諸如參考圖1描述的計算機120的單一計算機系統(tǒng)中。不過,至少一些事件源210和/或事件消費者230可位于其它分布式環(huán)境中的計算機系統(tǒng)中。
通道220表示5個分別用于某一類型使用者的事件流。任意的事件源210可發(fā)布事件到通道中以用于該使用者(以進行安全檢查)。該通道可為公知的通用通道,或是個人應用通道。在圖2的例子中,事件源211、213和214有發(fā)布信息到通道221的安全權,而消費者232,233和234有預訂由通道221提供的事件的安全權。事件源214和215有發(fā)布信息到通道222的安全權,而消費者234和235有預訂由通道222提供事件的安全權。
單個事件源能夠被發(fā)布到多個通道中。例如,事件源214將事件發(fā)布到通道221和222中,而另一個源(例如源212)不能發(fā)布事件到任何通道中。同樣,單個消費者能夠預訂多個通道。例如,消費者234可預訂通道221和222,而另一方面,消費者(例如,消費者231和236)也不能夠預訂任何通道。
通道可是任意用于特定使用者的事件流。使用者可是“任何人”,這時可將任何事件發(fā)布到通道中。不過,如果使用者更具體的話,可取得特定的優(yōu)點。例如,一個通道可是“磁盤存取”通道,其中只發(fā)布關于磁盤存取的事件。更具體的通道可是“磁盤讀訪問”通道,只發(fā)布關于磁盤讀請求的事件。又如,另一個通道可為“中斷通道”,只允許發(fā)布關于中斷的事件。再如,一個通道可是“網(wǎng)絡通道”,只涉及關于通過網(wǎng)絡發(fā)送或接收的事件。另一個更具體的通道可是“電子郵件接收”通道,只涉及關于電子郵件的事件。
廣范的事件消費者會關心特定的通道類型。例如,調(diào)試應用程序會關注來自磁盤訪問,磁盤讀取訪問,和通道中斷的事件。電子郵件和報文應用程序會關注網(wǎng)絡和電子郵件通道。通過上述描述,本領域的普通技術人員可理解采用本發(fā)明原理的通道的類型和范圍是無止境的。
事件消費者的一個具體類型是日志記錄應用程序。各個通道可有零個,一個或多個與其連接的事件日志記錄。因為事件日志記錄是在任意關注通道中的公共應用程序,日志記錄應用程序本身可加入到通道中。不過,在概念上,日志記錄應用程序從概念上說只是另一個事件消費者。因此,在本描述的多數(shù)情況下,記錄應用程序就被看作和任意其它事件消費者是相同的。
圖3更詳細地示出通道300的結(jié)構(gòu)。通道300可以是如圖2所示的一個通道200,包括含有接收來自事件消費者230的預訂請求的預訂模塊303的幾個組件。預訂請求可用于具有讓特定性質(zhì)被轉(zhuǎn)送到遞交該請求的相同實體的事件通告。不過,請求實體和事件消費者可以是不同的實體。換言之,預訂請求可代表另一個事件消費者作出。
預訂模塊303使用安全模塊302確定是否要授予預訂請求。具體而言,安全模塊302可用于確定在幾種粒度等級上的安全裕度(clearance)。例如,如果請求實體具有有訂購所需請求特性的事件的安全權,或如果請求實體有訂購被轉(zhuǎn)送到特定事件消費者的事件的安全權,則安全模塊302可以用于確定請求實體是否有預訂在通道300中公布事件的安全權。
也可將安全措施應用于來自事件源210的發(fā)布請求以確定對應于發(fā)布請求的事件源是否具有發(fā)布事件到通道300的安全權?;蛟撌录词欠窬哂邪丫哂刑囟ㄌ匦缘氖录l(fā)布到通道安全權。通過使用安全模塊302,由通道接收的事件類型可如所需被約束。因此,通道可專用于特定主題,或按需要而用得更為廣泛。通道可作得可實際上被任何事件消費者或源廣泛地公開地可訪問。另一方面,通道也可指定為只由一個或少數(shù)事件源和消費者專用。
通道300接收事件,然后將事件轉(zhuǎn)送到任何預訂該事件的事件消費者。除了將各個事件與各個預訂請求比較以確定哪個事件消費者將被轉(zhuǎn)送事件,通道300使用具有通過各個可能的事件消費者的邏輯路徑的過濾器310。在示例中,只有兩個預訂請求,分別由相應的請求過濾器311和312產(chǎn)生。不過,對于較大數(shù)目的預訂請求,過濾器310可采用過濾樹,如圖4過濾樹400所示。對于該過濾樹400及其作用將在下面詳細描述。
通道300也包括模式定義301。根據(jù)模式定義301所接收事件可以是自描述的或具有可被映象到特定位置的特定結(jié)構(gòu)。同樣,根據(jù)模式定義可將預訂請求映象到特定位置。例如,所接收事件通告是可擴展標記語言(XML)報片,而模式定義301是XML模式定義(XSD)文件。在此例中,預訂請求可包括描述由模式定義301所定義的特定位置的XPATH語句??蓪⑹录ǜ嫣峁┙o各個請求過濾器。
如果事件通告和對應于詢問過濾器的訂購請求是匹配的,則允許事件通告通過訪問過濾器。否則,如果不匹配,則采用查詢過濾器過濾出事件通告。如果由模式定義指示的由事件通告占據(jù)的位置與由預訂請求預訂的被模式定義指定的由事件占據(jù)的位置相符,則確定匹配。另一個匹配的所需條件是在預訂請求中指定的所需事件屬性符合事件通告。
對所有預訂請求完成過濾操作的一種方法是對每個預訂請求專用一個過濾器(例如查詢過濾器311和312)。對于少量預訂請求,這允許通用實時事件通告發(fā)生。不過,如果有大量訂購請求,實時事件通告也會發(fā)生問題。在此例中,這些大量的處理請求需要專用存儲和處理資源,來過濾事件通告。
圖4示出一例可用于圖3的過濾器310中的過濾樹400。過濾樹400設計為使必需用于處理事件通告的過濾器數(shù)目減少或最少。例如,假定事件預訂只用于通過識別器5或識別器6識別的處理而引發(fā)的事件。過濾樹400中的根過濾器401可過濾任何不由識別器5或6引發(fā)的事件通告。在如圖4所示的范例中,事件通過過濾器401。在過濾器接收的事件用指向過濾器左部的箭頭表示,通過過濾器的事件由通過過濾器右部出射的箭頭表示。添加“X”的箭頭表示那里將有具有還未被上游過濾器過濾的事件的事件流。沒有加上“X”的箭頭表示事件通告還未被上游過濾器過濾出去。
在這個例子中,第二級過濾器408過濾出事件通告,因此,從過濾器409到412不需要處理事件通告。而第二級過濾器402通過事件通告,第三級過濾器404過濾出事件通告,而第三級過濾器403通過事件通告。第四級過濾器406過濾出事件通告,而第四級過濾器405和407通過事件通告。因此,事件通告?zhèn)魉偷狡邆€可能的事件消費者中的兩個,由兩個帶圈的箭頭表示。
通過使用這樣的過濾樹可以減少處理事件通告所需的平均處理和存儲源,特別是對那些具有較大量事件通告的情況。例如,每次收到預訂請求可重構(gòu)判定樹。另外,預訂請求可在臨時基礎上分配其自身的根目錄直到周期重構(gòu)過濾樹的時間到來。雖然這樣的過濾樹通常不會使給定資源的處理和存儲資源更少,但平均每次事件處理和存儲資源可明顯地減少。
圖5示出了根據(jù)本發(fā)明的用于執(zhí)行基于預訂的事件通告的方法500。該方法包括從一個或多個事件消費者接收一個或多個預訂的步驟(步驟501),以及從一個或多個事件源接收一個或多個事件通告的步驟(步驟502)。雖然步驟501和502是順序示出的,其實訂購和事件可在任何時候接收。
接著方法500包括將事件通告和從一個或多個事件消費者接收的一個或多個預訂的匹配步驟(步驟503)。該匹配步驟可采用圖3中的過濾器310執(zhí)行。接著過濾器執(zhí)行用于過濾一個或多個預訂的事件通告的步驟(步驟504)。這種功能性,面向結(jié)果的步驟可包括任意相應的能完成指定結(jié)果的步驟。在一個例子中,步驟504包括使事件通告?zhèn)魉徒o消費者(后者遞交與事件通告匹配的預訂)的各個相應步驟(步驟505),以及過濾事件通告而不發(fā)送事件通告到任何事件消費者(后者不遞交與事件通告匹配的預訂)的相應步驟(步驟506)。
再參考圖2,通道通過應用程序接口(API)與事件源和事件消費者通信。只要API能由通道,事件源和事件消費者辯認,精確的API對本發(fā)明并不重要??啥xPAI使其功能廣泛,本領域的普通技術人員回顧一下本描述就將清楚。
例如,本發(fā)明的原理可用于執(zhí)行靈活的日志記錄和進發(fā)的實時事件通告。例如,一個事件消費者可以是日志記錄應用程序,它遞交其對通道的預訂請求。然后通道只提供那些與對日志記錄的預訂請求相符的事件?,F(xiàn)在,代替記錄通過通道的各個事件,日志只記錄與其預訂最相關的事件。日志記錄應用程序本身可結(jié)合到通道中。網(wǎng)絡管理員也使用用戶接口,使日志記錄應用程序遞交網(wǎng)絡管理員感興趣的相應的特定預訂請求。
另外,其它事件消費者不必記錄事件,但可以使用實時事件通告。該實時事件通告可采用用于日志記錄的相同機制來控制。也就是,實時事件消費者為感興趣的事件遞交定購請求。然后,基本上在通道接收事件的同時,相關事件從通道傳送到事件消費者。
此外,在一些實施例中,本發(fā)明的原理使用遵循特定模式的事件。這種模式定義足夠靈活,使許多廣泛的名字值對對應特定的事件。另外,模式定義是可擴展的。當用于特定事件的名字值對的需要上升時,事件消費者或事件源可遞交請求,擴展模式定義使之包括特定的名字值對。例如,假設有定義關于接收電子郵件事件的特定模式,該模式提供接收時間,發(fā)送者名字,設定尺寸,副本清單和主題行?,F(xiàn)在假設需要了解在電子郵件文本中的前十個字。事件源或發(fā)布者可遞交API以擴展模式定義以包括對電子郵件文本中前十個字的容限。
通過使用由事件源、通道和事件消費者了解的模式,可更智能化地解釋事件的含義。例如,股票應用程序不僅能夠讀取值2025.57,也可以理解特定索引基金的當前封盤價。然后,應用程序也能夠執(zhí)行帶有上述值的任務,(如果不理解那個值的含義就不能執(zhí)行)。因此,本發(fā)明的原則可靈活、可擴充地表示關于事件的有意義的信息。
本發(fā)明的其它優(yōu)點是通過控制在特定通道中可接收哪個事件源和事件類型,可使事件通過由特定用戶需要的通道。因此,事件消費者可只處理那些感興趣的事件通道。這產(chǎn)生了管理和組織事件的有效手段。
在不背離本發(fā)明的精神和實質(zhì)特點時,本發(fā)明由其它的特定形式體現(xiàn)。所述實施例只是用于示范而不加限制。因此,本發(fā)明的范圍是由附加的權利要求指示的,而不是上述詳細描述。在權利要求的等價技術方案的意義和范圍中的變化處于它們的范圍中。
美國專利所要求保護的內(nèi)容請見權利要求書。
權利要求
1.在包括一個或多個事件源和一個或多個事件消費者的系統(tǒng)中,一種用于基于接收的預訂由一個或多個事件消費者并由一個或多個事件源引發(fā)的有條件處理事件的方法,其特征在于,該方法包括下面步驟從事件源接收事件通告的行動;將事件通告與從一個或多個事件消費者接收的一個或多個預訂相匹配的行動;和根據(jù)一個或多個訂購過濾事件通告的步驟。
2.如權利要求1所述的方法,其特征在于,還包括確定沒有一個或多個預訂與事件通告相匹配的行動,其中基于一個或多個預訂過濾事件通告的步驟包括下面步驟過濾出事件通告而不發(fā)送事件通告到任何事件消費者的行動。
3.如權利要求1所述的方法,其特征在于,還包括確定至少一些預訂與事件通告相匹配的行動,其中基于預訂過濾事件通告的步驟包括下面步驟發(fā)送事件通告到各個遞交了匹配事件通告的預訂的事件消費者的行動;和過濾出事件通告而不發(fā)送事件通告到任何未遞交匹配事件通告的預訂的事件消費者的行動。
4.如權利要求1所述的方法,其特征在于,還包括從一個或多個事件消費者接收一個或多個預訂的行動。
5.如權利要求4所述的方法,其特征在于,從一個或多個事件消費者接收一個或多個預訂的行動包括為使具有特定的特性被發(fā)送到接收事件消費者的事件通告,從請求實體接收預訂請求的步驟。
6.如權利要求5所述的方法,其特征在于,請求實體是接收事件消費者。
7.如權利要求5所述的方法,其特征在于,請求實體不同于那個接收事件消費者。
8.如權利要求5所述的方法,其特征在于,還包括確定請求實體是否具有預訂事件通告的安全權的行動。
9.如權利要求8所述的方法,其特征在于,確定請求實體是否具有預訂事件通告的安全權的行動,包括確定請求實體是否具有被發(fā)送到接收事件消費者的預訂事件通告的安全權的行動。
10.如權利要求8所述的方法,其特征在于,確定請求實體是否具有預訂事件通告的安全權的行動,包括確定請求實體是否具有被發(fā)送到接收事件消費者的具有特定特性的預訂事件通告的安全權的行動。
11.如權利要求5所述的方法,其特征在于,還包括下面行動;構(gòu)成包括許多互連的過濾器的過濾器樹的行動,過濾器樹將預訂請求與其它先前接收的預訂請求合并。
12.如權利要求5所述的方法,其特征在于,還包括下面行動根據(jù)事件通告的分類,確定事件通告將與模式定義符合的位置的行動。
13.如權利要求12所述的方法,其特征在于,從請求實體中接收預訂請求的步驟包括下面行動接收代表模式定義中位置的請求的行動。
14.如權利要求13所述的方法,其特征在于,將事件通告與一個或多個預訂匹配的行動包括下面行動確定由預訂請求代表的模式定義的位置是否符合事件通告將適合模式定義的位置的行動。
15.如權利要求14所述的方法,其特征在于,從請求實體接收預訂請求的步驟包括下面行動接收代表在模式定義中節(jié)點特性預訂請求的行動。
16.如權利要求15所述的方法,其特征在于,將事件通告與一個或多個預訂匹配的行動還包括下面行動確定由預訂請求代表的模式定義的位置是否對應于事件通告將適合模式定義的位置的行動;和確定由預訂請求代表的節(jié)點特性是否與處于使通告適合模式定義的位置的節(jié)點特性相符合的行動。
17.如權利要求5所述的方法,其特征在于,從請求實體接收訂購的行動包括下面行動接收代表模式定義中節(jié)點特性的預訂請求的行動。
18.如權利要求17所述的方法,其特征在于,將事件通告與一個或多個預訂相匹配的行動還包括下面行動確定由預訂請求代表的模式定義位置是否對應于使事件通告符合模式定義的位置的行動;和確定由預訂請求代表的節(jié)點特性是否與通告符合模式定義處所相應的節(jié)點特性相對應的行動。
19.如權利要求5所述的方法,其特征在于,還包括下面行動;只接收在第一通告通道中第一種類型事件通告的行動,其中只接收第一種類型的事件通告包括從事件源接收事件通告的行動。
20.如權利要求19所述的方法,其特征在于,還包括下面步驟只接收在第二通告通道中的第二類型事件通告的行動。
21.如權利要求5所述的方法,其特征在于,接收預訂請求的行動包括下面行動接收預訂請求以記錄具有特定特性的事件的行動。
22.如權利要求5所述的方法,其特征在于,接收預訂請求的行動包括下面行動接收預訂請求以接收具有特定特性的實時事件的行動。
23.如權利要求1所述的方法,其特征在于,事件源和至少事件消費者的一個位于單個計算機系統(tǒng)中。
24.如權利要求1所述的方法,其特征在于,事件源和至少事件消費者的一個位于不同的計算機系統(tǒng)中。
25.在包括一個或多個事件源和一個或多個事件消費者的系統(tǒng)中,一種用于基于接收的預訂由一個或多個事件消費者并由一個或多個事件源引發(fā)的有條件地處理事件的方法,其特征在于,該方法包括下面的行動從事件源接收事件通告的行動;將事件通告與從一個或多個事件消費者接收的一個或多個預訂相匹配的行動;發(fā)送事件通告到各個遞交與事件通告匹配的預訂的事件消費者的行動;過濾出事件通告,不發(fā)送事件通告到任何未遞交匹配事件通告的預訂的事件消費者的步驟。
26.如權利要求25所述的方法,其特征在于,還包括下面行動從一個或多個事件消費者接收一個或多個預訂的行動。
27.如權利要求26所述的方法,其特征在于,從一個或多個事件消費者接收一個或多個預訂的行動,包括下面行動從請求實體為具有使特定特性被發(fā)送給接收事件消費者的事件通告接收預訂請求的行動。
28.如權利要求27所述的方法,其特征在于,請求實體是接收事件消費者。
29.如權利要求27所述的方法,其特征在于,請求實體不是接收事件消費者。
30.如權利要求27所述的方法,其特征在于,還包括下面行動確定請求實體是否具有預訂事件通告的安全權的行動。
31.如權利要求30所述的方法,其特征在于,確定請求實體是否具有預訂事件通告的安全權的行動包括確定請求實體是否具有預訂被發(fā)送到接收事件消費者的事件通告的安全權的行動。
32.如權利要求30所述的方法,其特征在于,確定請求實體是否具有預訂事件通告的安全權的行動包括下面行動確定請求實體是否具有被發(fā)送到接收事件消費者的具有特定特性的預訂事件通告的安全權的行動。
33.如權利要求27所述的方法,其特征在于,還包括下面行動構(gòu)建包括多個互連的過濾器的過濾器樹的行動,過濾器樹將預訂請求和其它先前接收的預訂請求合并。
34.如權利要求27所述的方法,其特征在于,還包括下面行動根據(jù)事件通告的分類,確定事件通告符合模式定義處位置的行動。
35.如權利要求34所述的方法,其特征在于,從請求實體接收預訂請求的行動,包括下面行動接收代表模式定義中位置的請求的行動。
36.如權利要求35所述的方法,其特征在于,將事件通告與一個或多個預訂相匹配的行動包括下面行動確定由預訂請求代表的模式定義位置是否對應于事件通告符合模式定義的位置的行動。
37.如權利要求36所述的方法,其特征在于,從接收實體接收預訂請求的行動包括下面行動接收在模式定義中代表節(jié)點特性的預訂請求的行動。
38.如權利要求37所述的方法,其特征在于,將事件通告與一個或多個預訂相匹配的行動,還包括下面行動;確定由預訂請求模式定義位置是否與事件通告符合模式定義處的位置相對應的行動;和確定由預訂請求代表的節(jié)點特性是否與通告符合模式定義處的位置節(jié)點特性相對應的步驟。
39.如權利要求27所述的方法,其特征在于,從請求實體接收預訂請求的行動包括下面行動接收在模式定義中代表節(jié)點特性的預訂請求的行動
40.如權利要求39所述的方法,其特征在于,將事件通告與一個或多個預訂相匹配的行動包括下面行動確定由預訂請求代表的模式定義位置是否與相應于模式定義的事件通告位置相對應的行動;確定由預訂請求代表的節(jié)點特性是否與通告符合模式定義處所相應的節(jié)點特性相對應的行動。
41.如權利要求27所述的方法,其特征在于,還包括下面行動只接收在第一通告通道中第一種類型事件通告的行動,其中只接收第一種類型的事件通告的行動包括從事件源接收事件通告的行動。
42.如權利要求41所述的方法,其特征在于,還包括下面行動只接收在第二通告通道中的第二類型事件通告的行動。
43.如權利要求25所述的方法,其特征在于,事件源和至少事件消費者的一個位于單個計算機系統(tǒng)中。
44.如權利要求43所述的方法,其特征在于,事件源和至少事件消費者的一個位于不同的計算機系統(tǒng)中。
45.一種計算機程序產(chǎn)品,用于包括一個或多個事件源和一個或多個事件消費者的系統(tǒng)中,該計算機程序產(chǎn)品用于基于接收的預訂由一個或多個事件消費者并由一個或多個事件源引發(fā)的有條件地處理事件的方法,其特征在于,該計算機程序產(chǎn)品包括存儲了具有下面特征的一個或多個計算機可讀介質(zhì)用于檢測從事件源接收事件通告的計算機可執(zhí)行指令;用于將事件通告與從一個或多個事件消費者接收的一個或多個預訂相匹配的計算機可執(zhí)行指令;用于發(fā)送事件通告到各個遞交與事件通告匹配的預訂的事件消費者的計算機可執(zhí)行指令;用于過濾出事件通告,不發(fā)送事件通告到任何未遞交匹配事件通告的預訂的事件消費者的計算機可執(zhí)行指令。
46.如權利要求45所述的計算機程序產(chǎn)品,其特征在于,一個或多個計算機可讀介質(zhì)是物理存儲介質(zhì)。
47.如權利要求45所述的計算機程序產(chǎn)品,其特征在于,一個或多個計算機可讀介質(zhì)還存儲下列指令用于從請求實體為具有特定特性的發(fā)送給接收事件消費者的事件通告接收預訂請求的計算機可執(zhí)行指令。
48.如權利要求47所述的計算機程序產(chǎn)品,其特征在于,一個或多個計算機可讀介質(zhì)還存儲下列指令用于確定請求實體是否具有預訂事件通告的安全權的計算機可執(zhí)行指令。
49.如權利要求47所述的計算機程序產(chǎn)品,其特征在于,一個或多個計算機可讀介質(zhì)還存儲下列指令用于構(gòu)建包括多個互連的過濾器的過濾器樹的計算機可執(zhí)行指令,過濾器樹將預訂請求和其它先前接收的預訂請求合并。
50.如權利要求47所述的計算機程序產(chǎn)品,其特征在于,一個或多個計算機可讀介質(zhì)還存儲下列指令用于根據(jù)事件通告的分類,確定事件通告符合模式定義處位置的計算機可執(zhí)行指令。
51.如權利要求50所述的計算機程序產(chǎn)品,其特征在于,從請求實體檢測接收預訂請求的計算機可執(zhí)行指令包括下面指令用于檢測接收代表模式定義中位置的請求的計算機可執(zhí)行指令。
52.如權利要求51所述的計算機程序產(chǎn)品,其特征在于,將事件通告與一個或多個預訂相匹配的計算機可執(zhí)行指令,包括下面指令;用于確定由預訂請求代表的模式定義位置是否與相應于模式定義的事件通告位置相對應的計算機可執(zhí)行指令。
53.一種系統(tǒng),其特征在于,包括下面構(gòu)件一個或多個事件源;一個或多個事件消費者;一個或多個通告通道,構(gòu)建各個通告通道接收特定分類的事件通告,各個通告通道包括下面構(gòu)件模式定義模塊,構(gòu)建為維持模式定義;預訂模塊,構(gòu)建為接收代表模式定義中位置的預訂請求;和至少一個過濾器,構(gòu)建為確定事件通告符合模式定義處的位置,并構(gòu)建為過濾出那些不具有與一個或多個預訂請求代表位置相對應的模式定義中位置的事件通告。
54.如權利要求53所述的系統(tǒng),其特征在于,至少一個過濾器構(gòu)建為過濾器樹。
55.如權利要求53所述的系統(tǒng),其特征在于,各個通告通道還包括下面構(gòu)件安全性模塊,構(gòu)建為檢查各個預訂請求,以確定是否需要實行預訂請求。
全文摘要
基于預訂的通告,使用分別對應于特定范圍的事件通道。各個通道通過使用模式定義管理通告。事件預訂確定在模式定義中任意所需事件通道將取得的位置和屬性。該通道然后接收XML報片形式的事件通告,接著確定由模式定義確定的XML報片所取得的位置。該通道確定事件通告的位置和屬性是否與事件預訂的位置和屬性匹配。如果匹配,則復制事件通告并將其轉(zhuǎn)送到在相應預訂中指定的接收者。
文檔編號G06F11/34GK1452066SQ03107739
公開日2003年10月29日 申請日期2003年3月31日 優(yōu)先權日2002年4月15日
發(fā)明者A·埃爾施密, A·E·諾索弗, T·穆勒斯特恩, P·R·肯尼, R·W·麥克科倫姆 申請人:微軟公司