Compartilhar via


Persistência de fluxo de trabalho

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

A persistência permite agilidade do processo, escalabilidade, recuperação diante de falhas e a capacidade de gerenciar a memória com mais eficiência. O processo de persistência inclui a identificação de um ponto de persistência, a coleta dos dados a serem salvos e, por fim, a delegação do armazenamento real dos dados para um provedor de persistência.

Para habilitar a persistência para um fluxo de trabalho, você precisa associar um repositório de instâncias ao WorkflowApplication ou WorkflowServiceHost , conforme mencionado em How to: Enable Persistence for Workflows and Workflow Services. O WorkflowApplication e o WorkflowServiceHost usam o repositório de instâncias associado a eles para habilitar a persistência de instâncias de fluxo de trabalho em um repositório 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 armazenados no repositório de persistência.

O .NET Framework 4.6.1 é fornecido com a classe SqlWorkflowInstanceStore , que permite a persistência de dados e metadados sobre instâncias de fluxo de trabalho em um banco de dados SQL Server 2005 ou SQL Server 2008. Consulte o Repositório de Instâncias de Fluxo de Trabalho do SQL para obter mais detalhes.

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

O Windows Server App Fabric simplifica o processo de configuração da persistência. Para obter mais informações, consulte Conceitos de persistência com o Windows Server App Fabric

Pontos de persistência implícitos

A lista a seguir contém exemplos das condições nas quais um fluxo de trabalho é persistente quando um repositório de instâncias é associado a um fluxo de trabalho.

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

  • Quando uma instância de fluxo de trabalho fica ociosa e o WorkflowIdleBehavior é definido no host de fluxo de trabalho. Isso ocorre, por exemplo, quando você usa atividades de mensagens ou uma atividade Delay.

  • Quando um WorkflowApplication fica ocioso e a propriedade PersistableIdle do aplicativo é definida como PersistableIdleAction.Persist.

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

  • Quando uma instância de fluxo de trabalho é encerrada ou concluída.

  • Quando uma atividade Persist é executada.

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

Nesta seção