다음을 통해 공유


순서도 워크플로

순서도는 잘 알려진 프로그램 설계용 패러다임입니다. Flowchart 활동은 일반적으로 순차적이 아닌 워크플로를 구현하는 데 사용하지만, FlowDecision 노드를 사용하지 않는 경우 순차적 워크플로에도 사용할 수 있습니다.

순서도 워크플로 구조

Flowchart 활동은 에서 실행되는 활동의 컬렉션을 포함하는 활동입니다. 순서도에는 변수 값에 따라 포함된 활동 사이의 실행을 연결하는 FlowDecisionFlowSwitch<T> 같은 흐름 제어 요소도 포함되어 있습니다.

흐름 노드 형식

요소가 실행될 때 필요한 흐름 제어 형식에 따라 다양한 형식의 요소가 사용됩니다. 다음과 같은 순서도 요소 형식이 있습니다.

  • FlowStep - 순서도에서 실행의 한 단계를 모델링합니다.

  • FlowDecision - If와 유사한 부울 조건을 기반으로 실행을 분기합니다.

  • FlowSwitchSwitch<T>과 유사한 전용 스위치를 기반으로 실행을 분기합니다.

각 링크에는 자식 활동을 실행하는 데 사용할 수 있는 Action을 정의하는 ActivityAction 속성과 요소 실행이 완료되었을 때 실행할 현재 요소를 정의하는 하나 이상의 Next 속성이 있습니다.

FlowStep 노드로 기본 활동 시퀀스 만들기

두 활동이 차례로 실행되는 기본 시퀀스를 모델링하려면 FlowStep 요소를 사용합니다. 다음 예에서는 두 FlowStep 요소를 사용하여 두 활동을 순서대로 실행합니다.

<Flowchart>
  <FlowStep>
    <Assign DisplayName="Get Name">
      <Assign.To>
        <OutArgument x:TypeArguments="x:String">[result]</OutArgument>
      </Assign.To>
      <Assign.Value>
        <InArgument x:TypeArguments="x:String">["User"]</InArgument>
      </Assign.Value>
    </Assign>
    <FlowStep.Next>
      <FlowStep>
        <WriteLine Text="Hello, " & [result]/>
      </FlowStep>
    </FlowStep.Next>
  </FlowStep>
</Flowchart>

FlowDecision 노드로 조건부 순서도 만들기

순서도 워크플로에서 조건부 흐름 노드를 모델링하려면(즉, 기존 순서도의 결정 기호 역할을 하는 링크를 만들려면) FlowDecision 노드를 사용합니다. 노드의 Condition 속성은 조건을 정의하는 식으로 설정되고, TrueFalse 속성은 식이 FlowNode 또는 true로 평가될 경우 실행할 false 인스턴스로 설정됩니다. 다음 예에서는 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<T> 노드를 사용합니다. Expression 속성은 선택 항목과 비교할 값을 정의하는 Activity<TResult>의 형식 매개 변수를 사용하여 Object로 설정됩니다. Cases 속성은 조건식과 비교할 키 및 FlowNode 개체의 사전을 정의하며, 지정된 case가 조건식과 일치하는 경우 실행의 흐름을 정의하는 FlowNode 개체 집합을 정의합니다. FlowSwitch<T>도 조건식과 일치하는 case가 없을 때의 실행 흐름을 정의하는 Default 속성을 정의합니다. 다음 예에서는 FlowSwitch<T> 요소를 사용하는 워크플로를 정의하는 방법을 보여 줍니다.

<Flowchart>
  <FlowSwitch>
    <FlowStep x:Key="Red">
      <WriteRed/>
    </FlowStep>
    <FlowStep x:Key="Blue">
      <WriteBlue/>
    </FlowStep>
    <FlowStep x:Key="Green">
      <WriteGreen/>
    </FlowStep>
  </FlowSwitch>
</Flowchart>