Procedura: Abilitare la persistenza per i flussi di lavoro e i relativi servizi
In questo articolo, viene descritto come abilitare la persistenza dei flussi di lavoro e dei servizi flusso di lavoro.
Abilitare la persistenza dei flussi di lavoro
È possibile associare un archivio di istanze a un oggetto WorkflowApplication tramite la proprietà InstanceStore della classe WorkflowApplication. Il metodo Persist salva o rende persistente un flusso di lavoro nell'archivio di istanze associato all'applicazione. Il metodo Unload rende persistente un flusso di lavoro nell'archivio di istanze, quindi scarica l'istanza dalla memoria. Il metodo Load carica un flusso di lavoro in memoria usando i dati del flusso di lavoro archiviati nell'archivio di persistenza dell'istanza.
Il metodo Persist effettua i passaggi seguenti:
- Sospende l'utilità di pianificazione del flusso di lavoro e attende finché il flusso di lavoro non entra nello stato inattivo.
- Rende persistente o salva il flusso di lavoro nell'archivio di persistenza.
- Riprende l'utilità di pianificazione del flusso di lavoro.
Il metodo Unload effettua i passaggi seguenti:
- Sospende l'utilità di pianificazione del flusso di lavoro e attende finché il flusso di lavoro non entra nello stato inattivo.
- Rende persistente o salva il flusso di lavoro nell'archivio di persistenza.
- Elimina l'istanza del flusso di lavoro nella memoria.
Entrambi i metodi Persist e Unload verranno bloccati mentre un flusso di lavoro si trova in un'area di non persistenza finché non esce dall'area. Il metodo continua l'operazione di persistenza o di scarico una volta completata l'area di non persistenza. Se l'area di non persistenza non viene completata prima della scadenza del timeout, o se il processo di persistenza impiega molto tempo, verrà generato TimeoutException
.
Abilitare la persistenza nel codice
Il membro DurableInstancingOptions della classe WorkflowServiceHost dispone di una proprietà denominata InstanceStore che può essere usata per associare un archivio di istanze all'oggetto WorkflowServiceHost.
// wsh is an instance of WorkflowServiceHost class
wsh.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore();
Quando l'oggetto WorkflowServiceHost viene aperto, la persistenza viene abilitata automaticamente se l'oggetto DurableInstancingOptions.InstanceStore non è Null.
In genere, un comportamento del servizio fornisce l'archivio di istanze concreto da usare con un host del servizio flusso di lavoro tramite la proprietà InstanceStore. Ad esempio, SqlWorkflowInstanceStoreBehavior
crea un'istanza di SqlWorkflowInstanceStore, la configura e la assegna a DurableInstancingOptions.InstanceStore.
Abilitare la persistenza utilizzando un file di configurazione dell'applicazione
È possibile abilitare la persistenza usando un file di configurazione dell'applicazione tramite l'aggiunta al file app.config o web.config del codice riportato di seguito:
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myBehavior">
<sqlWorkflowInstanceStore connectionString="Data Source=myDatabaseServer;Initial Catalog=myPersistenceDatabase" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Importante
Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Se ci si connette ad Azure SQL, le Identità gestite per le risorse Azure sono il metodo di autenticazione consigliato.