Flussi di lavoro del diagramma di flusso
Le informazioni contenute in questo argomento sono valide per Windows Workflow Foundation 4.
Un diagramma di flusso è un paradigma noto per la progettazione di programmi. L'attività Flowchart viene generalmente utilizzata per implementare i flussi di lavoro non sequenziali, tuttavia può essere sfruttata anche per i flussi di lavoro sequenziali se non viene utilizzato alcun nodo FlowDecision.
Struttura del flusso di lavoro del diagramma di flusso
Un'attività Flowchart contiene una raccolta di nodi del flusso che ereditano dall'oggetto FlowNode. I nodi del flusso possono contenere attività figlio da eseguire e dirigere l'esecuzione verso altri nodi del flusso.
Tipi di nodi del flusso
Vengono utilizzati tipi diversi di elementi a seconda del tipo di controllo del flusso richiesto quando l'elemento viene eseguito. I tipi di elementi del diagramma di flusso includono:
FlowStep: modella un passaggio di esecuzione nel diagramma di flusso.
FlowDecision: crea un ramo dell'esecuzione in base a una condizione Boolean, simile all'oggetto If.
FlowSwitch: crea un ramo dell'esecuzione in base a un'opzione esclusiva, simile all'oggetto Switch.
Ogni collegamento dispone di una proprietà Action che definisce un oggetto ActivityAction che può essere utilizzato per eseguire le attività figlio e una o più proprietà Next che definiscono quali elementi eseguire al termine di ogni relativa esecuzione.
Creazione di una sequenza di attività di base con un nodo FlowStep
Per modellare una sequenza di base in cui vengono eseguite a loro volta due attività, viene utilizzato l'elemento FlowStep. Nell'esempio seguente vengono utilizzati due elementi FlowStep per eseguire due attività in sequenza.
<Flowchart>
<FlowStep>
<Read Result = "[result]"/>
<FlowStep.Next>
<FlowStep>
<Write Text="[Hello + result]"/>
</FlowStep>
</FlowStep.Next>
</FlowStep>
</Flowchart>
Creazione di un diagramma di flusso condizionale con un nodo FlowDecision
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 utilizzato un nodo FlowDecision. La proprietà Condition del nodo viene impostata su un oggetto WorkflowElement che definisce la condizione e le proprietà True e False vengono impostate sulle istanze FlowNode da eseguire se l'espressione restituisce true o false. Nell'esempio seguente viene illustrato come definire un flusso di lavoro che utilizza un nodo 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>
Creazione di un'opzione esclusiva con un nodo FlowSwitch
Per modellare un diagramma di flusso in cui un percorso esclusivo viene selezionato in base a un valore corrispondente viene utilizzato il nodo FlowSwitch. La proprietà Expression viene impostata su un oggetto WorkflowElement’1 con un parametro di tipo Object che definisce il valore con cui confrontare le scelte e la proprietà Cases definisce un dizionario di chiavi e oggetti FlowNode da confrontare con l'espressione condizionale, nonché un set di oggetti FlowNode che definiscono il flusso dell'esecuzione se il caso specificato corrisponde all'espressione condizionale. L'oggetto FlowSwitch definisce anche una proprietà Default che definisce il flusso dell'esecuzione se nessun caso corrisponde all'espressione della condizione. Nell'esempio seguente viene illustrato come definire un flusso di lavoro che utilizza un elemento 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>