Persistência do fluxo de trabalho
A persistência do fluxo de trabalho é a captura durável do estado de uma instância do fluxo de trabalho, independentemente das informações do processo ou do computador. Isso é feito para fornecer um ponto de recuperação bem conhecido para a instância de fluxo de trabalho no caso de falha do sistema, ou 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 nó em um farm de servidores.
A persistência permite agilidade do processo, escalabilidade, recuperação em caso de falha e a capacidade de gerenciar a memória de forma mais eficiente. O processo de persistência inclui a identificação de um ponto de persistência, a coleta dos dados a serem salvos e, finalmente, a delegação do armazenamento real dos dados a um provedor de persistência.
Para habilitar a persistência para um fluxo de trabalho, você precisa associar um armazenamento de instâncias ao WorkflowApplication ou WorkflowServiceHost conforme mencionado em Como habilitar a persistência para fluxos de trabalho e serviços de fluxo de trabalho. O WorkflowApplication e o WorkflowServiceHost usam o armazenamento de instâncias associado a eles para habilitar instâncias de fluxo de trabalho persistentes em um repositório de persistência e carregar instâncias de fluxo de trabalho na memória com base nos dados de 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 SQL Workflow Instance Store para obter mais detalhes.
Para armazenar e carregar os dados específicos do aplicativo junto com as informações relacionadas à instância do 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 sob 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 é persistido quando um armazenamento 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 do fluxo de trabalho. Isso ocorre, por exemplo, quando você usa atividades de mensagens ou uma atividade de atraso .
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 desenvolvido usando uma versão anterior do Windows Workflow Foundation encontra um ponto de persistência durante a execução interoperável.