이 항목은 Windows Workflow Foundation 4에 적용됩니다.
순서도는 잘 알려진 프로그램 설계용 패러다임입니다. Flowchart 활동은 일반적으로 순차적이 아닌 워크플로를 구현하는 데 사용하지만, FlowDecision 노드를 사용하지 않는 경우 순차적 워크플로에도 사용할 수 있습니다.
순서도 워크플로 구조
Flowchart 활동은 FlowNode에서 상속된 흐름 노드 컬렉션을 포함하는 활동입니다. 흐름 노드는 포함된 자식 활동을 실행할 수 있으며 다른 흐름 노드로 실행을 리디렉션할 수 있습니다.
흐름 노드 형식
요소가 실행될 때 필요한 흐름 제어 형식에 따라 다양한 형식의 요소가 사용됩니다. 다음과 같은 순서도 요소 형식이 있습니다.
FlowStep - 순서도에서 실행의 한 단계를 모델링합니다.
FlowDecision - If와 유사한 부울 조건을 기반으로 실행을 분기합니다.
FlowSwitch – Switch와 유사한 전용 스위치를 기반으로 실행을 분기합니다.
각 링크에는 자식 활동을 실행하는 데 사용할 수 있는 ActivityAction을 정의하는 Action 속성과 요소 실행이 완료되었을 때 실행할 요소를 정의하는 하나 이상의 Next 속성이 있습니다.
FlowStep 노드로 기본 활동 시퀀스 만들기
두 활동이 차례로 실행되는 기본 시퀀스를 모델링하려면 FlowStep 요소를 사용합니다. 다음 예에서는 두 FlowStep 요소를 사용하여 두 활동을 순서대로 실행합니다.
<Flowchart>
<FlowStep>
<Read Result = "[result]"/>
<FlowStep.Next>
<FlowStep>
<Write Text="[Hello + result]"/>
</FlowStep>
</FlowStep.Next>
</FlowStep>
</Flowchart>
FlowDecision 노드로 조건부 순서도 만들기
순서도 워크플로에서 조건부 흐름 노드를 모델링하려면(즉, 기존 순서도의 결정 기호 역할을 하는 링크를 만들려면) FlowDecision 노드를 사용합니다. 노드의 Condition 속성은 조건을 정의하는 WorkflowElement로 설정되고, True 및 False 속성은 식이 true 또는 false으로 평가될 경우 실행할 FlowNode 인스턴스로 설정됩니다. 다음 예에서는 FlowDecision 노드를 사용하는 순서도를 정의하는 방법을 보여 줍니다.
<Flowchart>
<FlowStep>
<Read Result="[s]"/>
<FlowStep.Next>
<FlowDecision>
<IsEmpty Input="[s]" />
<FlowDecision.True>
<FlowStep>
<Write Text="Empty"/>
</FlowStep>
</FlowDecision.True>
<FlowDecision.False>
<FlowStep>
<Write Text="Non-Empty"/>
</FlowStep>
</FlowDecision.False>
</FlowDecision>
</FlowStep.Next>
</FlowStep>
</Flowchart>
FlowSwitch 노드로 전용 스위치 만들기
일치하는 값에 따라 전용 경로 하나를 선택하는 순서도를 모델링하려면 FlowSwitch 노드를 사용합니다. Expression 속성은 선택 항목과 비교할 값을 정의하는 Object의 형식 매개 변수를 사용하여 WorkflowElement’1 로 설정되고, Cases 속성은 조건식과 비교할 키와 FlowNode 개체의 사전을 정의하며, 지정된 case가 조건식과 일치하는 경우 실행의 흐름을 정의하는 FlowNode 개체 집합을 정의합니다. FlowSwitch도 조건식과 일치하는 case가 없을 때의 실행 흐름을 정의하는 Default 속성을 정의합니다. 다음 예에서는 FlowSwitch 요소를 사용하는 워크플로를 정의하는 방법을 보여 줍니다.
<Flowchart>
<FlowSwitch>
<FlowSwitch.Expression>
<ReadColor/>
</FlowSwitch.Expression>
<FlowStep x:Key="Red">
<WriteRed/>
</FlowStep>
<FlowStep x:Key="Blue">
<WriteBlue/>
</FlowStep>
<FlowStep x:Key="Green">
<WriteGreen/>
</FlowStep>
</FlowSwitch.Cases>
</FlowSwitch>
</Flowchart>