WorkflowPersistenceService.SaveCompletedContextActivity(Activity) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
派生クラスとして実装された場合、指定した完了スコープをデータ ストアに保存します。
protected public:
abstract void SaveCompletedContextActivity(System::Workflow::ComponentModel::Activity ^ activity);
protected internal abstract void SaveCompletedContextActivity (System.Workflow.ComponentModel.Activity activity);
abstract member SaveCompletedContextActivity : System.Workflow.ComponentModel.Activity -> unit
Protected Friend MustOverride Sub SaveCompletedContextActivity (activity As Activity)
パラメーター
例
SaveCompletedContextActivity
メソッドの実装例を次に示します。 この例は、FilePersistenceService.cs ファイルに含まれているカスタム永続性サービスのサンプルです。 詳細については、「 カスタム永続化サービスのサンプル」を参照してください。
// Save the completed activity state.
protected override void SaveCompletedContextActivity(Activity activity)
{
Guid contextGuid = (Guid)activity.GetValue(Activity.ActivityContextGuidProperty);
Console.WriteLine("Saving completed activity context: {0}", contextGuid);
SerializeToFile(
WorkflowPersistenceService.GetDefaultSerializedForm(activity), contextGuid);
}
' Save completed activity state
Protected Overrides Sub SaveCompletedContextActivity(ByVal activity As System.Workflow.ComponentModel.Activity)
Dim contextGuid As Guid = CType(activity.GetValue(activity.ActivityContextGuidProperty), Guid)
Console.WriteLine("Saving completed activity context: 0}", contextGuid)
SerializeToFile( _
WorkflowPersistenceService.GetDefaultSerializedForm(activity), contextGuid)
End Sub
注釈
ワークフロー ランタイム エンジンは、補正を実装するために完了スコープのアクティビティの状態を保存します。 オーバーロードされた Save メソッドの 1 つを呼び出して、activity
を Stream にシリアル化する必要があります。その後、Stream を追加処理してからデータ ストアに書き込むこともできます。 ただし、ワークフロー ランタイム エンジンが LoadCompletedContextActivity を呼び出したときは、アクティビティの完全なコピーを復元する必要があります。
完了したスコープを、それが囲まれるワークフロー インスタンスに関連付け、ワークフロー インスタンスが完了または終了したときに、データ ストア内のそのスコープを不要とマークすることが可能である必要があります。 したがって、完了したスコープに関連付けられたワークフロー インスタンスの Guid も保存する必要があります。これは、InstanceId に関連付けられた WorkflowInstance の activity
プロパティから取得できます。
LoadCompletedContextActivity は、完了したスコープの Guid をパラメーターとして受け取ります。 したがって、ContextGuid に関連付けられた activity
プロパティも保存する必要があります。 このプロパティは、ActivityContextGuidProperty の activity
フィールドを通じて参照できます。
永続的ストアを使用する永続性サービスを実装する場合は、ワークフロー ランタイム エンジンの内部状態との整合性を維持するために、ワークフロー トランザクション バッチに参加する必要があります。こうすることで、永続的ストアへの実際の書き込みをワークフロー コミット ポイントに達するまで遅らせます。 バッチに参加するには、データベースに対する保留中の変更を表す WorkBatch プロパティに作業項目を追加し、永続性サービスに IPendingWork インターフェイスを実装します。
完了したスコープをデータ ストアに保存できなかった場合は、適切なエラー メッセージを含めた PersistenceException をスローする必要があります。
適用対象
.NET