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

Workflow components in the host process
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.

Diagram that shows how workflow components interact.

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:

Vedi anche