Freigeben über


WorkflowPersistenceService.LoadWorkflowInstanceState(Guid) Methode

Definition

Bei Implementierung in einer abgeleiteten Klasse, wird der angegebene Zustand der Workflowinstanz wieder in den Arbeitsspeicher geladen.

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

Parameter

instanceId
Guid

Guid der Stammaktivität der Workflowinstanz.

Gibt zurück

Eine Activity, die die Stammaktivität der Workflowinstanz darstellt.

Beispiele

Im folgenden Beispiel wird eine Implementierung der LoadWorkflowInstanceState-Methode gezeigt. Dieses Beispiel stammt aus dem Beispiel zum benutzerdefinierten Persistenzdienst in der Datei FilePersistenceService.cs. Weitere Informationen finden Sie unter Beispiel für den benutzerdefinierten Persistenzdienst.

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

Hinweise

Sie müssen eine identische Kopie der Aktivität wiederherstellen. Dazu müssen Sie einen gültigen Stream aus der Darstellung der Workflowinstanz im Datenspeicher wiederherstellen. Übergeben Sie dann diesen Stream an eine der überladenen Load-Methoden, um den Zustand der Workflowinstanz zu deserialisieren. Wenn der Persistenzdienst den Zustand der Workflowinstanz nicht aus seinem Datenspeicher laden kann, sollte er PersistenceException in Verbindung mit einer entsprechenden Meldung auslösen.

Die Workflowruntime-Engine implementiert eine Sperrsemantik, um den Zugriff auf einen im Datenspeicher gespeicherten Zustand der Workflowinstanz zu beschränken. Auf diesen Zustand können Persistenzdienste zugreifen, die in mehreren Prozessen ausgeführt werden. Eine Sperrsemantik soll verhindern, dass Persistenzdienste, die in zwei verschiedenen Prozessen ausgeführt werden, gleichzeitig dieselbe Workflowinstanz in den Arbeitsspeicher laden. Ob Sie sich für diese Funktionalität entscheiden, hängt vom Umgebungstyp ab, den der Persistenzdienst unterstützen soll. Wenn Sie sich für die Laufzeitsperrsemantik entscheiden und dieser Zustand der Workflowinstanzen wurde bereits von einem anderen Prozess gesperrt, dann sollten Sie WorkflowOwnershipException auslösen. Sperren Sie andernfalls den Zugriff auf den Zustand der Workflowinstanz im Datenspeicher. Sie können den Zustand einer Workflowinstanz entsperren, wenn Sie UnlockWorkflowInstanceState oder SaveWorkflowInstanceState aufrufen und dabei den Unlock-Parameter auf true festgelegt haben.

Gilt für: