OMEvent는 Rational® Rhapsody®에 정의된 모든 이벤트의 기본 클래스이고 이 클래스에서 코드 생성기가 모든 이벤트를 암시적으로 도출합니다. OMEvent는 추상 클래스이고 event.h. 파일에서 선언됩니다.
OMEvent에는 다음과 같은 두 가지 중요한 데이터 속성이 있습니다.
개별 이벤트 ID 또는 모든 패키지의 기본 ID 번호라는 두 가지 레벨에서 Rational Rhapsody 특성에 이벤트 ID를 지정할 수 있습니다. Rational Rhapsody에서는 기본 번호를 사용하여 모든 이벤트에 순차 ID 번호를 할당합니다.
OMEvent에서 상속된 모든 오브젝트 및 이벤트는 데이터를 추가하여 이벤트 관련 정보를 저장할 수 있습니다. 예를 들어 현재 시간과 함께 이벤트를 전송하려는 경우 관련 유형 이름과 함께 속성을 추가할 수 있고 이벤트에 추가 데이터에 대한 액세스 권한이 부여됩니다.
코드 생성 시 OMEvent에서 상속된 이벤트 클래스의 데이터 멤버에 이벤트 매개변수가 맵핑됩니다.
또한 OMEvent는 다음 두 가지 특수 종류의 이벤트에 대한 기본 클래스입니다.
일반적으로 프레임워크의 GEN 매크로 내에서 캡슐화된 이벤트는 다음 두 단계를 거쳐 생성됩니다.
이벤트가 인스턴스화되고 수신자의 이벤트 큐에 추가되면 해당 이벤트는 "전송" 준비가 된 것입니다. 전송 오퍼레이션의 성공은 송신자 및 수신자의 메모리 주소 공간이 동일하다는 가정을 바탕으로 합니다. 그러나 항상 그런 것은 아닙니다.
예를 들어 다음은 송신자와 수신자 메모리 주소 공간이 대부분 다른 시나리오의 몇 가지 예입니다.
이러한 문제를 해결하는 일반적인 한 가지 방법은 정보를 마샬링하는 것입니다. 마샬링은 means 이벤트를 원시 데이터로 변환하고, 프레임워크(예: 발행/구독)를 사용하여 해당 원시 데이터를 전송한 다음 수신 종료 시 원래 형식으로 다시 변환합니다. 상위 레벨 솔루션(예: CORBA™)은 필수 코드를 자동으로 생성하지만 하위 레벨 솔루션은 조심해서 사용해야 합니다. Rational Rhapsody에서는 이러한 태스크를 처리하기 위한 "표준 오퍼레이션"을 작성하여 이벤트 및 인스턴스를 마샬링하거나 하지 않을 방법을 지정할 수 있습니다.
하위 레벨 솔루션의 경우 다음 부분 애니메이션 방법 중 하나를 사용합니다.
deleteAfterConsume - 이벤트 이용 후 이벤트 삭제 여부를 판별합니다.
destination - OMReactive 인스턴스를 지정합니다.
frameworkEvent - 이벤트가 프레임워크 이벤트인지 지정합니다.
lid - 이벤트 ID 값을 지정합니다.
OMEventAnyEventId는 임의의 이벤트를 지정하는 예약된 이벤트 ID입니다.
OMCancelEventId는 취소된 이벤트(대상으로 전송되지 않은 이벤트)를 지정하는 예약된 이벤트 ID입니다.
OMEventNullId는 널 상태 전이를 이용하는 데 사용되는 예약된 이벤트 ID입니다.
OMEventStartBehaviorId는 OMStartBehavior 이벤트에 사용되는 예약된 이벤트 ID입니다.
OMEventOXFEndEventId는 프레임워크 DLL을 사용하는 COM 서버가 삭제될 때 프레임워크를 닫는 데 사용되는 예약된 이벤트 ID입니다.
OMEventTimeoutId는 제한시간에 사용되는 예약된 이벤트 ID입니다.