다음을 통해 공유


상태 머신 업무흐름

상태 컴퓨터는 프로그램 개발을 위한 잘 알려진 패러다임입니다. StateMachine 활동 및 기타 활동은 StateTransition상태 시스템 워크플로 프로그램을 빌드하는 데 사용할 수 있습니다. 이 항목에서는 상태 시스템 워크플로를 만드는 방법에 대한 개요를 제공합니다.

State Machine 워크플로 개요

상태 시스템 워크플로는 이벤트 기반 방식으로 워크플로를 모델링할 수 있는 모델링 스타일을 제공합니다. StateMachine 활동에는 상태 컴퓨터의 논리를 구성하는 상태 및 전환이 포함되며 활동을 사용할 수 있는 모든 곳에서 사용할 수 있습니다. 상태 컴퓨터 런타임에는 다음과 같은 여러 클래스가 있습니다.

상태 기계 워크플로를 만들기 위해 상태를 StateMachine 활동에 추가하고, 전환은 상태 간의 흐름을 제어하는 데 사용됩니다. 다음 스크린샷은 시작 자습서 단계 방법: 상태 컴퓨터 워크플로 만들기의 세 가지 상태 및 세 가지 전환이 있는 상태 컴퓨터 워크플로를 보여 줍니다. 초기화 대상 은 초기 상태이며 워크플로의 첫 번째 상태를 나타냅니다. 이는 시작 노드에서 선으로 이어지는 줄에 의해 지정됩니다. 워크플로의 최종 상태는 FinalState라고 하며 워크플로가 완료된 지점을 나타냅니다.

완료된 상태 시스템 워크플로를 보여 주는 일러스트레이션.

상태 컴퓨터 워크플로에는 하나의 초기 상태와 하나 이상의 최종 상태가 있어야 합니다. 최종 상태가 아닌 각 상태에는 하나 이상의 전환이 있어야 합니다. 다음 섹션에서는 상태 및 전환 만들기 및 구성에 대해 설명합니다.

상태 만들기 및 구성

A State 는 상태 컴퓨터가 있을 수 있는 상태를 나타냅니다. 워크플로에 State를 추가하려면 도구 상자상태 머신 섹션에서 상태 활동 디자이너를 끌어 Windows 워크플로 디자이너 화면의 StateMachine 활동에 놓으십시오.

도구 상자에 있는 상태 기계 섹션의 스크린샷

상태를 초기 상태로 구성하려면 상태를 마우스 오른쪽 단추 로 클릭하고 초기 상태로 설정을 선택합니다. 또한 현재 초기 상태가 없는 경우 워크플로 맨 위에 있는 시작 노드에서 원하는 상태로 선을 끌어 초기 상태를 지정할 수 있습니다. StateMachine 활동이 워크플로 디자이너에 놓이면 State1이라는 초기 상태로 미리 구성됩니다. 상태 컴퓨터 워크플로에는 하나의 초기 상태만 있어야 합니다.

상태 컴퓨터에서 종료 상태를 나타내는 상태를 최종 상태라고 합니다. 최종 상태는 해당 IsFinal 속성이 설정된 true상태이며, 활동이 없고 Exit , 해당 속성에서 시작된 전환이 없는 상태입니다. 워크플로에 최종 상태를 추가하려면 도구 상자상태 머신 섹션에서 FinalState 활동 디자이너를 끌어 Windows 워크플로 디자이너 화면의 StateMachine 활동에 놓습니다. 상태 컴퓨터 워크플로에는 하나 이상의 최종 상태가 있어야 합니다.

입구 및 출구 작업 구성

상태에는 Entry 작업과 Exit 작업이 있을 수 있습니다. (최종 상태로 구성된 상태에는 항목 작업만 있을 수 있습니다). 워크플로 인스턴스가 상태에 들어갈 때 진입 동작의 모든 활동이 실행됩니다. 입력 동작이 완료되면 상태 전환의 트리거가 일정에 따라 예약됩니다. 다른 상태로의 전환이 확인되면 상태가 다시 동일한 상태로 전환되더라도 종료 작업의 활동이 실행됩니다. 종료 작업이 완료되면 전환의 활동이 실행되고, 새 상태로 전환되며 해당 상태의 진입 작업이 예약됩니다.

비고

상태 컴퓨터 워크플로를 디버깅할 때 중단점을 루트 상태 컴퓨터 작업 및 상태 컴퓨터 워크플로 내의 상태에 배치할 수 있습니다. 중단점은 전환에 직접 배치되지 않을 수 있지만 상태 및 전환에 포함된 모든 활동에 배치될 수 있습니다.

전환 만들기 및 구성

모든 상태에는 전환이 없을 수 있는 최종 상태를 제외하고 하나 이상의 전환이 있어야 합니다. 상태가 상태 컴퓨터 워크플로에 추가된 후 전환이 추가되거나 상태가 삭제될 때 전환이 생성될 수 있습니다.

