Panoramica sul flusso di lavoro di Windows
Un flusso di lavoro è un set di unità elementari chiamate attività che vengono archiviate come un modello che descrive un processo reale. I flussi di lavoro forniscono un metodo per descrivere l'ordine di esecuzione e le relazioni dipendenti tra porzioni di lavoro di breve o lunga durata. Questo lavoro passa attraverso il modello dall'inizio alla fine e le attività possono essere eseguite da persone o da funzioni del sistema.
Motore di runtime del flusso di lavoro
Ogni istanza del flusso di lavoro in esecuzione viene creata e gestita da un motore di runtime in-process con il quale il processo host interagisce tramite uno degli elementi seguenti:
Un oggetto WorkflowInvoker, che richiama il flusso di lavoro come metodo.
Un oggetto WorkflowApplication per il controllo esplicito sull'esecuzione di una singola istanza del flusso di lavoro.
Un oggetto WorkflowServiceHost per le interazioni basate su messaggi in scenari con più istanze.
Ognuna di queste classi esegue il wrapping del runtime di attività principale rappresentato come oggetto ActivityInstance responsabile dell'esecuzione di attività. In un dominio dell'applicazione possono essere in esecuzione contemporaneamente diversi oggetti ActivityInstance.
Ognuno dei tre precedenti oggetti di interazione host viene creato da un albero delle attività definito programma di flusso di lavoro. Usando questi tipi o un host personalizzato che esegue il wrapping della classe ActivityInstance, i flussi di lavoro possono essere eseguiti all'interno di un qualsiasi processo di Windows, incluse applicazioni console, applicazioni basate su form, servizi Windows, siti Web ASP.NET e servizi Windows Communication Foundation (WCF).
Componenti del flusso di lavoro nel processo host
Interazione tra componenti del flusso di lavoro
Nel diagramma seguente viene illustrata la modalità di interazione tra i componenti del flusso di lavoro.
Nel diagramma precedente, il metodo Invoke della classe WorkflowInvoker viene usato per richiamare più istanze del flusso di lavoro. WorkflowInvoker viene usata per flussi di lavoro semplici che non richiedono la gestione da parte dell'host. Tali flussi di lavoro (ad esempio la ripresa di Bookmark) devono essere eseguiti usando invece il metodo Run. Non è necessario attendere il completamento di un'istanza del flusso di lavoro prima di richiamare un altro; il motore di runtime supporta l'esecuzione simultanea di più istanze del flusso di lavoro. Di seguito sono riportati i flussi di lavoro richiamati:
Attività Sequence contenente un'attività WriteLine figlio. L'oggetto Variable dell'attività padre viene associato a un oggetto InArgument dell'attività figlio. Per altre informazioni su variabili, argomenti e binding, vedere Variabili e argomenti.
Attività personalizzata denominata
ReadLine
. Un oggetto OutArgument dell'attivitàReadLine
viene restituito al metodo Invoke chiamante.Attività personalizzata che deriva dalla classe astratta CodeActivity. L'oggetto CodeActivity può accedere a funzionalità in fase di esecuzione (ad esempio rilevamento e proprietà) tramite l'oggetto CodeActivityContext disponibile come parametro del metodo Execute. Per altre informazioni su queste funzionalità in fase di esecuzione, vedere Rilevamento e traccia del flusso di lavoro e Proprietà di esecuzione del flusso di lavoro.