WorkflowPersistenceService.LoadWorkflowInstanceState(Guid) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在衍生類別中實作時,將工作流程執行個體的指定狀態載回記憶體中。
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
參數
傳回
Activity,代表工作流程執行個體的根活動。
範例
下列範例示範 LoadWorkflowInstanceState
方法的實作。 這個範例來自 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
加以解除鎖定。