Endpoint di controllo del flusso di lavoro
L'endpoint di controllo del flusso di lavoro consente agli sviluppatori di chiamare operazioni di controllo per controllare in remoto le istanze del flusso di lavoro ospitate utilizzando WorkflowServiceHost. Questa funzionalità può essere utilizzata per eseguire operazioni di controllo a livello di codice, quali la sospensione, la ripresa e la terminazione.
Avviso
Se si utilizza l'endpoint di controllo del flusso di lavoro all'interno di una transazione e il flusso di lavoro controllato contiene un'attività Persist, l'istanza del flusso di lavoro verrà bloccata finché non si verifica il timeout della transazione.
Gestione delle istanze di flusso di lavoro
.NET Framework 4.6.1 definisce un nuovo contratto denominato IWorkflowInstanceManagement. Questo contratto definisce una serie di operazioni che consentono di controllare in remoto istanze del flusso di lavoro di controllo ospitate da WorkflowServiceHost. WorkflowControlEndpoint è un endpoint standard che fornisce un'implementazione del contratto IWorkflowInstanceManagement. WorkflowControlClient è una classe utilizzata per inviare le operazioni di controllo a WorkflowControlEndpoint.
Le istanze del flusso di lavoro possono essere in uno dei seguenti stati:
Attivo
Lo stato di un'istanza del flusso di lavoro prima che raggiunga lo stato completato e quando non si trova nello stato sospeso. In questo stato, l'istanza del flusso di lavoro è in esecuzione ed elabora messaggi dell'applicazione.
Sospeso
In questo stato, l'istanza del flusso di lavoro non è in esecuzione neppure se sono presenti attività non ancora in esecuzione o parzialmente in esecuzione.
Completato
Lo stato finale dell'istanza di un flusso di lavoro. L'istanza del flusso di lavoro non può essere in esecuzione dopo avere raggiunto lo stato completato.
IWorkflowInstanceManagement
L'interfaccia IWorkflowInstanceManagement definisce un set di operazioni di controllo con versioni sincrone e asincrone. Le versioni transazionali richiedono l'utilizzo di un'associazione in grado di riconoscere le transazioni. Nella tabella riportata di seguito vengono elencate le operazioni di controllo supportate.
Operazione di controllo | Descrizione |
---|---|
Interrompi | Interrompe in modo forzato l'esecuzione dell'istanza del flusso di lavoro. |
Annulla | Esegue il passaggio di un'istanza del flusso di lavoro dallo stato attivo o sospeso allo stato completato. |
Esegui | Fornisce la possibilità di esecuzione di un'istanza del flusso di lavoro. |
Sospendi | Esegue il passaggio di un'istanza del flusso di lavoro dallo stato attivo allo stato sospeso. |
Termina | Esegue il passaggio di un'istanza del flusso di lavoro dallo stato attivo o sospeso allo stato completato. |
Unsuspend | Esegue il passaggio di un'istanza del flusso di lavoro dallo stato sospeso allo stato attivo. |
TransactedCancel | Esegue l'operazione Cancel in una transazione (propagata dal client o creata in locale). Se il sistema gestisce lo stato durevole dell'istanza del flusso di lavoro, quest'ultima deve essere resa persistente durante l'esecuzione di questa operazione. |
TransactedRun | Esegue l'operazione Run in una transazione (propagata dal client o creata in locale). Se il sistema gestisce lo stato durevole dell'istanza del flusso di lavoro, quest'ultima deve essere resa persistente durante l'esecuzione di questa operazione. |
TransactedSuspend | Esegue l'operazione Suspend in una transazione (propagata dal client o creata in locale). Se il sistema gestisce lo stato durevole dell'istanza del flusso di lavoro, quest'ultima deve essere resa persistente durante l'esecuzione di questa operazione. |
TransactedTerminate | Esegue l'operazione Terminate in una transazione (propagata dal client o creata in locale). Se il sistema gestisce lo stato durevole dell'istanza del flusso di lavoro, quest'ultima deve essere resa persistente durante l'esecuzione di questa operazione. |
TransactedUnsuspend | Esegue l'operazione Unsuspend in una transazione (propagata dal client o creata in locale). Se il sistema gestisce lo stato durevole dell'istanza del flusso di lavoro, quest'ultima deve essere resa persistente durante l'esecuzione di questa operazione. |
Il contratto IWorkflowInstanceManagement non fornisce il modo di creare una nuova istanza del flusso di lavoro, ma solo di gestire istanze del flusso di lavoro esistenti. Per altre informazioni sulla creazione remota di una nuova istanza del flusso di lavoro, vedere Estendibilità dell'host del servizio flusso di lavoro.
WorkflowControlEndpoint
WorkflowControlEndpoint è un endpoint standard con un contratto fisso, IWorkflowInstanceManagement. Se aggiunto a un'istanza di WorkflowServiceHost, questo endpoint può essere quindi utilizzato per inviare operazioni di comando a qualsiasi istanza del flusso di lavoro ospitata dall'istanza dell'host. Per altre informazioni sugli endpoint standard, vedere Endpoint standard.
WorkflowControlClient
WorkflowControlClient è una classe che consente di inviare messaggi del controllo a un WorkflowControlEndpoint su un WorkflowServiceHost. Contiene un metodo per ogni operazione supportata dal contratto IWorkflowInstanceManagement, ad eccezione delle operazioni transazionali. WorkflowControlClient utilizza la transazione di ambiente per determinare se utilizzare un'operazione transazionale.