Procedimiento para habilitar la persistencia para flujos de trabajo y servicios de flujo de trabajo
En este artículo se describe cómo habilitar la persistencia para los flujos de trabajo y los servicios de flujo de trabajo.
Habilitar persistencia para los flujos de trabajo
Puede asociar un almacén de instancias con WorkflowApplication mediante el uso de la propiedad InstanceStore de la clase WorkflowApplication. El método Persist guarda o conserva un flujo de trabajo en el almacén de instancias asociado a la aplicación. El método Unload conserva un flujo de trabajo en el almacén de instancias y, a continuación, descarga la instancia de la memoria. El método Load carga un flujo de trabajo en la memoria usando los datos del flujo de trabajo almacenados en el almacén de persistencia de instancias.
El método Persist lleva a cabo los pasos siguientes:
- Pausa el programador del flujo de trabajo y espera hasta que el flujo de trabajo entre en el estado inactivo.
- Conserva o guarda el flujo de trabajo en el almacén de persistencia.
- Reanuda el programador del flujo de trabajo.
El método Unload lleva a cabo los pasos siguientes:
- Pausa el programador del flujo de trabajo y espera hasta que el flujo de trabajo entre en el estado inactivo.
- Conserva o guarda el flujo de trabajo en el almacén de persistencia.
- Elimina la instancia de flujo de trabajo en la memoria.
Los métodos Persist y Unload se bloquean mientras el flujo de trabajo se encuentra en una zona sin persistencia hasta que el flujo de trabajo salga de ella. El método continúa con la operación de persistencia o descarga después de que se complete la zona sin persistencia. Si la zona sin persistencia no se completa antes de que transcurra el tiempo de espera o, si el proceso de persistencia tarda demasiado, se iniciará una TimeoutException
.
Habilitación de la persistencia en el código
El miembro DurableInstancingOptions de la clase WorkflowServiceHost tiene una propiedad denominada InstanceStore que puede usar para asociar un almacén de instancias con WorkflowServiceHost.
// wsh is an instance of WorkflowServiceHost class
wsh.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore();
Cuando se abre WorkflowServiceHost, la persistencia está habilitada automáticamente si DurableInstancingOptions.InstanceStore no tiene un valor null.
Por lo general, el comportamiento de servicio proporciona el almacén de instancias concreto que se va a usar con un host de servicio de flujo de trabajo usando la propiedad InstanceStore. Por ejemplo, SqlWorkflowInstanceStoreBehavior
crea una instancia de SqlWorkflowInstanceStore, la configura y la asigna a DurableInstancingOptions.InstanceStore.
Habilitación de la persistencia mediante un archivo de configuración de la aplicación
La persistencia puede habilitarse mediante un archivo de configuración de la aplicación agregando el código siguiente al archivo app.config o web.config:
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myBehavior">
<sqlWorkflowInstanceStore connectionString="Data Source=myDatabaseServer;Initial Catalog=myPersistenceDatabase" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Importante
Microsoft recomienda usar el flujo de autenticación más seguro disponible. Si se conecta a Azure SQL, el método de autenticación recomendado es Identidades administradas para recursos de Azure.