Flussi di lavoro macchina a statiState Machine Workflows

Una macchina a stati è un paradigma noto per lo sviluppo di programmi.A state machine is a well-known paradigm for developing programs. L'attività StateMachine può essere usata insieme all'oggetto State, Transition e ad altre attività per compilare programmi del flusso di lavoro macchina a stati.The StateMachine activity, along with State, Transition, and other activities can be used to build state machine workflow programs. In questo argomento viene fornita una panoramica sulla creazione dei flussi di lavoro macchina a stati.This topic provides an overview of creating state machine workflows.

Panoramica sul flusso di lavoro macchina a statiState Machine Workflow Overview

I flussi di lavoro macchina a stati forniscono uno stile di modellazione con cui è possibile modellare il flusso di lavoro come se fosse basato sugli eventi.State machine workflows provide a modeling style with which you can model your workflow in an event-driven manner. Un'attività StateMachine contiene gli stati e le transizioni che costituiscono la logica della macchina a stati e può essere usata ovunque ne sia possibile l'applicazione.A StateMachine activity contains the states and transitions that make up the logic of the state machine, and can be used anywhere an activity can be used. Sono disponibili diverse classi nel runtime della macchina a stati:There are several classes in the state machine runtime:

Per creare un flusso di lavoro macchina a stati, gli stati vengono aggiunti a un'attività StateMachine e le transizioni vengono usate per controllare il flusso tra gli stati.To create a state machine workflow, states are added to a StateMachine activity, and transitions are used control the flow between states. Nella schermata seguente, dal esercitazione introduttiva passaggio procedura: creare un flusso di lavoro macchina, viene illustrato un flusso di lavoro macchina con tre stati e tre transizioni.The following screenshot, from the Getting Started Tutorial step How to: Create a State Machine Workflow, shows a state machine workflow with three states and three transitions. Initialize Target è lo stato iniziale e rappresenta il primo stato nel flusso di lavoro.Initialize Target is the initial state and represents the first state in the workflow. È designato dalla linea che porta a dal di avviare nodo.This is designated by the line leading to it from the Start node. Lo stato finale nel flusso di lavoro denominato FinalStatee rappresenta il punto in cui è stato completato il flusso di lavoro.The final state in the workflow is named FinalState, and represents the point at which the workflow is completed.

Flusso di lavoro macchina a stati completatoCompleted State Machine Workflow

In un flusso di lavoro macchina a stati deve essere disponibile un unico stato iniziale e almeno uno stato finale.A state machine workflow must have one and only one initial state, and at least one final state. Ogni stato che non è finale deve disporre di almeno una transizione.Each state that is not a final state must have at least one transition. Le sezioni seguenti riguardano la creazione e la configurazione degli stati e delle transizioni.The following sections cover creating and configuring states and transitions.

Creazione e configurazione degli statiCreating and Configuring States

Un oggetto State rappresenta uno stato in cui può trovarsi una macchina a stati.A State represents a state in which a state machine can be in. Per aggiungere un State a un flusso di lavoro, trascinare il stato ActivityDesigner dal macchina a stati sezione del della casella degli strumenti e rilasciarlo su un StateMachine attività di Progettazione flussi di lavoro di Windows.Windows Workflow Designer area.To add a State to a workflow, drag the State activity designer from the State Machine section of the Toolbox and drop it onto a StateMachine activity on the Progettazione flussi di lavoro di Windows.Windows Workflow Designer surface.

WF4 Stato attività macchineWF4 State Machine Activities

Per configurare uno stato come il stato iniziale, lo stato di mouse e selezionare imposta come stato iniziale.To configure a state as the Initial State, right-click the state and select Set as Initial State. Inoltre, se è presente alcun stato iniziale corrente, lo stato iniziale è possibile impostare trascinando una riga dal avviare nodo all'inizio del flusso di lavoro nello stato desiderato.Additionally, if there is no current initial state, the initial state can be designated by dragging a line from the Start node at the top of the workflow to the desired state. Quando un StateMachine attività viene rilasciata nella finestra di progettazione del flusso di lavoro, essa viene preconfigurata con uno stato iniziale denominato State1.When a StateMachine activity is dropped onto the workflow designer, it is pre-configured with an initial state named State1. In un flusso di lavoro macchina a stati deve essere disponibile un unico stato iniziale.A state machine workflow must have one and only one initial state.

