亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用戶可擴(kuò)展事件結(jié)構(gòu)的方法和設(shè)備的制作方法

文檔序號(hào):6419317閱讀:135來源:國知局
專利名稱:用戶可擴(kuò)展事件結(jié)構(gòu)的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及事件管理系統(tǒng)的領(lǐng)域,尤其涉及一個(gè)事件管理系統(tǒng)的用戶可擴(kuò)展事件結(jié)構(gòu)。
信息技術(shù)(IT)已經(jīng)從僅僅是巨型機(jī)的計(jì)算發(fā)展到復(fù)雜的、通過網(wǎng)絡(luò)跨越桌面和部門的高度分布式計(jì)算機(jī)系統(tǒng)。這些分布式計(jì)算環(huán)境提供的益處包括選擇任何數(shù)量的平臺(tái)、域、工具和網(wǎng)絡(luò)配置的靈活性。但是所述分布式環(huán)境可能是復(fù)雜的。進(jìn)一步,可能在軟件工具和平臺(tái)之間存在兼容性和集成化的缺乏。例如,常規(guī)的末端產(chǎn)品(pointproduct)(例如,由Platinum technology,inc.of Oak Brook,Illinois制造的Platinum DBVision產(chǎn)品)一般地針對(duì)專門技術(shù)的一個(gè)特定功能或區(qū)域,例如用于數(shù)據(jù)庫監(jiān)控和管理、作業(yè)調(diào)度或管理數(shù)據(jù)庫重組的解決方案。每一個(gè)末端產(chǎn)品提供一個(gè)特定的性能并且每一個(gè)也包括一個(gè)不同接口。另一方面,利用框架技術(shù)提供一個(gè)集成的解決方案,盡管較大地犧牲了工具功能性。進(jìn)一步,利用常規(guī)的末端產(chǎn)品或者框架技術(shù)來保持當(dāng)前企業(yè)環(huán)境要涉及大量的來自IT組織的資源和資金。
因此,需要一種集成系統(tǒng),用于提供利用與一個(gè)事件結(jié)構(gòu)的可兼容接口的工具,該事件結(jié)構(gòu)可以根據(jù)工具的需要被唯一地定義。
本發(fā)明的一個(gè)目的是提供一種用于通過包括用戶可擴(kuò)展事件結(jié)構(gòu)在內(nèi)的公用事件管理系統(tǒng)監(jiān)控在末端產(chǎn)品中發(fā)生的事件的集成系統(tǒng)。
本發(fā)明的一個(gè)方面提供了一種用于擴(kuò)展一個(gè)事件結(jié)構(gòu)的方法,包括為該事件結(jié)構(gòu)提交一個(gè)關(guān)鍵字名和一個(gè)相應(yīng)值,并判定所述關(guān)鍵字名是否存在于該事件結(jié)構(gòu)的關(guān)鍵字字段陣列中。如果關(guān)鍵字名沒有存在于關(guān)鍵字字段陣列中,所述方法包括遞增所述事件結(jié)構(gòu)的索引,將關(guān)鍵字名添加到基于該索引的關(guān)鍵字字段陣列中的一個(gè)位置,以及將相應(yīng)值添加到基于該索引的值字段陣列中的一個(gè)位置。如果關(guān)鍵字名存在于關(guān)鍵字字段陣列中,所述方法包括判定與關(guān)鍵字名相聯(lián)系的值字段陣列中先前存儲(chǔ)值的位置,并且用相應(yīng)值替換值字段陣列中的先前存儲(chǔ)值。


