Compartilhar via


Fluxos de trabalho do fluxograma

Um fluxograma é um paradigma bem conhecido para a criação de programas. A atividade do fluxograma é normalmente usada para implementar fluxos de trabalho não-sequenciais, mas pode ser usada para fluxos de trabalho sequenciais se nenhum nó de FlowDecision é usado.

Estrutura de fluxo de trabalho do fluxograma

Uma atividade de fluxograma é uma atividade que contém uma coleção de atividades a serem executadas. Os fluxogramas também contêm elementos de controle de fluxo, como FlowDecision e FlowSwitch<T>, que direcionam a execução entre atividades contidas com base nos valores das variáveis.

Tipos de nós de fluxo

Diferentes tipos de elementos são usados dependendo do tipo de controle de fluxo necessário quando o elemento é executado. Os tipos de elementos de fluxograma incluem:

  • FlowStep – Modela uma etapa de execução no fluxograma.

  • FlowDecision - Execução de branches com base em uma condição booliana, semelhante a If.

  • FlowSwitch – ramificações de execução com base em uma opção exclusivo, semelhante a Switch<T>.

Cada link tem uma propriedade de Action que define ActivityAction que pode ser usado para executar atividades filhos, e uma ou mais propriedades de Next que definem que elemento ou elementos a executar quando o elemento atual concluir a execução.

Criando uma sequência básica de atividade com um nó de FlowStep

Para modelar uma sequência básica na qual duas atividades são executadas alternadamente, usa-se o elemento FlowStep. No exemplo a seguir, dois FlowStep elementos são usados para executar duas atividades em sequência.

<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>

Criando um fluxograma condicional com um nó de FlowDecision

Para modelar um nó condicional de fluxo em um fluxo de trabalho do fluxograma (ou seja, para criar um link que funciona como o símbolo de decisão de um fluxograma tradicional), um nó de FlowDecision é usado. A propriedade Condition do nó é definida como uma expressão que define a condição, e as propriedades True e False são definidas como instâncias FlowNode a serem executadas se a expressão for avaliada como true ou false. O exemplo a seguir mostra como definir um fluxo de trabalho que usa um nó de 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>

Criando uma opção exclusiva com um nó de FlowSwitch

Para modelar um fluxograma na qual o caminho selecionado é exclusivo com base em um valor correspondente, o nó de FlowSwitch<T> é usado. A propriedade Expression é definida como um Activity<TResult> com um parâmetro de tipo Object que define o valor para corresponder às escolhas. A Cases propriedade define um dicionário de chaves e FlowNode objetos a serem correspondentes à expressão condicional e um conjunto de FlowNode objetos que definem como a execução deve fluir se o caso especificado corresponder à expressão condicional. O FlowSwitch<T> também define uma propriedade Default que determina como deve ser o fluxo da execução caso nenhum dos casos corresponda à expressão de condição. O exemplo a seguir demonstra como definir um fluxo de trabalho que usa um FlowSwitch<T> elemento.

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