Uno stato che rappresenta quello di chiusura in una macchina a stati è denominato stato finale.A state that represents a terminating state in a state machine is called a final state. Uno stato finale è uno stato la cui relativa proprietà IsFinal è impostata su true, è privo di attività Exit e non presenta alcuna transizione che abbia origine da esso.A final state is a state that has its IsFinal property set to true, has no Exit activity, and no transitions originating from it. Per aggiungere uno stato finale a un flusso di lavoro, trascinare un FinalState ActivityDesigner dal macchina a stati sezione del della casella degli strumenti e rilasciarlo su un StateMachine attività il Progettazione flussi di lavoro di Windows.Windows Workflow Designer area.To add a final state to a workflow, drag a FinalState activity designer from the State Machine section of the Toolbox and drop it onto a StateMachine activity on the Progettazione flussi di lavoro di Windows.Windows Workflow Designer surface. Un flusso di lavoro macchina a stati deve disporre di almeno uno stato finale.A state machine workflow must have at least one final state.

Configurazione delle azioni di ingresso e di uscitaConfiguring Entry and Exit Actions

Uno stato può disporre di un'azione Entry e di una Exit.A state can have an Entry and an Exit action. Uno stato configurato come finale può disporre solo di un'azione di ingresso.(A state configured as a final state may have only an entry action). Quando un'istanza del flusso di lavoro passa a uno stato, tutte le attività nell'azione in ingresso vengono eseguite.When a workflow instance enters a state, any activities in the entry action execute. Quando l'azione di ingresso viene completata, i trigger per le transizioni di stato vengono pianificati.When the entry action is complete, the triggers for the state’s transitions are scheduled. Quando una transizione a un altro stato viene confermata, le attività nell'azione di uscita vengono eseguite, anche se le transizioni di stato tornano allo stesso stato.When a transition to another state is confirmed, the activities in the exit action are executed, even if the state transitions back to the same state. Al termine dell'azione di uscita, le attività nell'azione della transizione vengono eseguite, quindi si passa al nuovo stato e le relative azioni di ingresso vengono pianificate.After the exit action completes, the activities in the transition’s action execute, and then the new state is transitioned to, and its entry actions are scheduled.

Nota

Durante il debug di un flusso di lavoro macchina a stati, i punti di interruzione possono essere inseriti nell'attività e negli stati della macchina a stati radice all'interno del flusso di lavoro della macchina a stati.When debugging a state machine workflow, breakpoints can be placed on the root state machine activity and states within the state machine workflow. È possibile che i punti di interruzione non siano inseriti direttamente nelle transizioni, bensì in tutte le attività contenute all'interno degli stati e delle transizioni.Breakpoints may not be placed directly on the transitions, but they may be placed on any activities contained within the states and transitions.

Creazione e configurazione delle transizioniCreating and Configuring Transitions

Tutti gli stati devono disporre di almeno una transizione, ad eccezione di uno stato finale che non può presentare alcuna transizione.All states must have at least one transition, except for a final state which may not have any transitions. Le transizioni possono essere aggiunte dopo l'aggiunta di uno stato al flusso di lavoro macchina a stati. In alternativa, possono essere create quando lo stato viene rilasciato.Transitions may be added after a state is added to a state machine workflow, or they can be created as the state is dropped.

