Compartilhar via


Fluxos de trabalho do fluxograma

Um fluxograma é um paradigma conhecido para criar 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 do fluxograma é uma atividade que contém uma coleção de atividades a ser executadas. Os fluxogramas também contêm os elementos de controle de fluxo como FlowDecision e FlowSwitch<T> que a execução direta entre atividades contidas base nos valores das variáveis.

Tipos de nós de fluxo

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

  • FlowStep - modelos uma etapa de execução no fluxograma.

  • FlowDecision - ramificações de execução com base em uma condição boolean, 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 em duas atividades que executam por sua vez, o elemento de FlowStep é usado. No exemplo a seguir, dois elementos de FlowStep são usados para executar em ordem duas atividades.

<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 de Condition do nó é definida como uma expressão que define a condição, e as propriedades de True e de False são definidas para as instâncias de FlowNode a ser executadas se a expressão avaliada como true ou a 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 de Expression é definida como Activity<TResult> com um parâmetro de tipo de Object que define o valor para coincidir com opções. A propriedade de Cases define um dicionário de chaves e objetos de FlowNode a correspondência com a expressão condicional, e um conjunto de objetos de FlowNode que definem como a execução deve fluxo se os casos dados correspondem a expressão condicional. FlowSwitch<T> também define uma propriedade de Default que define como a execução deve fluxo se nenhum caso corresponde a expressão da condição. O exemplo a seguir demonstra como definir um fluxo de trabalho que usa um elemento de FlowSwitch<T> .

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