Como habilitar a persistência para fluxos de trabalho e serviços de fluxo de trabalho
Este artigo descreve como habilitar a persistência para fluxos de trabalho e serviços de fluxo de trabalho.
Habilitar persistência para fluxos de trabalho
Você pode associar um armazenamento de instâncias a um WorkflowApplication usando a InstanceStore WorkflowApplication propriedade da classe. O Persist método salva ou persiste um fluxo de trabalho no armazenamento de instâncias associado ao aplicativo. O Unload método persiste um fluxo de trabalho no armazenamento de instâncias e, em seguida, descarrega a instância da memória. O método Load carrega um fluxo de trabalho na memória usando os dados do fluxo de trabalho armazenados no repositório de persistência da instância.
O método Persist executa as seguintes etapas:
- Pausa o agendador de fluxo de trabalho e aguarda até que o fluxo de trabalho entre no estado ocioso.
- Persiste ou salva o fluxo de trabalho no repositório de persistência.
- Retoma o agendador do fluxo de trabalho.
O método Unload executa as seguintes etapas:
- Pausa o agendador de fluxo de trabalho e aguarda até que o fluxo de trabalho entre no estado ocioso.
- Persiste ou salva o fluxo de trabalho no repositório de persistência.
- Elimina a instância do fluxo de trabalho na memória.
Os métodos Persist e Unload serão bloqueados enquanto um fluxo de trabalho estiver em uma zona sem persistência até que o fluxo de trabalho saia da zona sem persistência. O método continua com a operação de persistência ou descarga após a conclusão da zona sem persistência. Se a zona sem persistência não for concluída antes do tempo limite passar, ou se o processo de persistência demorar muito, um TimeoutException
será lançado.
Habilitar persistência no código
O membro DurableInstancingOptions da classe tem uma propriedade chamada InstanceStore que você pode usar para associar um armazenamento de WorkflowServiceHost instâncias ao WorkflowServiceHost.
// wsh is an instance of WorkflowServiceHost class
wsh.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore();
Quando o WorkflowServiceHost é aberto, a persistência é automaticamente habilitada se o DurableInstancingOptions.InstanceStore não for nulo.
Normalmente, um comportamento de serviço fornece o armazenamento de instância concreto a ser usado com um host de serviço de fluxo de trabalho usando a propriedade InstanceStore . Por exemplo, SqlWorkflowInstanceStoreBehavior
cria uma instância do SqlWorkflowInstanceStore, configura-o e atribui-o ao DurableInstancingOptions.InstanceStore.
Habilitar a persistência usando um arquivo de configuração do aplicativo
A persistência pode ser habilitada usando um arquivo de configuração do aplicativo adicionando o seguinte código ao seu arquivo app.config ou 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
A Microsoft recomenda que você use o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades Gerenciadas para recursos do Azure serão o método de autenticação recomendado.