Per aggiungere un State e creare una transizione in un unico passaggio, trascinare un stato attività dal macchina a stati sezione del della casella degli strumenti e passarla su un altro stato finestra di progettazione del flusso di lavoro.To add a State and create a transition in one step, drag a State activity from the State Machine section of the Toolbox and hover it over another state in the workflow designer. Quando l'oggetto State trascinato si trova su un altro oggetto State, intorno a State verranno visualizzati quattro triangoli.When the dragged State is over another State, four triangles will appear around the other State. Se l'oggetto State viene rilasciato su uno dei quattro triangoli, viene aggiunto alla macchina a stati e una transizione viene creata dall'oggetto State di origine all'oggetto State di destinazione rilasciato.If the State is dropped onto one of the four triangles, it is added to the state machine and a transition is created from the source State to the dropped destination State. Per ulteriori informazioni, vedere ActivityDesigner Transition.For more information, see Transition Activity Designer.

Per creare una transizione dopo l'aggiunta di uno stato sono disponibili due opzioni.To create a transition after a state is added, there are two options. La prima consiste nel trascinare lo stato dall'area di progettazione del flusso di lavoro, passarlo su uno stato esistente, quindi rilasciarlo su uno dei punti di trascinamento.The first option is to drag the state from the workflow designer surface and hover it over an existing state and drop it on one of the drop points. Questa operazione è molto simile al metodo descritto nella sezione precedente.This is very similar to the method described in the previous section. È inoltre possibile passare il mouse sullo stato di origine desiderato e tracciare una linea allo stato di destinazione scelto.You can also hover the mouse over the desired source state, and drag a line to the desired destination state.

Nota

Un singolo stato in una macchina a stati può essere composto da un massimo di 76 transizioni create mediante la finestra di progettazione flussi di lavoro.A single state in a state machine can have up to 76 transitions created using the workflow designer. Il limite alle transizioni per uno stato per i flussi di lavoro creati all'esterno della finestra di progettazione è stabilito solo dalle risorse di sistema.The limit on transitions for a state for workflows created outside the designer is limited only by system resources.

Una transizione può disporre delle proprietà Trigger, Condition e Action.A transition may have a Trigger, a Condition, and an Action. La proprietà Trigger di una transizione viene pianificata al completamento dell'azione Entry dello stato di origine della transizione.A transition’s Trigger is scheduled when the transition’s source state’s Entry action is complete. In genere, la proprietà Trigger è un'attività in attesa del verificarsi di alcuni tipi di evento, ma può trattarsi di una qualsiasi attività o di nessuna attività.Typically the Trigger is an activity that waits for some type of event to occur, but it can be any activity, or no activity at all. Una volta completata l'attività Trigger, la proprietà Condition, se presente, viene valutata.Once the Trigger activity is complete, the Condition, if present, is evaluated. Se non è disponibile alcuna attività Trigger, viene valutata immediatamente la proprietà Condition.If there is no Trigger activity then the Condition is immediately evaluated. Se viene restituito false dalla condizione, la transizione viene annullata e l'attività Trigger per tutte le transizioni dallo stato viene ripianificata.If the condition evaluates to false, the transition is cancelled, and the Trigger activity for all transitions from the state are rescheduled. Se vi sono altre transizioni che condividono lo stesso stato di origine della transizione corrente, le azioni Trigger vengono annullate, nonché ripianificate.If there are other transitions that share the same source state as the current transition, those Trigger actions are cancelled and rescheduled as well. Se la proprietà Condition restituisce true, o non esiste alcuna condizione, viene eseguita l'azione Exit dello stato di origine, quindi viene eseguita la proprietà Action della transizione.If the Condition evaluates to true, or there is no condition, then the Exit action of the source state is executed, and then the Action of the transition is executed. Quando il Action viene completato, il controllo passa al destinazione statoWhen the Action completes, control passes to the Target state

