图2 响应类及相关框架元素
每个响应类都和一个事件管理器关联(通过调用setEventManager方法),事件管理器由活动类充当。一个事件管理器可以服务于多个响应类。响应类的gen方法向其事件管理器注入一个新的事件(通过调用活动类的queueEvent方法)。事件管理器在收到事件之后会调用相应的响应对象(由事件的属性指出)的takeEvent方法。
用户响应类有主动(active)、被动(passive)和从属(subordinate)响应类之分:
*主动用户响应类利用了多重继承技术,它集事件管理器和响应类双得功能于一身;
*被动用户响应类由框架的缺省事件管理器—OXFDefaultEventManager管理,且所有被动用户响应类都共享该缺省事件管理器;
*从属用户响应类由用户定义的活动类充当事件管理器。从属响应类以聚合方式存在于用户活动类内,或者独立于活动类,而通过调用setEventManager方法与一个用户活动关联。
(3)事件和操作
类可以定义自己的事件和操作(Events and Operations)方法。事件代表一种突发的激励信号,可以影响对象的行为及状态。在Rhapsody中,活动类负责事件调度。事件既可以异步(活动类将事件投递给目标对象之后立即返回,目标对象使用自己的线程完成对事件的响应),也可以是同步的(活动类投递事件之后必须等待目标对象处理完成才能返回)。操作代表类本身提供的服务和功能。操作调用总是同步的,即操作总是运行在调用者线程之内。Rhapsody的框架定义了两种事件:
①信号事件。
信号事件(Signal Events)是最常用的事件,它代表对象之间传递的一种异步激励信号。在Rhapsody的框架中,它以OXFEvent表示,所有的用户事件类都从OXFEvent继承。
信号事件有自己的参数(以其属性表示),并且和一个响应对象关联。事件管理器依据事件的响应对象判断事件的接收者。
②定时事件
定时事件(Timeout Events)在Rhapsody中以OXFTimeOut表示。它在OXF框架中的位置如图3所示。
事件管理器(活动对象)的schedTimeout方法负责定时事件的构造和调度。其执行过程如图4所示。
文章来源于领测软件测试网 https://www.ltesting.net/