오퍼레이션은 요청 시 오브젝트가
수행할 수 있는 서비스입니다.
오퍼레이션은 동기식(예: 프로시저 호출)이거나
비동기식(예: 이벤트 수신)이 될 수 있습니다.
이벤트 수신은
이벤트 큐에서 수신된 이벤트를 처리하는
특수 오퍼레이션입니다. 보내는 오브젝트는
처리가 완료되기를 기다리지 않으며 메시지를 "보내고 잊습니다".
일반적으로 상태 차트는 이벤트를 처리하고 동작 코드
스크립트(C로 작성된)는 오퍼레이션을 정의합니다. 상태 차트는
트리거된 오퍼레이션이라고 하는 동기식 오퍼레이션도
처리할 수 있지만, 반대로 이벤트를 처리하기 위해 코드 스크립트를 지정할 수 있습니다.
오퍼레이션의 가시성
오퍼레이션은 public 또는 private이 될 수
있습니다. private 오퍼레이션은 오브젝트 고유의 내부 일을 위해 오브젝트에서
사용되며 오브젝트 인터페이스의 일부가 아닙니다.
public 오퍼레이션은 오브젝트가 다른 오브젝트에서 이용하도록 노출하는
서비스입니다. 이 오퍼레이션은 오브젝트를 구성하며
시스템 전체의 파급 효과를 방지하기 위해 시스템의
라이프사이클에 걸쳐 안전한 상태를 유지합니다.
private 오퍼레이션(및 속성)에 대한 변경사항은 시스템의 나머지에 영향을
주지 않습니다.
기본 오퍼레이션 IBM Rational Rhapsody가 자동으로
생성하는 오퍼레이션 외에, 오브젝트에 대한 사용자 고유의 오퍼레이션을 정의할 수 있습니다. 각 오퍼레이션에는
이름과 리턴 유형이 있으며 인수를 포함할 수 있습니다. Rational Rhapsody에서는
사용자 정의 오퍼레이션을 기본 오퍼레이션이라고 합니다.
인라인 오퍼레이션 C_CG::Operation::Inline 특성을 사용하여
기본 오퍼레이션과 글로벌 함수를 매크로로
생성할 수 있습니다.
매크로는 소유자 오브젝트의 스펙 파일에 정의됩니다.
오퍼레이션 호출은 사전 프로세스 중에 매크로에 대해 지정된
해석되지 않은 텍스트로 인라인 상태에서 바뀝니다.
이벤트 수신
이벤트는 오브젝트 사이의
통신을 위한 비동기 수단을 제공합니다.
반응 오브젝트와 태스크 둘 다 이벤트를 수신할 수 있습니다.
이벤트는 상태 차트에서 상태 전이를 트리거할 수 있습니다.
트리거된 오퍼레이션
트리거된 오퍼레이션은 값을 리턴할 수 있는
동기 이벤트입니다. 이는 다른 오브젝트에서 상태 전이를
트리거하기 위해 하나의 오브젝트에서 호출할 수 있는 오브젝트 사이의
동기 통신입니다. 트리거된 오퍼레이션의 본문은 상태 전이의 결과로
실행됩니다. 트리거된 오퍼레이션은 동기식이므로,
송신 오브젝트는 오퍼레이션이 리턴하기를 기다려야 하며, 송신자는
그 후에 자체의 고유 스레드에서 계속할 수 있습니다.