Persistência de fluxo de trabalho

Persistência de fluxo de trabalho é a captura durável do estado de uma instância de fluxo de trabalho, independente de processo ou de informações do computador. Isso é feito para fornecer um ponto conhecido de recuperação para a instância de fluxo de trabalho no caso de falha do sistema, ou para preservar a memória descarregando as instâncias de fluxo de trabalho que não estão fazendo ativamente o trabalho, ou para mover o estado da instância de fluxo de trabalho de um nó para outro nó em um farm de servidores.

Persistência permite a agilidade do processo, a escalabilidade, a recuperação face falhar, e a capacidade gerenciar mais eficientemente a memória. O processo de persistência inclui a identificação de um ponto de persistência, a coleta de dados a ser salvos, e finalmente a delegação de armazenamento real de dados a um provedor de persistência.

Para ativar persistência para um fluxo de trabalho, você precisa associar um armazenamento de instância com o WorkflowApplication ou WorkflowServiceHost como mencionado em Como: habilitar a Persistência para Fluxos de Trabalho e Serviços de Fluxo de Trabalho. Os recursos WorkflowApplication e WorkflowServiceHost usam o armazenamento de instância associado a eles para ativar instâncias de fluxo de trabalho persistentes em um armazenamento de persistência e carregar instâncias de fluxo de trabalho na memória com base nos dados da instância de fluxo de trabalho guardados no armazenamento de persistência.

O .NET Framework 4.6.1 vem com a classe SqlWorkflowInstanceStore, que permite a persistência de dados e metadados sobre as instâncias de fluxo de trabalho em uma base de dados SQL Server 2005 ou SQL Server 2008. Consulte Instância Store de Fluxo de Trabalho do SQL para obter mais detalhes.

Para armazenar e carregar os dados específicos do aplicativo junto com informações relacionadas instância de fluxo de trabalho, você pode criar os participantes de persistência que estendem a classe de PersistenceParticipant . Um participante de persistência participa no processo de persistência para salvar dados serializados personalizados no armazenamento de persistência, para carregar os dados da instância na memória, e executar qualquer lógica adicional em uma transação de persistência. Para obter mais informações, consulte Participantes de Persistência.

A tela de aplicativo Windows Server simplifica o processo de configurar a persistência. Para obter mais informações, consulte Conceitos de Persistência com o Windows Server App Fabric

Pontos implícitos de persistência

A lista a seguir contém exemplos das circunstâncias na qual um fluxo de trabalho é mantido quando um armazenamento de instância é associado com um fluxo de trabalho.

  • Quando uma atividade de TransactionScope ou de TransactedReceiveScope é concluída.

  • Quando uma instância de fluxo de trabalho se torna a ociosa e o WorkflowIdleBehavior é definido no host de fluxo de trabalho. Isso ocorre, por exemplo, quando você usa atividades de mensagem ou uma atividade de Atraso.

  • Quando um WorkflowApplication se torna a ocioso e a propriedade PersistableIdle do aplicativo são definidas como PersistableIdleAction.Persist.

  • Quando um aplicativo host seja instruído para persistir ou descarregar uma instância de fluxo de trabalho.

  • Quando uma instância de fluxo de trabalho seja finalizada ou termina.

  • Quando uma atividade Persistir é executada.

  • Quando uma instância de um fluxo de trabalho desenvolvido usando uma versão anterior do Windows Workflow Foundation localizar um ponto de persistência durante a execução interoperável.

Nesta seção