Udostępnij za pośrednictwem


WorkflowPersistenceService.LoadWorkflowInstanceState(Guid) Metoda

Definicja

Po zaimplementowaniu w klasie pochodnej ładuje określony stan wystąpienia przepływu pracy z powrotem do pamięci.

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

Parametry

instanceId
Guid

Działanie Guid główne wystąpienia przepływu pracy.

Zwraca

Element Activity reprezentujący działanie główne wystąpienia przepływu pracy.

Przykłady

W poniższym przykładzie pokazano implementację LoadWorkflowInstanceState metody . Ten przykład pochodzi z przykładowej usługi Custom Persistence Service z pliku FilePersistenceService.cs. Aby uzyskać więcej informacji, zobacz Przykład usługi Custom Persistence Service.

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

Uwagi

Musisz przywrócić identyczną kopię działania. W tym celu należy przywrócić prawidłową Stream reprezentację wystąpienia przepływu pracy w magazynie danych. Następnie należy przekazać je Stream do jednej z przeciążonych Load metod w celu deserializacji stanu wystąpienia przepływu pracy. Jeśli usługa trwałości nie może załadować stanu wystąpienia przepływu pracy z magazynu danych, powinna zgłosić PersistenceException odpowiedni komunikat.

Aparat środowiska uruchomieniowego przepływu pracy implementuje blokowanie semantyki w celu ograniczenia dostępu do stanu wystąpienia przepływu pracy zapisanego w magazynie danych. Dostęp do tego można uzyskać za pomocą usług trwałości uruchamianych w wielu procesach. Semantyka blokowania została zaprojektowana tak, aby zapobiec jednoczesnemu ładowaniu tego samego wystąpienia przepływu pracy do pamięci w dwóch różnych procesach. W zależności od typu środowiska, które usługa trwałości została zaprojektowana do obsługi, możesz wybrać, czy chcesz obsługiwać tę funkcję. Jeśli zdecydujesz się obsługiwać semantyka blokowania środowiska uruchomieniowego, a jeśli ten stan wystąpienia przepływu pracy został wcześniej zablokowany przez inny proces, należy zgłosić wyjątek WorkflowOwnershipException. W przeciwnym razie należy zablokować dostęp do stanu wystąpienia przepływu pracy w magazynie danych. Stan wystąpienia przepływu pracy można odblokować za pomocą wywołania metody UnlockWorkflowInstanceState lub wywołania polecenia SaveWorkflowInstanceState z parametrem odblokowania ustawionym na truewartość .

Dotyczy