한 단계에서 State 추가하고 전환을 만들려면, 도구 상자상태 기계 섹션에서 상태 작업을 끌어 워크플로 디자이너의 다른 상태 위로 마우스를 가져옵니다. State를 다른 State 위로 끌면, 다른 State 주위에 사각형이 나타납니다. State 4개의 삼각형 중 하나에 떨어뜨리면, 상태 기계에 추가되고 출발 State에서 떨어뜨린 목적지 State로 전환이 만들어집니다. 자세한 내용은 전환 활동 디자이너를 참조하세요.

상태가 추가된 후 전환을 만들려면 두 가지 옵션이 있습니다. 첫 번째 옵션은 워크플로 디자이너 화면에서 상태를 기존 상태 위로 끌어 가져간 다음, 드롭 포인트 중 하나에 놓는 것입니다. 이는 이전 섹션에서 설명한 메서드와 유사합니다. 마우스를 원하는 원본 상태 위에 올려놓고, 원하는 대상 상태로 선을 끌 수도 있습니다.

비고

상태 컴퓨터의 단일 상태는 워크플로 디자이너를 사용하여 만든 최대 76개의 전환을 가질 수 있습니다. 디자이너 외부에서 만든 워크플로의 상태에 대한 전환 제한은 시스템 리소스에 의해서만 제한됩니다.

전환에는 Trigger, Condition, 및 Action가 있을 수 있습니다. 전환의 Trigger 원본 상태 작업이 완료되면 전환이 Entry 예약됩니다. 일반적으로 Trigger 일부 유형의 이벤트가 발생할 때까지 기다리는 활동이지만 모든 활동이거나 활동이 없을 수 있습니다. Trigger 작업이 완료되면 Condition(있는 경우) 평가됩니다. Trigger 활동이 없으면 Condition 즉시 평가됩니다. 조건이 false로 평가되면 전환이 취소되고, 상태에서 모든 전환의 Trigger 활동이 다시 예약됩니다. 현재 전환과 동일한 원본 상태를 공유하는 다른 전환이 있는 경우 해당 Trigger 작업도 취소되고 다시 예약됩니다. Conditiontrue로 평가되는 경우 또는 조건이 없는 경우, 원본 상태의 Exit 동작이 실행되고, 그다음 전환의 Action가 실행됩니다. Action 완료되면 컨트롤이 대상 상태로 전달됩니다.

공통 트리거를 공유하는 전환을 공유 트리거 전환이라고 합니다. 공유 트리거 전환 그룹의 각 전환에는 동일한 트리거가 있지만 고유한 Condition와 작업이 있습니다. 전환에 작업을 추가하고 공유 전환을 만들려면 원하는 전환의 시작을 나타내는 원을 클릭하고 원하는 상태로 끌어옵니다. 새 전환은 초기 전환과 동일한 트리거를 공유하지만 고유한 조건과 작업을 갖습니다. 전환 디자이너 내에서, 전환 디자이너 아래쪽에서 공유 트리거 전환 추가를 클릭하고, 연결할 수 있는 사용 가능한 상태 드롭다운에서 원하는 대상 상태를 선택하면 공유 전환을 만들 수 있습니다.

비고

Condition에 대한 전환이 False로 평가되거나 공유 트리거 전환의 모든 조건이 False로 평가되는 경우, 전환은 발생하지 않으며 해당 상태로부터의 모든 전환에 대한 모든 트리거가 다시 예약됩니다.

상태 컴퓨터 워크플로를 만드는 방법에 대한 자세한 내용은 방법: 상태 컴퓨터 워크플로 만들기, StateMachine 활동 디자이너, 상태 활동 디자이너, FinalState 활동 디자이너전환 작업 디자이너를 참조하세요.

상태 기계 용어

이 섹션에서는 이 항목 전체에서 사용되는 상태 컴퓨터 어휘를 정의합니다.

시스템 상태
상태 컴퓨터를 구성하는 기본 단위입니다. 상태 컴퓨터는 특정 시간에 한 상태에 있을 수 있습니다.

입장 행동
상태를 입력할 때 실행되는 활동

종료 동작
상태를 종료할 때 실행되는 활동

전환
특정 형식의 이벤트 발생에 대한 상태 컴퓨터의 전체 응답을 나타내는 두 상태 간의 지시된 관계입니다.

공동 전환
원본 상태와 트리거를 하나 이상의 전환과 공유하지만 고유한 조건과 동작이 있는 전환입니다.

트리거
전환을 발생시키는 트리거 작업입니다.

조건
트리거가 발생한 후 전환이 완료되려면 평가 결과가 true인 제약 조건이어야 합니다.

전환 작업
특정 전환을 수행할 때 실행되는 활동입니다.

조건부 전환
명시적 조건이 있는 전환입니다.

자체 전환
상태에서 그 자체로 전송되는 전환입니다.

초기 상태
상태 기계의 시작 지점을 나타내는 상태입니다.

최종 상태
상태 기계의 완료를 나타내는 상태입니다.

참고하십시오