2012-07-08 1 views
2

Wikipedia에 기반하여, 나는 상태를 독립적으로 변경할 수있는 다수의 직교 영역을 갖는 계층 적 상태 분해를 가질 수있다.UML 상태 머신 : 직각 자식 영역을 종료하는 방법은 무엇입니까?

이 다이어그램은 직각 영역이 입력되는 방법을 보여줍니다. 나는 그 진입이 모든 지역에서 병행한다고 가정한다. 내가 알고 싶은 건 어떻게 출구를 표현하니? 각 영역에 종료가있는 경우 전역 부모 상태는 첫 번째 자식 영역이 종료 될 때 또는 모두 종료되었을 때 종료됩니까? 나는 그들이 모두을 종료했을 때 출구가 발생한다고 말하고 싶습니다. 그리고 어떻게하면 모든 어린이 영역이을 종료했기 때문에 글로벌 부모 상태가 다음 글로벌 상태 으로 전환되는 것을 어떻게 표현합니까? 그것은 항상 암묵인가?

내 구체적인 문제는 내 FSM이 초기화 전역 상태에서 시작한다는 것입니다. 여러 개의 쿼리를 여러 외부 시스템에 비동기 적으로 동시에 전송합니다. 각 쿼리에 대한 답변을받은 후에 만 ​​작업을 진행할 수 있습니다. 그래서 나는 비동기식 병렬 질의를 전역 Initializing 상태 내에서 직교 영역으로 모델링한다. 각 하위 영역은 독립적으로 상태를 변경할 수 있습니다. 모든 자식 영역이 종료 상태에 도달하면 계속 이동할 수 있습니다.

FSM은 비동기 메시지 (이벤트) 만 통신 할 수있는 액터 프레임 워크에서 구현됩니다.

이상적으로 말하면 답변을 단어로 표현하기가 어려우므로 예제 이미지를 가리키는 것이 좋습니다.

답변

6

모든 직교 영역이 끝나면 완료 될 것이므로 직각 상태에서 완료 전환하면 트릭이 수행됩니다.

복합 상태 (내부 상태 및/또는 직교 영역이있는 상태)가 입력되면 각 영역은 초기 상태에서 분기 의사 노드를 사용하여 각 영역의 다른 상태로 시작하거나 각 영역의 마지막 상태로 시작됩니다. 상태는 기록 pseudostate를 통해 입력됩니다. 복합 상태를 종료하는 것은 현재 상태로부터 모든 직교 영역이 존재하는 내부 상태 중 하나에서 시작하는 전이를 통해 수행 될 수 있습니다. 시스템이 다른 지역의 상태 세트에 도달했을 때 종료하려면 결합 의사 의사 항을 사용할 수 있습니다.

여러분도 알다시피, 가능성은 거의 끝이 없습니다. 아직 이미지를 추가 할 수는 없지만, 나중에 좋은 UML 편집기가 있으면 나중에 할 것입니다.

이제 예제입니다. 다음과 같은 상태 머신 있다고 가정 example state machine

  1. 모두 병렬 영역 (최종 노드에 도착) 완료하는 경우를 다음 완료 전환 S1에서 S5에 기계를 취할 것입니다.
  2. 컴퓨터가 현재 S3에 있고 e1을받는 경우 S1을 종료하고 S6으로 이동합니다.
  3. 기계가 S7S8인데 둘 다 완료되면 결합으로 이어지고 S6이됩니다.

이것은 상태 시스템이 작동하는 방식입니다.

+0

감사합니다. 그게 맞을지 모르겠지만, 나는 (올바르게 이해한다면 그들이 교차 지역이어야하기 때문에) "의사 의사 준위 결합"을 그리는 방법을 아직 볼 수 없다. 예제를 기다리는 중 ... –

+1

@SebastienDiot 예를 추가했습니다. – vainolo

+0

@vainolo이 게시물을 부활 시키 셨습니다.하지만이 다이어그램을 만들 때 사용한 "좋은 UML 편집기"는 무엇입니까? 그것은 아름다워 – daltonb