Flussi di lavoro del diagramma di flussoFlowchart Workflows

Un diagramma di flusso è un paradigma noto per la progettazione di programmi.A flowchart is a well-known paradigm for designing programs. L'attività Flowchart viene generalmente usata per implementare i flussi di lavoro non sequenziali, tuttavia può essere sfruttata anche per i flussi di lavoro sequenziali se non viene usato alcun nodo FlowDecision.The Flowchart activity is typically used to implement non-sequential workflows, but can be used for sequential workflows if no FlowDecision nodes are used.

Struttura del flusso di lavoro del diagramma di flussoFlowchart Workflow Structure

Un'attività diagramma di flusso contiene una raccolta di attività da eseguire.A Flowchart activity is an activity that contains a collection of activities to be executed. I diagrammi di flusso contengono gli elementi di controllo del flusso, come FlowDecision e FlowSwitch<T>, che dirigono l'esecuzione tra le attività contenute in base ai valori delle variabili.Flowcharts also contain flow control elements such as FlowDecision and FlowSwitch<T> that direct execution between contained activities based on the values of variables.

Tipi di nodi del flussoTypes of Flow Nodes

Vengono usati tipi diversi di elementi a seconda del tipo di controllo del flusso richiesto quando l'elemento viene eseguito.Different types of elements are used depending on the type of flow control required when the element executes. I tipi di elementi del diagramma di flusso includono:Types of flowchart elements include:

  • FlowStep: modella un passaggio di esecuzione nel diagramma di flusso.FlowStep - Models one step of execution in the flowchart.

  • FlowDecision: crea un ramo dell'esecuzione in base a una condizione Boolean, simile all'oggetto If.FlowDecision - Branches execution based on a Boolean condition, similar to If.

  • FlowSwitch: crea un ramo dell'esecuzione in base a un'opzione esclusiva, simile all'oggetto Switch<T>.FlowSwitch – Branches execution based on an exclusive switch, similar to Switch<T>.

Ogni collegamento dispone di una proprietà Action che definisce un oggetto ActivityAction che può essere usato per eseguire le attività figlio e una o più proprietà Next che definiscono quali elementi eseguire al termine dell'esecuzione dell'elemento corrente.Each link has an Action property that defines a ActivityAction that can be used to execute child activities, and one or more Next properties that define which element or elements to execute when the current element finishes execution.

Creazione di una sequenza di attività di base con un nodo FlowStepCreating a Basic Activity Sequence with a FlowStep Node

Per modellare una sequenza di base in cui vengono eseguite a loro volta due attività, viene usato l'elemento FlowStep.To model a basic sequence in which two activities execute in turn, the FlowStep element is used. Nell'esempio seguente vengono usati due elementi FlowStep per eseguire due attività in sequenza.In the following example, two FlowStep elements are used to execute two activities in sequence.

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

Creazione di un diagramma di flusso condizionale con un nodo FlowDecisionCreating a Conditional Flowchart with a FlowDecision Node

Per modellare un nodo del flusso condizionale in un flusso di lavoro del diagramma di flusso (ovvero per creare un collegamento che funziona come simbolo di decisione di un diagramma di flusso tradizionale), viene usato un nodo FlowDecision.To model a conditional flow node in a flowchart workflow (that is, to create a link that functions as a traditional flowchart's decision symbol), a FlowDecision node is used. La proprietà Condition del nodo è impostata su un'espressione che definisce la condizione e le proprietà True e False sono impostate sulle istanze di FlowNode da eseguire se l'espressione restituisce true o false.The Condition property of the node is set to an expression that defines the condition, and the True and False properties are set to FlowNode instances to be executed if the expression evaluates to true or false. Nell'esempio seguente viene illustrato come definire un flusso di lavoro che usa un nodo FlowDecision.The following example shows how to define a workflow that uses a FlowDecision node.

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

Creazione di un'opzione esclusiva con un nodo FlowSwitchCreating an Exclusive Switch with a FlowSwitch Node

Per modellare un diagramma di flusso in cui un percorso esclusivo viene selezionato in base a un valore corrispondente viene usato il nodo FlowSwitch<T>.To model a flowchart in which one exclusive path is selected based on a matching value, the FlowSwitch<T> node is used. La proprietà Expression è impostata su Activity<TResult> con un parametro di tipo di Object che definisce il valore con cui confrontare le scelte.The Expression property is set to a Activity<TResult> with a type parameter of Object that defines the value to match choices against. La proprietà Cases definisce un dizionario di chiavi e oggetti FlowNode da confrontare con l'espressione condizionale e un set di oggetti FlowNode che definiscono come l'esecuzione deve proseguire se il dato caso corrisponde all'espressione condizionale.The Cases property defines a dictionary of keys and FlowNode objects to match against the conditional expression, and a set of FlowNode objects that define how execution should flow if the given case matches the conditional expression. L'oggetto FlowSwitch<T> definisce anche una proprietà Default che definisce il flusso dell'esecuzione se nessun caso corrisponde all'espressione della condizione.The FlowSwitch<T> also defines a Default property that defines how execution should flow if no cases match the condition expression. Nell'esempio seguente viene illustrato come definire un flusso di lavoro che usa un elemento FlowSwitch<T>.The following example demonstrates how to define a workflow that uses a FlowSwitch<T> element.

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