트리거된 오퍼레이션 디스패치

디스패치 상태의 트리거된 오퍼레이션은 takeTrigger 메소드를 사용하여 이벤트를 이용합니다.

시작하기 전에

다음 시퀀스 다이어그램은 디스패치 상태의 트리거된 오퍼레이션(동기 이벤트)을 표시합니다.

이 태스크 정보

트리거된 오퍼레이션을 디스패치하려면 다음을 수행합니다.

프로시저

  1. takeTrigger 메소드는 트리거된 오퍼레이션에 대해 호출됩니다.
  2. takeTriggerprocessEvent 메소드를 호출하여 이벤트를 이용합니다.
  3. processEvent는 다음을 수행합니다.
    1. isBusy를 호출하여 오브젝트가 이미 이벤트를 이용하고 있는지 여부를 판별합니다. 오브젝트가 사용 중이 아니면 processEventsm_busy 플래그를 TRUE로 설정하고 getlId를 호출하여 이벤트 ID를 가져옵니다.
    2. processEventshouldCompleteRun을 호출하여 이벤트가 이용된 후 수행할 널 상태 전이가 있는지 확인합니다. 사용할 널 상태 전이가 있으면 이 메소드는 runToCompletion을 호출하여 해당 상태 전이를 사용합니다.
    3. processEventundoBusy를 호출하여 sm_busy 플래그를 FALSE로 재설정합니다.
  4. takeTrigger에서는 shouldTerminatesetShouldDelete 메소드를 호출합니다. (shouldTerminate() && shouldDelete())가 1(또는 TRUE)이면 takeTrigger가 이벤트를 삭제합니다.

피드백