Share via


WorkflowPersistenceService.LoadWorkflowInstanceState(Guid) Método

Definição

Quando implementada em uma classe derivada, carrega o estado especificado da instância de fluxo de trabalho novamente na memória.

protected public:
 abstract System::Workflow::ComponentModel::Activity ^ LoadWorkflowInstanceState(Guid instanceId);
protected internal abstract System.Workflow.ComponentModel.Activity LoadWorkflowInstanceState (Guid instanceId);
abstract member LoadWorkflowInstanceState : Guid -> System.Workflow.ComponentModel.Activity
Protected Friend MustOverride Function LoadWorkflowInstanceState (instanceId As Guid) As Activity

Parâmetros

instanceId
Guid

O Guid da atividade raiz da instância do fluxo de trabalho.

Retornos

Uma Activity que representa a atividade raiz da instância do fluxo de trabalho.

Exemplos

O exemplo a seguir demonstra uma implementação do LoadWorkflowInstanceState método . Este exemplo é do exemplo de Serviço de Persistência Personalizada, do arquivo FilePersistenceService.cs. Para obter mais informações, consulte Exemplo de serviço de persistência personalizado.

// Load workflow instance state.
protected override Activity LoadWorkflowInstanceState(Guid instanceId)
{
    Console.WriteLine("Loading instance: {0}\n", instanceId);
    byte[] workflowBytes = DeserializeFromFile(instanceId);
    return WorkflowPersistenceService.RestoreFromDefaultSerializedForm(workflowBytes, null);
}
' Load workflow instance state.
Protected Overrides Function LoadWorkflowInstanceState(ByVal instanceId As System.Guid) As System.Workflow.ComponentModel.Activity
    Console.WriteLine("Loading instance: 0}" + vbLf, instanceId)
    Dim obj As Object = DeserializeFromFile(instanceId)
    Dim workflowBytes As Byte() = DeserializeFromFile(instanceId)
    Return WorkflowPersistenceService.RestoreFromDefaultSerializedForm(workflowBytes, Nothing)
End Function

Comentários

Você deve restaurar uma cópia idêntica da atividade. Para fazer isso, você deve restaurar um válido Stream de sua representação da instância de fluxo de trabalho no armazenamento de dados; em seguida, você deve passá-lo Stream para um dos métodos sobrecarregados Load para desserializar o estado da instância de fluxo de trabalho. Se o serviço de persistência não puder carregar o estado da instância de fluxo de trabalho de seu armazenamento de dados, ele deverá gerar um PersistenceException com uma mensagem apropriada.

O mecanismo de runtime de fluxo de trabalho implementa a semântica de bloqueio para restringir o acesso a um estado de instância de fluxo de trabalho salvo em um armazenamento de dados. Isso pode ser acessado por serviços de persistência executados em vários processos. A semântica de bloqueio foi projetada para impedir que os serviços de persistência executados em dois processos diferentes carreguem a mesma instância de fluxo de trabalho na memória ao mesmo tempo. Dependendo do tipo de ambiente ao qual seu serviço de persistência foi projetado para dar suporte, você pode escolher se deseja dar suporte a essa funcionalidade. Se você optar por dar suporte à semântica de bloqueio de runtime e se esse estado de instância de fluxo de trabalho tiver sido bloqueado anteriormente por outro processo, você deverá gerar um WorkflowOwnershipException. Caso contrário, você deve bloquear o acesso ao estado da instância de fluxo de trabalho em seu armazenamento de dados. O estado da instância de fluxo de trabalho pode ser desbloqueado por uma chamada para UnlockWorkflowInstanceState ou uma chamada para SaveWorkflowInstanceState com o parâmetro de desbloqueio definido truecomo .

Aplica-se a