Поделиться через


WorkflowPersistenceService.LoadWorkflowInstanceState(Guid) Метод

Определение

При реализации в производном классе загружает заданное состояние экземпляра рабочего процесса обратно в память.

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

Параметры

instanceId
Guid

Guid корневого действия экземпляра рабочего процесса.

Возвращаемое значение

Объект класса Activity, представляющий корневое действие экземпляра рабочего процесса.

Примеры

В следующем примере показана реализация метода LoadWorkflowInstanceState. Данный пример кода является частью примера «Custom Persistence Service» из файла FilePersistenceService.cs. Дополнительные сведения см. в разделе Пример пользовательской службы сохраняемости.

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

Комментарии

Необходимо восстановить идентичную копию действия. Для этого необходимо восстановить допустимый тип Stream из представления экземпляра рабочего процесса в хранилище данных; затем необходимо передать этот тип Stream одному из перегруженных методов Load для десериализации состояния экземпляра рабочего процесса. Если служба постоянного хранения не может загрузить состояние экземпляра рабочего процесса из хранилища данных, необходимо вызвать исключение PersistenceException с помощью соответствующего сообщения.

Подсистема среды выполнения рабочих процессов реализует семантику блокировки для ограничения доступа к состоянию экземпляра рабочего процесса, сохраненного в хранилище данных. К нему можно получить доступ с помощью служб постоянного хранения, выполняемых в нескольких процессах. Семантика блокировки разработана, чтобы предотвратить службы постоянного хранения, выполняемых в двух разных процессах, от одновременной загрузки одного экземпляра рабочего процесса в память. В зависимости от типа среды, для поддержки которой разработана служба постоянного хранения, можно выбрать, поддерживать ли эту функциональную возможность. При выборе поддержки семантики блокировки среды выполнения, если данное состояние экземпляра рабочего процесса было ранее заблокировано другим процессом, необходимо вызвать исключение WorkflowOwnershipException. В противном случае необходимо заблокировать доступ к состоянию экземпляра рабочего процесса в хранилище данных. Состояние экземпляра рабочего процесса может быть разблокировано путем вызова UnlockWorkflowInstanceState или вызова SaveWorkflowInstanceState с параметром разблокировки с заданным значением true.

Применяется к