OMEvent 是 Rational® Rhapsody® 中定義之所有事件的基礎類別,程式碼產生器會從中隱含地衍生所有事件。 OMEvent 是抽象類別,在檔案 event.h. 中宣告
OMEvent 具有兩個重要的資料屬性:
您可以在 Rational Rhapsody 內容中以兩個層次指定事件 ID:個別事件 ID 或每個套件的基本 ID 號碼。透過使用基數,Rational Rhapsody 會為每個事件指派循序 ID 號碼。
繼承自 OMEvent 的每個物件及事件可以新增其他資料,以儲存事件特定資訊。 例如,如果您要傳送具有現行時間的事件,則您可以新增具有相關類型名稱的屬性,該事件將具有其他資料的存取權。
每個參數都由產生程式碼對映至繼承自 OMEvent 事件類別之資料成員。
OMEvent 也是兩個特殊類型事件的基礎類別:
一般兩個步驟即可產生事件,這兩個步驟封裝在架構的 GEN 巨集中:
在實例化事件並將其新增至接收端的事件佇列後,事件便已備妥可供「傳送」。傳送作業能夠成功是假設傳送端與接收端的記憶體位址空間是相同的。 不過,並不一定永遠如此。
例如,下列是傳送端與接收端記憶體位址空間最可能不同的一些情況範例:
解決此問題的一個常用方式是配置資訊。配置表示將事件轉換成原始資料,使用發佈/訂閱等架構傳送它,然後在接收端將原始資料轉換成它的原始形式。CORBA™ 等高層次的解決方案會自動產生必要的程式碼,但若使用低層次的解決方案,您應該明確處理。Rational Rhapsody 可讓您指定如何透過建立處理此作業的「標準作業」,來配置以及不配置事件及實例。
對於低階解決方案,您可以使用下列其中一個局部動畫方法:
為了支援局部動畫,C++ 產生程式碼具有下列性質:
為了支援局部動畫,OXF 具有下列性質:
deleteAfterConsume - 決定在耗用事件之後,是否將其刪除
destination - 指定 OMReactive 實例
frameworkEvent - 指定事件是否為架構事件
lid - 指定事件 ID 的值
OMEventAnyEventId 是指定任何事件的保留事件 ID。
OMCancelEventId 是指定所取消事件(不應傳送至其目的地的事件)的保留事件 ID。
OMEventNullId 是用於耗用空值轉移的保留事件 ID。
OMEventStartBehaviorId 是用於 OMStartBehavior 事件的保留事件 ID。
OMEventOXFEndEventId 用來在刪除使用架構 DLL 的 COM 伺服器時,完全關閉架構的保留事件 ID。
OMEventTimeoutId is a reserved event ID used for timeouts.