次の方法で共有


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 メソッドの実装例を次に示します。 この例は、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 メソッドの 1 つに、この Load を渡してワークフロー インスタンス状態を逆シリアル化する必要があります。 永続性サービスは、データ ストアからワークフロー インスタンス状態を読み込めなかった場合に、適切なメッセージを含めた PersistenceException をスローする必要があります。

ワークフロー ランタイム エンジンは、データ ストアに保存されたワークフロー インスタンス状態へのアクセスを制限するためのロック セマンティクスを実装しています。 これは、複数のプロセスで実行される永続性サービスによって利用されます。 ロック セマンティクスは、2 つの異なるプロセスで実行される永続性サービスが同時に同じワークフロー インスタンスをメモリに読み込むことがないようにするためのものです。 永続性サービスがサポートする目的の環境のタイプに応じて、この機能をサポートするかどうかを選択できます。 ランタイム ロック セマンティクスをサポートすることを選択した場合は、そのワークフロー インスタンス状態が既に別のプロセスによってロックされているときに、WorkflowOwnershipException をスローする必要があります。 その他の場合は、データ ストア内のワークフロー インスタンス状態へのアクセスをロックする必要があります。 ワークフロー インスタンス状態のロックを解除するには、UnlockWorkflowInstanceState を呼び出すか、ロック解除パラメーターを SaveWorkflowInstanceState に設定して true を呼び出します。

適用対象