OMEvent 类

OMEvent 是 Rational® Rhapsody® 中定义的所有事件的基类,代码生成器根据这个类隐式派生所有事件。OMEvent 是抽象类,并且这个类是在文件 event.h 中声明的。

OMEvent 有两个重要的数据属性:

可以在 Rational Rhapsody 特性中从两个级别指定事件标识:每个包的独立事件标识或基础标识号。通过使用这个基础标识号,Rational Rhapsody 为每个事件都指定一个连续的标识号。

每个继承 OMEvent 的对象和事件都可以添加附加数据来存储特定于事件的信息。例如,如果您要发送带有当前时间的事件,那么可以添加具有相关类型名称的属性,并且该事件将有权访问附加数据。

代码生成将事件参数映射到继承 OMEvent 的事件类的数据成员。

OMEvent 还是以下两类特殊事件的基类:

通常,事件生成涉及两个步骤,这两个步骤封装在框架中的 GEN 宏内:

  1. 实例化事件类,这将生成指向此事件的指针。
  2. 通过添加指向接收方的事件队列的新事件指针,将此事件放入队列。

事件实例化并添加到接收方事件队列后,即可以“发送”了。 发送操作能够成功是基于发送方和接收方的内存地址空间相同这一假设。但是,事实并非总是如此。

例如,以下是一些场景实例,在其中发送方和接收方的内存地址空间很可能就不同:

解决此问题的一种常用方法是对信息进行编组。编组意味着将事件转换为原始数据,使用框架(如发布/预订)发送这些原始数据,然后在接收端将这些数据转换回其初始形式。高级别的解决方案(例如 CORBA™)会自动生成必需的代码,但使用低级别的解决方案时,您应该特别小心。Rational Rhapsody 允许您通过创建“标准操作”来处理此任务,从而指定如何对事件和实例进行编组以及不进行编组。

对于低级别的解决方案,您可以使用以下其中一种部分动画方法:

为了支持部分动画,C++ 代码生成具有以下特征:

为了支持部分动画,OXF 具有以下特征:

属性概要

deleteAfterConsume - 确定在使用事件后是否将其删除

destination - 指定 OMReactive 实例

frameworkEvent - 指定事件是否为框架事件

lid - 指定事件标识值

常量概要

OMEventAnyEventId 是一个保留事件标识,可以指定任意事件。

OMCancelEventId 是一个保留事件标识,用于指定已取消的事件(不应发送到其目标的事件)。

OMEventNullId 是一个保留事件标识,用于使用空过渡。

OMEventStartBehaviorId 是一个保留事件标识,用于 OMStartBehavior 事件。

OMEventOXFEndEventId 是一个保留事件标识,用于在使用框架 DLL 的 COM 服务器被删除后干净地关闭框架。

OMEventTimeoutId 是一个用于超时的保留事件标识。

构造概要
OMEvent
构造 OMEvent 对象
~OMEvent
销毁 OMEvent 对象
方法概要
Delete
删除事件实例(释放事件所使用的内存)。
getDestination
返回事件的反应目标
getlId
返回事件标识
isCancelledTimeout
确定是否已取消事件
isDeleteAfterConsume
如果在使用事件后事件分派器 (OMThread) 应删除此事件,那么此方法返回 TRUE
isFrameworkEvent
如果事件是内部框架事件,那么此方法返回 TRUE
isRealEvent
如果事件是空过渡事件、超时或用户事件,那么此方法返回 TRUE
isTimeout
如果事件是超时,那么此方法返回 TRUE
isTypeOf
如果事件属于给定类型(具有指定的标识),那么此方法返回 TRUE
setDeleteAfterConsume
确定在使用事件后事件分派器 (OMThread) 是否删除此事件
setDestination
设置事件反应目标
setFrameworkEvent
将事件设置为内部框架事件
setlId
设置事件标识

反馈