Le transizioni che condividono un trigger comune sono note come transizioni del trigger condivise.Transitions that share a common trigger are known as shared trigger transitions. Ogni transizione in un gruppo di transizioni del trigger condivise ha lo stesso trigger, ma una proprietà Condition e un'azione univoche.Each transition in a group of shared trigger transitions has the same trigger, but a unique Condition and Action. Per aggiungere altre azioni a una transizione e creare una transizione condivisa, fare clic sul cerchio che indica l'inizio della transizione desiderata e trascinarlo nello stato desiderato.To add additional actions to a transition and create a shared transition, click the circle that indicates the start of the desired transition and drag it to the desired state. La nuova transizione condividerà uno stesso trigger della transizione iniziale, ma avrà una condizione e un'azione univoche.The new transition will share a same trigger as the initial transition, but it will have a unique condition and action. Le transizioni condivise possono anche essere create dalla finestra di progettazione della transizione facendo Aggiungi transizione del trigger condivisa nella parte inferiore della finestra di progettazione di transizione e selezionando lo stato di destinazione desiderato dal Gli stati disponibili per la connessione elenco a discesa.Shared transitions can also be created from within the transition designer by clicking Add shared trigger transition at the bottom of the transition designer, and then selecting the desired target state from the Available states to connect drop-down.

Nota

Si noti che se Condition di una transizione restituisce False (o tutti gli stati di una transizione trigger condivisa restituiscono False), la transizione non si verificherà e tutti i trigger per tutte le transizioni dallo stato verranno rinviati.Note that if the Condition of a transition evaluates to False (or all of the conditions of a shared trigger transition evaluate to False), the transition will not occur and all triggers for all the transitions from the state will be rescheduled.

Per ulteriori informazioni sulla creazione di flussi di lavoro macchina stato, vedere procedura: creare un flusso di lavoro macchina, ActivityDesigner StateMachine, stato ActivityDesigner, ActivityDesigner FinalState, e transizione ActivityDesigner.For more information on creating state machine workflows, see How to: Create a State Machine Workflow, StateMachine Activity Designer, State Activity Designer, FinalState Activity Designer, and Transition Activity Designer.

Terminologia della macchina a statiState Machine Terminology

Contenuto della sezione viene definito il vocabolario della macchina a stati usato in questo argomento.This section defines the state machine vocabulary used throughout this topic.

StatoState
L'unità di base che costituisce una macchina a stati.The basic unit that composes a state machine. Una macchina a stati può trovarsi in uno stato in qualsiasi momento particolare.A state machine can be in one state at any particular time.

Azione di ingressoEntry Action
Un'attività eseguita quando si passa a uno stato.An activity executed when entering the state

Azione di uscitaExit Action
Un'attività eseguita quando si esce da uno stato.An activity executed when exiting the state

TransizioneTransition
Una relazione diretta tra due stati che rappresenta la risposta completa di una macchina a stati al verificarsi di un evento di un tipo particolare.A directed relationship between two states which represents the complete response of a state machine to an occurrence of an event of a particular type.

Transizione condivisaShared Transition
Una transizione che condivide uno stato e un trigger di origine con una o più transizioni, ma dispone di una condizione e un'azione univoche.A transition that shares a source state and trigger with one or more transitions, but has a unique condition and action.

TriggerTrigger
Un'attività di trigger che genera una transizione.A triggering activity that causes a transition to occur.

CondizioneCondition
Un vincolo che deve restituire true dopo il verificarsi del trigger affinché la transizione venga completata.A constraint which must evaluate to true after the trigger occurs in order for the transition to complete.

Azione di transizioneTransition Action
Un'attività che viene eseguita quando si effettua una determinata transizione.An activity which is executed when performing a certain transition.

Transizione condizionaleConditional Transition
Una transizione con una condizione esplicita.A transition with an explicit condition.

Transizione autodirezionaleSelf-transition
Una transizione che passa da uno stato a se stessa.A transition which transits from a state to itself.

Stato inizialeInitial State
Uno stato che rappresenta il punto iniziale della macchina a stati.A state which represents the starting point of the state machine.

Stato finaleFinal State
Uno stato che rappresenta il completamento della macchina a stati.A state which represents the completion of the state machine.

Vedere ancheSee Also

Procedura: Creare un flusso di lavoro della macchina a statiHow to: Create a State Machine Workflow
Activity Designer StateMachineStateMachine Activity Designer
Activity Designer StateState Activity Designer
Activity Designer FinalStateFinalState Activity Designer
Activity Designer TransitionTransition Activity Designer