Partager via


WorkflowPersistenceService.LoadWorkflowInstanceState(Guid) Méthode

Définition

En cas d'implémentation dans une classe dérivée, recharge l'état spécifié de l'instance de workflow en mémoire.

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

Paramètres

instanceId
Guid

Guid de l'activité racine de l'instance de workflow.

Retours

Activity représentant l'activité racine de l'instance de workflow.

Exemples

L'exemple suivant illustre une implémentation de la méthode LoadWorkflowInstanceState. Il provient de l'exemple de Custom Persistence Service, dans le fichier FilePersistenceService.cs. Pour plus d’informations, consultez Exemple de service de persistance personnalisée.

// 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

Remarques

Vous devez restaurer une copie identique de l'activité. Pour ceci, vous devez restaurer une classe Stream valide de la représentation de l'instance de workflow dans la banque de données ; puis, vous devez passer cette classe Stream à l'une des méthodes Load surchargées pour désérialiser l'état de l'instance de workflow. Si votre service de persistance ne peut pas charger l'état de l'instance de workflow à partir de sa banque de données, il doit lever une classe PersistenceException avec un message approprié.

Le moteur d'exécution de workflow implémente la sémantique de verrouillage pour restreindre l'accès à l'état d'une instance de workflow enregistrée dans une banque de données. Vous pouvez y accéder par les services de persistance qui s'exécutent dans plusieurs processus. La sémantique de verrouillage est conçue pour empêcher des services de persistance qui s'exécutent dans deux processus différents de charger en même temps la même instance de workflow en mémoire. Selon le type d'environnement que votre service de persistance peut prendre en charge, vous avez la possibilité d'utiliser ces fonctionnalités. Si vous choisissez de prendre en charge la sémantique de verrouillage d'exécution et si cet état de l'instance de workflow a été verrouillé auparavant par un autre processus, vous devez alors lever une classe WorkflowOwnershipException. Sinon, vous devez verrouiller l'accès à l'état de l'instance de workflow dans votre banque de données. L'état de l'instance de workflow peut être déverrouillé par un appel à la méthode UnlockWorkflowInstanceState ou à SaveWorkflowInstanceState, le paramètres ayant la valeur true.

S’applique à