圖1顯示了包括多個(gè)節(jié)點(diǎn)的本發(fā)明的一個(gè)企業(yè)的一個(gè)例示實(shí)施例。
圖2顯示了本發(fā)明的一組集成末端產(chǎn)品的一個(gè)例示實(shí)施例。
圖3顯示了本發(fā)明的一個(gè)事件管理系統(tǒng)的框圖的一個(gè)例示實(shí)施例。
圖4顯示了在本發(fā)明的事件管理系統(tǒng)的多個(gè)節(jié)點(diǎn)之間通信的事件信息的一個(gè)例示實(shí)施例。
圖5顯示了擴(kuò)展本發(fā)明的事件結(jié)構(gòu)的一個(gè)過程的流程圖的例示實(shí)施例。
本發(fā)明的事件管理系統(tǒng)管理一個(gè)企業(yè)(例如一個(gè)計(jì)算機(jī)網(wǎng)絡(luò),例如局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)),使企業(yè)中出現(xiàn)的事件信息相互關(guān)聯(lián),以及基于預(yù)定策略采取校正動(dòng)作。例如,事件管理系統(tǒng)接收來自企業(yè)中的可兼容末端產(chǎn)品的事件消息。如圖1中所示,企業(yè)100可以包括多個(gè)節(jié)點(diǎn)110、120、130,這些節(jié)點(diǎn)例如由一個(gè)網(wǎng)絡(luò)(未顯示)連接。例如,節(jié)點(diǎn)是一個(gè)運(yùn)行一個(gè)操作系統(tǒng)的物理盒子,例如個(gè)人計(jì)算機(jī)、服務(wù)器等。在本發(fā)明的例示實(shí)施例中,一個(gè)節(jié)點(diǎn)可以是具有一個(gè)安裝在它上面的可兼容末端產(chǎn)品的個(gè)人計(jì)算機(jī)。在本發(fā)明的例示實(shí)施例中,事件管理系統(tǒng)140管理產(chǎn)生事件的節(jié)點(diǎn)110、120、130上的事件,最小化網(wǎng)絡(luò)上數(shù)據(jù)的移動(dòng),并保持諸如數(shù)據(jù)估算、報(bào)告和自動(dòng)校正之類的動(dòng)作接近于數(shù)據(jù)源。
在如圖2中所示的本發(fā)明的一個(gè)例示實(shí)施例中,事件管理系統(tǒng)270可以包括在集成工具的一個(gè)組合200中,它包括用于例如管理應(yīng)用程序、數(shù)據(jù)庫、桌面、網(wǎng)絡(luò)和系統(tǒng)的可兼容末端產(chǎn)品。工具230、240、250、260可以使用一系列公用服務(wù)210來共享與事件有關(guān)的數(shù)據(jù)。例如,導(dǎo)控器(director)220是在一個(gè)傳統(tǒng)的服務(wù)器計(jì)算機(jī)中運(yùn)行的用于可兼容末端產(chǎn)品230、240、250、260的一個(gè)共享的公共圖形用戶界面(GUI)。在本發(fā)明的一個(gè)例示實(shí)施例中,導(dǎo)控器220在WindowsNT和Windows 95下運(yùn)行,并作為一個(gè)允許用戶對(duì)于包括企業(yè)中的可兼容末端產(chǎn)品230、240、250、260的所有資源進(jìn)行觀察和交互的單獨(dú)控制臺(tái)進(jìn)行操作。
由本發(fā)明的事件管理系統(tǒng)利用的信息的基本可管理單元是一個(gè)被稱為事件的結(jié)構(gòu)化消息。一個(gè)事件代表有關(guān)由于企業(yè)中資源或針對(duì)企業(yè)中資源的一些有效事件的信息。事件由事件管理系統(tǒng)中的可兼容末端產(chǎn)品和事件管理器來發(fā)送和接收。例如,事件是用于管理企業(yè)的實(shí)時(shí)信息處理的基本構(gòu)件塊。事件定義了可公開、可共享的信息的基本單元和事件應(yīng)該被保存和傳送的格式。例如,事件的結(jié)構(gòu)包括用于任何事件記錄所需的基本信息的預(yù)定義字段。預(yù)先確定的字段分成兩個(gè)范疇標(biāo)識(shí)字段;和非標(biāo)識(shí)字段。標(biāo)識(shí)字段是共同形成事件的一個(gè)唯一關(guān)鍵字、將其與另一個(gè)事件區(qū)分開的字段。非標(biāo)識(shí)字段是添加關(guān)于一個(gè)事件的附加信息但不加入到事件的關(guān)鍵字中的字段。本發(fā)明的事件管理系統(tǒng)允許事件結(jié)構(gòu)由用戶通過動(dòng)態(tài)地添加關(guān)鍵字值對(duì)來擴(kuò)展,并因此允許唯一地定義各個(gè)事件結(jié)構(gòu)。因此,將關(guān)鍵字值對(duì)添加到一個(gè)事件結(jié)構(gòu)使得一個(gè)末端產(chǎn)品能夠公開該唯一定義的事件,否則該事件將不會(huì)被公開,因?yàn)樗鼘⒉荒苡墒录念A(yù)先確定的字段唯一地定義。
下面例如以C語言定義依據(jù)本發(fā)明的一個(gè)實(shí)施例的例示事件結(jié)構(gòu)。
<pre listing-type="program-listing"><![CDATA[typedef struct_PT_EVENT{int Version; /*事件結(jié)構(gòu)版本*/PT_CHAR_T *Node; /*事件節(jié)點(diǎn)*/PT_CHAR_T *Class; /*事件類別*/PT_CHAR_T *Instance /*始發(fā)產(chǎn)品實(shí)例*/PT_CHAR_T *Name; /*事件名稱*/PT_CHAR_T *Time; /*事件時(shí)間(yyyymmdd hh 24miss)*/PT_CHAR_T *CondTime; /*條件時(shí)間(yyyymmdd hh 24miss)*/PT_CHAR_T *AgentNode; /*運(yùn)行檢測(cè)代理程序的節(jié)點(diǎn)*/PT_CHAR_T *EvmgrNode; /*響應(yīng)事件mgr運(yùn)行的節(jié)點(diǎn)*/PT_EVENT_TYPE Type;/*事件類型(EV_DISCRETE...)*/PT_RESP_TYPE Response;/*響應(yīng)類型(EVRE_SILENCE...)*/PT_CHAR_T *RespPolicy; /*響應(yīng)策略*/PT_CHAR_T *Descr; /*描述*/PT_CHAR_T *DescrId;/*MsgPut的消息串關(guān)鍵字*/PT_CHAR_T *DescrFields;/*消息中的替換的字段列表*/doubleValue; /*值(條件/報(bào)警事件)*/int Level; /*報(bào)警級(jí)(for type=EV_ALARM_SET)*/PT_CHAR_T *IntKeys;/*應(yīng)用程序?qū)S脙?nèi)部關(guān)鍵字*/int NumKey; /*跟隨的關(guān)鍵字/值對(duì)數(shù)*/PT_CHAR_T **Keys; /*其他關(guān)鍵字陣列(屬性)名稱*/PT_CHAR _T**Values;/*其他關(guān)鍵字陣列(屬性)值*/BOOL Archived;/*布爾標(biāo)志,如果事件被存檔則為真*/PT_CHAR_T *Id; /*唯一的事件ID*/PT_CHAR_T *CondId; /*條件ID*/int RepeatCount; /*這種類型的用于風(fēng)暴抑制的復(fù)制事件的計(jì)數(shù)值*/int HopCount;/*Here Comes Peter Cotton Tail...*/PT_CHAR_T *GMTOffset; /*GMT偏移*/int ActionTaken; /*布爾標(biāo)志,進(jìn)程中的響應(yīng)動(dòng)作*/BOOL Silenced;/*布爾標(biāo)志,使報(bào)警抑制*/PT_CHAR_T *ProductName; /*提交產(chǎn)品的產(chǎn)品名稱*/PT_CHAR_T *InstanceType; /*實(shí)例中的實(shí)例類型*/void *localParam; /*異常分支,以允許本地的與事件相關(guān)的 數(shù)據(jù)*/PT_CHAR_T *AuthString; /*授權(quán)串的位置標(biāo)志符,事件內(nèi)容簽名的 形式*/PT_CHAR_T *TTId; /*故障單ID*/PT_CHAR_T *TTStatus; /*故障單狀態(tài)*/}_PT_EVENT;]]></pre>例示事件的標(biāo)識(shí)字段是節(jié)點(diǎn)、名稱、產(chǎn)品、實(shí)例、類型、條件_時(shí)間(如果類型不是離散的話)、事件時(shí)間(如果類型是離散的話)、包括關(guān)鍵字字段陣列和值字段陣列的內(nèi)容的所有關(guān)鍵字值對(duì)(字段,例如NumKeys,包括一個(gè)指示在它們各自的字段陣列中的關(guān)鍵字值對(duì)的個(gè)數(shù)的數(shù))。所有其它預(yù)先定義的字段是非標(biāo)識(shí)字段。
事件可以分為多個(gè)類型,例如包括離散事件、條件和報(bào)警。離散事件是那些指示某事在一特定時(shí)間出現(xiàn)并且完全自含的事件。離散事件的出現(xiàn)不具有狀態(tài)并且不被更新。例如,一個(gè)失敗的登錄嘗試可以引起一個(gè)離散事件的產(chǎn)生。條件是那些指示持續(xù)了一段時(shí)間并且可以具有更新的屬性的某事的狀態(tài)的事件。由一個(gè)產(chǎn)品聲明的事件由那個(gè)產(chǎn)品所擁有。一般地,僅僅各自的末端產(chǎn)品可以更新或清除在該末端產(chǎn)品上產(chǎn)生的條件事件。離散和條件事件的內(nèi)容代表關(guān)于企業(yè)的真實(shí)信息,這些信息在沒有改變引起事件的出現(xiàn)時(shí)不能被改變。例如,一個(gè)報(bào)警是基于用戶可配置策略的其它事件的解釋。因此,用戶可以在任何時(shí)候在不解決引起它的條件的情況下清除一個(gè)報(bào)警。類似地,在報(bào)警所基于的事件被清除之后報(bào)警也可以持續(xù)。
如圖3所示,本發(fā)明的事件管理系統(tǒng)300的一個(gè)例示實(shí)施例包括事件管理器310、事件檔案320、事件相關(guān)器330、報(bào)警規(guī)則存儲(chǔ)器340和響應(yīng)機(jī)350。在本發(fā)明的一個(gè)例示實(shí)施例中,事件管理器310、事件檔案320、事件相關(guān)器330、和響應(yīng)機(jī)350包括在企業(yè)的全部節(jié)點(diǎn)上并且報(bào)警規(guī)則存儲(chǔ)器340包括在一個(gè)中央存儲(chǔ)器上,允許在本地存儲(chǔ)和管理事件。
在本發(fā)明的一個(gè)例示實(shí)施例中,事件管理系統(tǒng)例如可以從例如遍及一個(gè)企業(yè)的末端產(chǎn)品來接收事件消息。在企業(yè)的一個(gè)節(jié)點(diǎn)上管理事件,其中事件由位于各個(gè)節(jié)點(diǎn)上的事件管理器310接收。事件管理器310例如可以接收全部事件,保持先前發(fā)送的事件的狀態(tài),保持預(yù)訂的列表,并且將事件發(fā)送到合適的用戶。在本發(fā)明的一個(gè)例示實(shí)施例中,事件和它們的狀態(tài)以及預(yù)訂的列表可以在本地保存。
如圖4中所示,節(jié)點(diǎn)a 401的事件管理器402和節(jié)點(diǎn)b 410的事件管理器411也接收來自節(jié)點(diǎn)b 410的事件相關(guān)器413的事件信息。節(jié)點(diǎn)b 410的事件管理器411也向節(jié)點(diǎn)b 410上的事件相關(guān)器413提供事件。事件管理器411也接收來自末端產(chǎn)品415的事件信息,在末端產(chǎn)品中事件正實(shí)際上在出現(xiàn)。事件管理器402、411例如保持事件和它們的相關(guān)狀態(tài)和預(yù)訂列表。每一個(gè)事件管理器可以具有一個(gè)本地存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器,例如,一個(gè)黑板,其中存儲(chǔ)了完全狀態(tài)事件。黑板可以在基于文件的存儲(chǔ)器中持續(xù)保持,用于跨代恢復(fù)信息(事件管理器的過程調(diào)用)。預(yù)訂事件的客戶跨越事件管理器的新調(diào)用負(fù)責(zé)重建各個(gè)預(yù)訂。因此,預(yù)訂可以保存在存儲(chǔ)器中。對(duì)于由事件管理器接收的全部事件,也可以保存本地事件檔案。本發(fā)明的事件管理系統(tǒng)也可以使來自多個(gè)節(jié)點(diǎn)的事件相關(guān)聯(lián)。在本發(fā)明的一個(gè)例示實(shí)施例中,事件管理系統(tǒng)提供合并到單個(gè)管理站的事件的視圖或跨越節(jié)點(diǎn)邊界的視圖/范疇中的事件視圖。
構(gòu)造本發(fā)明的事件管理系統(tǒng)以便通過事件預(yù)訂用不同于節(jié)點(diǎn)的標(biāo)準(zhǔn)來查詢或表示對(duì)事件組的興趣。事件預(yù)訂允許在事件的字段的內(nèi)容上的標(biāo)準(zhǔn)的說明??梢詫?duì)一特定過程的感興趣的事件的確定例如類推到寫入一個(gè)請(qǐng)求匹配有關(guān)記錄的各個(gè)字段的標(biāo)準(zhǔn)的記錄的數(shù)據(jù)庫查詢。本發(fā)明的請(qǐng)求與普通數(shù)據(jù)庫查詢的不同之處在于,它不單單是對(duì)已經(jīng)存在的數(shù)據(jù)的請(qǐng)求,還是對(duì)還要出現(xiàn)或存在的事件集合的正在進(jìn)行的請(qǐng)求。
例如當(dāng)對(duì)一個(gè)事件、例如出現(xiàn)在末端產(chǎn)品415上的事件作出預(yù)訂時(shí),一個(gè)預(yù)訂請(qǐng)求被發(fā)送到節(jié)點(diǎn)b 410上的事件管理器411。事件管理器411接收該請(qǐng)求并且將此請(qǐng)求添加到它的未解決請(qǐng)求的列表中,這些請(qǐng)求例如可以被存儲(chǔ)在存儲(chǔ)器中。事件管理器411檢查例如預(yù)先存儲(chǔ)在各自的黑板中的的未解決事件,以查看它是否與請(qǐng)求標(biāo)準(zhǔn)匹配。將每一個(gè)匹配的事件傳送、例如公開給請(qǐng)求者(例如事件的用戶)。任何接收到的并且匹配于預(yù)訂標(biāo)準(zhǔn)的新事件也被傳送。此過程可以連續(xù)到預(yù)訂被取消為止。
在本發(fā)明的例示實(shí)施例中,當(dāng)預(yù)訂形成時(shí)為它分配一個(gè)唯一的ID。唯一的ID和該請(qǐng)求所起源于的數(shù)據(jù)組唯一地定義所述預(yù)訂。例如,通過利用來自原始預(yù)訂的返回請(qǐng)求句柄調(diào)用一個(gè)API來取消預(yù)訂。這導(dǎo)致了用各自的請(qǐng)求ID將取消消息發(fā)送給事件管理器。然后事件管理器可以將取消請(qǐng)求同原始預(yù)定進(jìn)行匹配,并從事件管理器的處理隊(duì)列中除去它。
在一個(gè)節(jié)點(diǎn)上公開的所有事件由該節(jié)點(diǎn)的事件管理器接收。事件管理器也接收和保存由過程從其節(jié)點(diǎn)和其它節(jié)點(diǎn)發(fā)送的所有請(qǐng)求。在接收到事件時(shí),事件管理器也分配一個(gè)事件ID。事件管理器判定事件是否是一個(gè)條件,并且如果是,事件管理器檢查例如一個(gè)黑板來判定該事件是否匹配一個(gè)現(xiàn)有條件。如果是,為該條件事件分配現(xiàn)有條件的一個(gè)條件ID。進(jìn)一步,如果允許存檔,該事件被存檔。例如,在本發(fā)明的一個(gè)例示實(shí)施例中,存檔可以包括將所述事件存儲(chǔ)在一個(gè)數(shù)據(jù)庫(例如平面文件檔案)中。可以為每一個(gè)日歷日使用一個(gè)單獨(dú)的文件。事件可以按照它們被接收的順序作為新行定界記錄被寫到用于事件中的時(shí)戳日的檔案中。
事件管理器還檢查所有未解決的預(yù)訂請(qǐng)求。對(duì)于除了條件更新之外的任何事件,如果所接收的事件與請(qǐng)求相匹配,事件管理器將事件傳送到請(qǐng)求者。在對(duì)條件更新的情況下,是更新的事件與請(qǐng)求相匹配。因此,事件管理器將更新事件發(fā)送到請(qǐng)求者。本發(fā)明的事件預(yù)訂包括一個(gè)事件過濾器,該事件過濾器在Platinum Provision Common ServicesReference Guide,Version 1.08(1998年10月,Platinum technology inc.)中有詳細(xì)描述,在這里結(jié)合其整體作為參考。
在1998年12月31日申請(qǐng)的、代理人檔案號(hào)為22074661/25546、標(biāo)題為“動(dòng)態(tài)事件過濾和路由的方法和裝置”的共同未決的專利申請(qǐng)中描述了事件過濾器,其中在這里結(jié)合其整體作為參考,該事件過濾器描述了所感興趣事件的識(shí)別標(biāo)準(zhǔn),并允許可以為一個(gè)包括擴(kuò)展事件結(jié)構(gòu)的關(guān)鍵字值對(duì)的事件的每個(gè)字段指定的各種形式比較的說明。事件過濾器例如是一個(gè)由子表達(dá)式組成的布爾表達(dá)式,將事件的一個(gè)字段與一個(gè)用戶指定的值進(jìn)行比較。事件過濾器例如與結(jié)構(gòu)化查詢語言(SQL)中的“WHERE”子句類似。事件過濾器的基本子表達(dá)式例如是將事件的一個(gè)字段與一個(gè)值進(jìn)行比較的短語,例如,node=ptisun20。子表達(dá)式node=ptisun20的意思是事件的節(jié)點(diǎn)字段必須與字符串“ptisun20”準(zhǔn)確匹配。除了需要一特定語法的關(guān)鍵字字段陣列和值字段陣列之外,事件結(jié)構(gòu)的任何字段可以用作在這個(gè)例子中所用的節(jié)點(diǎn)字段。例如,如果所增加的一個(gè)關(guān)鍵字值對(duì)是關(guān)鍵字 值FileSystem /usr,則對(duì)這個(gè)關(guān)鍵字值對(duì)的準(zhǔn)確匹配過濾器將為keyfield.FileSystem=“/usr”。進(jìn)一步地,對(duì)一個(gè)帶有任意值的關(guān)鍵字的存在的測(cè)試可以通過測(cè)試它不與一個(gè)空值匹配來完成,例如,keyfield.FileSystem?。健啊酢?。事件過濾器可以作為C源代碼(例如,在程序中硬編碼)等等被存儲(chǔ)在能夠存儲(chǔ)文本串的任何地方,例如存儲(chǔ)在諸如平面文本文件的配置文件中、數(shù)據(jù)庫中、存儲(chǔ)器中。
在事件的關(guān)鍵字值對(duì)的值上也可采用過濾。與在較早的例子中一樣,可以有一個(gè)帶有相關(guān)值的關(guān)鍵字“FileSystem”,該相關(guān)值是一個(gè)特定文件系統(tǒng)的名稱。所希望的事件可以僅僅是那些用于一特定文件系統(tǒng)的事件,例如/usr。用于一個(gè)關(guān)鍵字的相應(yīng)值的過濾機(jī)構(gòu)指定該關(guān)鍵字并測(cè)試相關(guān)值。采用一個(gè)特定語法來將關(guān)鍵字與事件的其他字段區(qū)分開來,允許用于關(guān)鍵字的與事件的預(yù)定義字段的不同名稱空間。這個(gè)語法是“keyfield.[name]”。對(duì)一個(gè)關(guān)鍵字值對(duì)的值/usr的測(cè)試?yán)永缡莐eyfield.FileSystem=/usr。
在本發(fā)明的例示實(shí)施例中,事件過濾器可以包括比較操作符、例如=以及用操作符“l(fā)ike”指定的全正規(guī)表達(dá)式匹配。例如,過濾器可以是node=ptisun05。匹配遵循ptisun[#]模式的所有節(jié)點(diǎn)值的過濾器為node like“ptisun
+”。下面是事件過濾器比較操作符的例示列表>=(大于或等于),<=(小于或等于),>(大于),<(小于),=(等于),like(匹配一正規(guī)表達(dá)式),likeci(不區(qū)分大小寫的串匹配)以及?。?不等于)。
在本發(fā)明的例示實(shí)施例中,可以使用下面的用另一種編譯程序的編譯程序(yacc)實(shí)施的標(biāo)記、產(chǎn)生規(guī)則和事件過濾器定義。
<pre listing-type="program-listing"><![CDATA[%token NO_MORE_TOKENS ?。oken FILTER ?。oken <symp> NAME ?。oken <symp> FUNC_PART  %token <keywp> BOOLEAN ?。oken <keywp> COMPOP  %token <keywp> SEPARATOR%token <keywp> LEFTPAREN ?。oken <keywp> RIGHTPAREN  %left BOOLEAN ?。ype <evalp> filter  %type <evalp> statement ?。ィァ tatementFILTER filter NO_MORE_TOKENS  filterNAME COMPOP NAME  |FUNC_PART SEPARATOR NAME COMPOP NAME  |NAME COMPOP FUNC_PART SEPARATOR NAME  |filter BOOLEAN filter  |LEFTPAREN filter RIGHTPAREN]]></pre>在本發(fā)明的例示實(shí)施例中,事件管理器411可以實(shí)施為一個(gè)數(shù)據(jù)自適應(yīng)鑒定監(jiān)視器(daemon)(例如,在UNIX服務(wù)器上連續(xù)操作并向網(wǎng)絡(luò)上的客戶機(jī)系統(tǒng)提供資源的代理程序)。在接收到一個(gè)事件后,事件管理器411確定事件的配置,包括它是否已經(jīng)接收到事件以及事件狀態(tài)是否改變。事件管理器411還將事件寫到本地事件檔案412,并將事件發(fā)送到預(yù)訂該事件內(nèi)容的所有客戶機(jī)。例如,事件管理器411可以向節(jié)點(diǎn)402上的事件相關(guān)器413提供事件信息。事件檔案412可以包括一個(gè)事件檔案服務(wù)處理器。事件檔案412服務(wù)處理器從事件檔案讀出事件。用戶可以包括具有預(yù)訂該事件的報(bào)警規(guī)則以及例如包含一個(gè)資源對(duì)象的導(dǎo)控器或預(yù)訂關(guān)于中央存儲(chǔ)器中的內(nèi)容的更新事件(例如數(shù)據(jù)交換服務(wù)(DEX))的產(chǎn)品的任何事件相關(guān)器413實(shí)例。
事件相關(guān)器413在1998年12月31日申請(qǐng)的、代理人檔案號(hào)為22074661/25548、標(biāo)題為“事件的動(dòng)態(tài)相關(guān)的系統(tǒng)和方法”的共同未決的專利申請(qǐng)中進(jìn)行了描述,在這里結(jié)合其整體作為參考,該事件相關(guān)器例如可以包括一個(gè)事件相關(guān)器服務(wù)處理器。事件相關(guān)器413實(shí)現(xiàn)在一個(gè)報(bào)警規(guī)則中指定的用戶策略。報(bào)警是一種向有效條件或出現(xiàn)的用戶提供通知的事件類型。一個(gè)報(bào)警的確定包括單個(gè)事件的出現(xiàn)、當(dāng)另一個(gè)事件出現(xiàn)時(shí)某個(gè)(某些)現(xiàn)有狀態(tài)的出現(xiàn)或在一固定時(shí)間窗內(nèi)一特定事件的重復(fù)出現(xiàn)。進(jìn)一步地,報(bào)警可以是在某個(gè)狀態(tài)或某些狀態(tài)存在時(shí)在一固定時(shí)間窗內(nèi)一特定事件的重復(fù)出現(xiàn)的組合。
確定報(bào)警是否出現(xiàn)的事件可以歸因于在事件相關(guān)器413的同一節(jié)點(diǎn)上的事件,或者可以來自于一個(gè)或多個(gè)其他節(jié)點(diǎn)401、410。報(bào)警還可以與允許一個(gè)響應(yīng)機(jī)414處理報(bào)警的任何自動(dòng)通知或校正的聲明的自動(dòng)響應(yīng)策略相聯(lián)系。事件相關(guān)器413例如可以生成一個(gè)報(bào)警、一個(gè)所接收事件的修改版本或一個(gè)可以由另一個(gè)報(bào)警規(guī)則相關(guān)聯(lián)的全新事件。
事件可以通過一個(gè)報(bào)警規(guī)則來相關(guān)。報(bào)警規(guī)則的基礎(chǔ)是確定應(yīng)該被分析的事件。報(bào)警規(guī)則可以被生成以便定義哪一單個(gè)事件或一組事件代表要響應(yīng)的有效出現(xiàn)。報(bào)警規(guī)則可以包括描述代表一個(gè)出現(xiàn)的事件的描述和邏輯以及事件管理系統(tǒng)對(duì)該出現(xiàn)的響應(yīng)的定義。相關(guān)的結(jié)果是生成一個(gè)或多個(gè)事件。報(bào)警規(guī)則例如可以通過導(dǎo)控器404定義。
響應(yīng)機(jī)414執(zhí)行一個(gè)響應(yīng)策略。響應(yīng)機(jī)414包括多個(gè)過程。響應(yīng)策略例如是一個(gè)包含由事件相關(guān)器413產(chǎn)生的觸發(fā)報(bào)警所調(diào)用的邏輯語句所連接的動(dòng)作的列表的邏輯表達(dá)式。多個(gè)動(dòng)作可以被定義并在響應(yīng)策略中執(zhí)行。在本發(fā)明的例示實(shí)施例中,多個(gè)動(dòng)作可以是在一個(gè)列出的序列中,或者添加有邏輯,使得每個(gè)動(dòng)作在接收到另一個(gè)動(dòng)作的返回代碼或在報(bào)警中發(fā)出的指定字段時(shí)是可能發(fā)生的。響應(yīng)策略可以通過定義一組動(dòng)作并組成一個(gè)按邏輯順序引用這些動(dòng)作中的一個(gè)或多個(gè)的表達(dá)式來生成。動(dòng)作可以是全局的,并由多個(gè)響應(yīng)策略調(diào)用。在本發(fā)明的一個(gè)例示實(shí)施例中,響應(yīng)機(jī)414還在每個(gè)步驟完成時(shí)將關(guān)于每個(gè)動(dòng)作的成功的信息添加到觸發(fā)報(bào)警。這例如可以通過發(fā)送一個(gè)更新報(bào)警事件來完成,更新報(bào)警事件用剛剛完成的步驟序號(hào)、步驟類型(例如,電子郵件/頁)以及在事件檔案中動(dòng)作步驟的名稱來更新事件。這個(gè)信息可以通過一個(gè)導(dǎo)控器來訪問。
在本發(fā)明的例示實(shí)施例中,響應(yīng)機(jī)414例如可以包括第一過程、第二過程和第三過程。第一過程預(yù)訂由一個(gè)作為響應(yīng)機(jī)414在同一節(jié)點(diǎn)410上運(yùn)行的事件相關(guān)器413發(fā)送的事件。在接收到一個(gè)具有相關(guān)響應(yīng)策略的報(bào)警之后,第一過程調(diào)用第二過程來執(zhí)行該策略。第一過程可以調(diào)用第二過程的多個(gè)實(shí)例,這取決于與各個(gè)過程相聯(lián)系的配置文件中的設(shè)置。第二過程執(zhí)行一個(gè)要求發(fā)送事件的動(dòng)作,并調(diào)用第三過程來執(zhí)行任何其他動(dòng)作。響應(yīng)機(jī)414的第三過程也可以執(zhí)行一個(gè)要求調(diào)用操作系統(tǒng)的響應(yīng)策略動(dòng)作,例如發(fā)送電子郵件消息、調(diào)用一個(gè)腳本、發(fā)送一頁、向文件寫消息或?qū)⑹录鳛楹唵尉W(wǎng)絡(luò)管理協(xié)議(SNMP)陷阱(trap)發(fā)送。
在本發(fā)明的一個(gè)例示實(shí)施例中,事件結(jié)構(gòu)包括一個(gè)關(guān)鍵字字段和一個(gè)值字段,每個(gè)字段都具有可擴(kuò)展的字符陣列。事件結(jié)構(gòu)還可以包括一個(gè)字段,例如NumKeys,該字段包括在其各個(gè)字段陣列中包含的關(guān)鍵字值對(duì)的個(gè)數(shù)。圖5顯示了將關(guān)鍵字值對(duì)添加到本發(fā)明的事件結(jié)構(gòu)的流程圖的例示實(shí)施例。在步驟510,用戶例如通過一個(gè)末端產(chǎn)品為一相應(yīng)事件結(jié)構(gòu)提交要添加到該事件結(jié)構(gòu)的一個(gè)事件關(guān)鍵字名和一個(gè)相應(yīng)值。在本發(fā)明的一個(gè)例示實(shí)施例中,通過添加關(guān)鍵字值對(duì)來擴(kuò)展事件結(jié)構(gòu)例如可以通過一個(gè)函數(shù)調(diào)用來實(shí)現(xiàn),例如intPtEventSetKeyValuePair(PT_EVENTPtEvent,PT_CHAR_T*KeyName,PT_CHAR_T*Value)。
在步驟520,如果事件、關(guān)鍵字名和值中的任何一個(gè)是空的,則本發(fā)明的事件管理系統(tǒng)的事件應(yīng)用程序接口(API)將提供一個(gè)出錯(cuò)消息,并退出將關(guān)鍵字值對(duì)添加到事件結(jié)構(gòu)的過程,如步驟530所示。否則,在步驟540中,事件API將判定關(guān)鍵字名是否已經(jīng)存在于關(guān)鍵字字段陣列中。
在本發(fā)明的一個(gè)例示實(shí)施例中,事件API在其他關(guān)鍵字名已經(jīng)存儲(chǔ)在關(guān)鍵字字段陣列中的情況下通過檢查輸入關(guān)鍵字名來判定一個(gè)關(guān)鍵字名是否存在,這例如是通過函數(shù)intPtEventFindKeyByIndex(PT_EVENT PtEvent,PT_CHAR_T*KeyName,int*index)進(jìn)行的。在步驟580,如果在關(guān)鍵字字段陣列中找到該關(guān)鍵字名,則確定一個(gè)指示關(guān)鍵字名在陣列中的位置的索引,并且可以例如提供給一個(gè)以索引為變量的調(diào)用函數(shù)。如果找到該關(guān)鍵字名,可以將一個(gè)返回代碼例如提供給一個(gè)調(diào)用函數(shù),該調(diào)用函數(shù)例如是PT_SUCCESS,并且如果未找到該關(guān)鍵字名,該調(diào)用函數(shù)例如是PT_FAIL。進(jìn)一步地,在本發(fā)明的例示實(shí)施例中,關(guān)鍵字字段陣列和值字段陣列的大小相同,關(guān)鍵字和相應(yīng)值在其各自的陣列中具有相同的索引。因此,如果關(guān)鍵字名被定位,則由用戶提交的相應(yīng)值被提供到值字段陣列中由相應(yīng)的索引所指示的相應(yīng)位置,例如如步驟590所示替換先前值。或者,輸入的關(guān)鍵字名的相應(yīng)值可以通過一個(gè)函數(shù)被提供到一個(gè)調(diào)用函數(shù),該函數(shù)例如為intPtEventGetKeyValuePair(PT_EVENT PtEvent,PT_CHAR_T*KeyName,const PT_CHAR_T**KeyValue)。這個(gè)函數(shù)將從一個(gè)相應(yīng)的關(guān)鍵字名獲得相應(yīng)值,并將輸入關(guān)鍵字的當(dāng)前相應(yīng)值提供給調(diào)用程序。
如果輸入的關(guān)鍵字名在步驟550中未找到,事件API將索引設(shè)置為在關(guān)鍵字字段陣列和值字段陣列中的下一可用索引,例如,比NumKeys的當(dāng)前值大1。在步驟560,事件API將輸入的關(guān)鍵字名提供到關(guān)鍵字字段陣列中由索引(例如字段NumKeys中的值)指示的位置。在本發(fā)明的一個(gè)例示實(shí)施例中,關(guān)鍵字可以通過一個(gè)函數(shù)、例如int PtEventSetKeyNameByIndex(PT_EVENT PtEvent,int Index,PT_CHAR_T*Key)來設(shè)置。如果關(guān)鍵字字段陣列在由索引指示的位置已經(jīng)包含一個(gè)關(guān)鍵字,則輸入的關(guān)鍵字名替換先前存儲(chǔ)的關(guān)鍵字。事件API還判定相應(yīng)事件、例如PtEvent和關(guān)鍵字是否是空的以及索引是否小于1。如果PtEvent和關(guān)鍵字中的任何一個(gè)是空的并且索引小于1,事件API提供一個(gè)出錯(cuò)消息,并且不設(shè)置關(guān)鍵字。
在步驟570,事件API將輸入的關(guān)鍵字名的相應(yīng)值提供到值字段陣列中由索引(例如字段NumKeys中的值)指示的位置。在本發(fā)明的一個(gè)例示實(shí)施例中,輸入關(guān)鍵字名的相應(yīng)值可以通過一個(gè)函數(shù)、例如int PtEventSetKeyValueByIndex(PT_EVENT PtEvent,int Index,PT_CHAR_T*Value)來設(shè)置。事件API還判定相應(yīng)事件、例如PtEvent和值是否是空的以及索引是否小于1。如果PtEvent和值中的任何一個(gè)是空的并且索引小于1,事件API提供一個(gè)出錯(cuò)消息,并且不設(shè)置值。
在本發(fā)明的一個(gè)例示實(shí)施例中,采用函數(shù)extern intPtEventSetKeyValuePair(PT_EVENT,PT_CHAR_T*,PT_CHAR_T*)來生成事件中的一個(gè)新關(guān)鍵字值對(duì)。例如,如果事件的一個(gè)附加屬性是事件所屬的文件系統(tǒng)的名稱,call PtEventSetKeyValuePair(PtEvent,“FileSystem”,“/usr”)例如將在報(bào)告該事件的企業(yè)的一個(gè)節(jié)點(diǎn)上增加文件系統(tǒng)/usr的一個(gè)關(guān)鍵字值對(duì)。再次用同一關(guān)鍵字調(diào)用這個(gè)函數(shù)將更新該值。
在本發(fā)明的一個(gè)例示實(shí)施例中,函數(shù)、例如extern intPtEventRemoveKeyValuePair(PT_EVENT,PT_CHAR_T*)允許用戶倒轉(zhuǎn)向一個(gè)事件增加一個(gè)關(guān)鍵字值對(duì)的動(dòng)作。例如通過從其相應(yīng)陣列中定位并去除關(guān)鍵字值對(duì)來倒轉(zhuǎn)這個(gè)動(dòng)作。進(jìn)一步地,將陣列中比去除的關(guān)鍵字值對(duì)高的所有關(guān)鍵字值對(duì)都向后移一位,相應(yīng)陣列的尺寸減1,并且字段中的索引值、例如NumKeys減1。在本發(fā)明的一個(gè)例示實(shí)施例中,函數(shù)extern int PtEventGetKeys(PT_EVENT,PT_CHAR_T***,int*)例如獲得用于為相應(yīng)事件擴(kuò)展一個(gè)事件結(jié)構(gòu)的附加關(guān)鍵字的列表。
本發(fā)明的事件管理系統(tǒng)包括一個(gè)兼容性機(jī)構(gòu),用于允許企業(yè)內(nèi)的事件與不同版本的事件結(jié)構(gòu)進(jìn)行通信。不同版本的事件結(jié)構(gòu)不能去除一個(gè)事件的預(yù)定義字段,如果將一個(gè)新字段增加到事件結(jié)構(gòu),必須向該新字段分配一個(gè)用在沒有值的情況下的缺省值。本發(fā)明的事件管理系統(tǒng)將一個(gè)描述如何描繪事件結(jié)構(gòu)的消息裝入一個(gè)自描述消息結(jié)構(gòu)(例如,該消息包括描述消息中在字段名后面的數(shù)據(jù)是什么以及事件結(jié)構(gòu)的版本標(biāo)記的預(yù)定義字段名)。版本標(biāo)記包括提供事件結(jié)構(gòu)的一預(yù)定義字段名、版本,事件結(jié)構(gòu)的版本號(hào)被裝入消息。本發(fā)明的消息結(jié)構(gòu)包括字段的描述符對(duì)(例如,字段名),其相應(yīng)字段(例如,字段內(nèi)容)允許消息在不同版本之間是不變的。事件結(jié)構(gòu)的兼容性機(jī)構(gòu)例如通過在消息中搜索它完成消息結(jié)構(gòu)所需的字段來將消息整理成消息結(jié)構(gòu)。搜索例如包括忽略已經(jīng)添加到比當(dāng)前流行版本新的事件結(jié)構(gòu)的版本中的字段或者當(dāng)打開的事件結(jié)構(gòu)的版本小于當(dāng)前事件結(jié)構(gòu)時(shí)(例如,當(dāng)當(dāng)前事件結(jié)構(gòu)可能具有較新字段時(shí))為未找到的字段提供缺省值。缺省值可以是硬編碼的,或者可以由一個(gè)檢查事件中的其他字段的內(nèi)容的算法來確定。例如,如果新字段僅僅是將一個(gè)舊字段分成多個(gè)單獨(dú)的字段,則可以將一個(gè)算法運(yùn)用到舊字段上來為新字段給出合適的值。
不從一個(gè)事件結(jié)構(gòu)中去除預(yù)定義字段確保一個(gè)新過程,例如末端產(chǎn)品能夠與事件管理系統(tǒng)的較早版本、其他末端產(chǎn)品或?qū)Э仄鬟M(jìn)行通信。這對(duì)于任何其他原因(例如事件相關(guān)規(guī)則)在事件是合并或交叉節(jié)點(diǎn)邊界時(shí)是特別重要的。如果兼容性交叉版本不存在,結(jié)構(gòu)的升級(jí)將需要在相互通信以便同時(shí)升級(jí)的所有節(jié)點(diǎn)上的所有過程。較早過程將預(yù)期能夠找到它填充其事件結(jié)構(gòu)所需的所有字段。在沒有值的情況下為一個(gè)新字段指定一個(gè)缺省值允許一個(gè)較新版本過程(例如一個(gè)從較早過程接收消息的末端產(chǎn)品)在沒有來自輸入消息的字段時(shí)填充一個(gè)事件結(jié)構(gòu)的較新版本。這個(gè)值例如可以根據(jù)其他字段的值來指定。
上述實(shí)施例是本發(fā)明的例示性實(shí)例,不應(yīng)該將本發(fā)明限制到這些特定的實(shí)施例。在不偏離由附帶的權(quán)利要求書限定的本發(fā)明的精神或范圍的情況下,可以由本領(lǐng)域普通技術(shù)人員作出各種改變和修改。
權(quán)利要求
1.一種用于擴(kuò)展一個(gè)事件結(jié)構(gòu)的方法,包括如下步驟為所述事件結(jié)構(gòu)提交一個(gè)關(guān)鍵字名和一個(gè)相應(yīng)值;判定所述關(guān)鍵字名是否存在于所述事件結(jié)構(gòu)的關(guān)鍵字字段陣列中;如果所述關(guān)鍵字名不存在于所述關(guān)鍵字字段陣列中,遞增所述事件結(jié)構(gòu)的一個(gè)索引,基于所述索引將所述關(guān)鍵字名添加到所述關(guān)鍵字字段陣列中的一個(gè)位置,以及基于所述索引將所述相應(yīng)值添加到值字段陣列中的一個(gè)位置;以及如果所述關(guān)鍵字名存在于所述關(guān)鍵字字段陣列中,判定與所述關(guān)鍵字名相聯(lián)系的值字段陣列中的先前存儲(chǔ)值的位置,以及用所述相應(yīng)值替換所述值字段陣列中的所述先前存儲(chǔ)值。
全文摘要
一種用于擴(kuò)展事件結(jié)構(gòu)的方法,包括提交所述事件結(jié)構(gòu)的一個(gè)關(guān)鍵字名和一個(gè)相應(yīng)值以及判定所述關(guān)鍵字名是否存在于所述事件結(jié)構(gòu)的關(guān)鍵字字段陣列中。如果所述關(guān)鍵字名不存在于關(guān)鍵字字段陣列中,所述方法包括遞增所述事件結(jié)構(gòu)的索引、基于索引將所述關(guān)鍵字名加到所述關(guān)鍵字字段陣列中的一個(gè)位置以及基于索引將相應(yīng)值加到所述值字段陣列中的一個(gè)位置。如果所述關(guān)鍵字名存在于所述關(guān)鍵字字段陣列中,所述方法包括判定與關(guān)鍵字名相聯(lián)系的在所述值字段陣列中先前存儲(chǔ)值的位置以及用相應(yīng)值替換在所述值字段陣列中先前存儲(chǔ)值。
文檔編號(hào)G06F9/46GK1352768SQ99815179
公開日2002年6月5日 申請(qǐng)日期1999年12月29日 優(yōu)先權(quán)日1998年12月31日
發(fā)明者威廉N·波爾曼, 肯尼思D·馬特森, 戴維·阿斯貝爾 申請(qǐng)人:聯(lián)合想象計(jì)算機(jī)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1