OMEvent 是 Rational® Rhapsody® 中定义的所有事件的基类,代码生成器根据这个类隐式派生所有事件。OMEvent 是抽象类,并且这个类是在文件 event.h 中声明的。
OMEvent 有两个重要的数据属性:
可以在 Rational Rhapsody 特性中从两个级别指定事件标识:每个包的独立事件标识或基础标识号。通过使用这个基础标识号,Rational Rhapsody 为每个事件都指定一个连续的标识号。
每个继承 OMEvent 的对象和事件都可以添加附加数据来存储特定于事件的信息。例如,如果您要发送带有当前时间的事件,那么可以添加具有相关类型名称的属性,并且该事件将有权访问附加数据。
代码生成将事件参数映射到继承 OMEvent 的事件类的数据成员。
OMEvent 还是以下两类特殊事件的基类:
通常,事件生成涉及两个步骤,这两个步骤封装在框架中的 GEN 宏内:
事件实例化并添加到接收方事件队列后,即可以“发送”了。 发送操作能够成功是基于发送方和接收方的内存地址空间相同这一假设。但是,事实并非总是如此。
例如,以下是一些场景实例,在其中发送方和接收方的内存地址空间很可能就不同:
解决此问题的一种常用方法是对信息进行编组。编组意味着将事件转换为原始数据,使用框架(如发布/预订)发送这些原始数据,然后在接收端将这些数据转换回其初始形式。高级别的解决方案(例如 CORBA™)会自动生成必需的代码,但使用低级别的解决方案时,您应该特别小心。Rational Rhapsody 允许您通过创建“标准操作”来处理此任务,从而指定如何对事件和实例进行编组以及不进行编组。
对于低级别的解决方案,您可以使用以下其中一种部分动画方法:
为了支持部分动画,C++ 代码生成具有以下特征:
为了支持部分动画,OXF 具有以下特征:
deleteAfterConsume - 确定在使用事件后是否将其删除
destination - 指定 OMReactive 实例
frameworkEvent - 指定事件是否为框架事件
lid - 指定事件标识值
OMEventAnyEventId 是一个保留事件标识,可以指定任意事件。
OMCancelEventId 是一个保留事件标识,用于指定已取消的事件(不应发送到其目标的事件)。
OMEventNullId 是一个保留事件标识,用于使用空过渡。
OMEventStartBehaviorId 是一个保留事件标识,用于 OMStartBehavior 事件。
OMEventOXFEndEventId 是一个保留事件标识,用于在使用框架 DLL 的 COM 服务器被删除后干净地关闭框架。
OMEventTimeoutId 是一个用于超时的保留事件标识。