カスタム永続性サービスの作成
永続性サービスを実装すれば、ワークフロー インスタンスの実行時の状態を永続ストアに保存して、そのストアから状態を取得することができます。ワークフロー実行中の特定のコミット ポイントで、Windows Workflow Foundation ランタイム エンジンはワークフローの状態情報を永続化するよう永続性サービスに通知します。これが行われるのは、たとえば、ワークフローがアイドル状態になったとき、TransactionScopeActivity アクティビティの実行が完了したとき、またはホスト アプリケーションが Unload メソッドを呼び出したときです。
Windows Workflow Foundation ランタイム エンジン自体は、状態情報を永続化しません。このような機能は、実行時にエンジンに追加されるカスタム永続性サービスによって提供されます。ランタイム エンジンは永続化の操作を開始し、カスタム永続性サービスは永続化された状態の日付の保存と読み込みを行います。
注意 : |
---|
TransactionScopeActivity アクティビティ、CompensatableTransactionScopeActivity アクティビティ、CompensatableSequenceActivity アクティビティ、あるいは PersistOnCloseAttribute 属性を使用するか ICompensatableActivity インターフェイスを実装するカスタム アクティビティを使用するワークフローの作成時には、使用する永続性サービスを指定する必要があります。そうしない場合、ワークフロー実行時に例外がスローされます。 |
カスタム永続性サービスの作成
カスタム永続性サービスを作成するには、WorkflowPersistenceService 抽象基本クラスから派生させます。独自の永続性サービスを作成するときには、この基本クラスに含まれる 5 つの抽象メソッドをオーバーライドする必要があります。次の表は、これらのメソッドを示しています。
メソッド | 説明 |
---|---|
指定した完了スコープをメモリの中に戻します。 |
|
指定したワークフロー インスタンス状態をメモリの中に戻します。 |
|
指定した完了スコープをデータ ストアに保存します。 |
|
ワークフロー インスタンス状態をデータ ストアに保存します。 |
|
指定したワークフロー インスタンス状態のロックを解除します。 |
|
指定したワークフロー インスタンスが一定期間にわたってアイドル状態になった場合に、そのワークフロー インスタンスをストレージに永続化するかどうかを決定します。 |
カスタム永続性サービスを介してワークフロー インスタンス状態を保存することによって Windows Workflow Foundation エンジンがワークフローをアンロードする方法については、「Custom Persistence Service」のサンプルを参照してください。
ワークフロー状態情報のロック
複数のプロセスで実行される別個の永続性サービスによって 1 つのワークフローが読み込まれることを防ぐために、Windows Workflow Foundation ランタイム エンジンはワークフローの状態情報をロックすることができます。ただし、実際のロック メカニズムはカスタム永続性サービス自体によって実装されます。つまり、独自の永続性サービスを作成するときにこれをサポートするかどうかは任意選択です。ワークフロー状態のロックをサポートする場合には、SaveWorkflowInstanceState 呼び出し時と LoadWorkflowInstanceState 呼び出し時にアンロック パラメータが false に設定されるときに、ワークフロー状態へのアクセスをロックする必要があります。ワークフロー状態情報は、後続の SaveWorkflowInstanceState 呼び出しでアンロック パラメータが true に設定されるか、UnlockWorkflowInstanceState メソッドが呼び出されるときまで、ロックされる必要があります。あるプロセスが、ロックされているワークフロー インスタンス状態を読み込もうと試みた場合は、WorkflowOwnershipException をスローする必要があります。
トランザクションを使用したワークフロー状態情報の永続化
カスタム永続性サービスが永続ストアを使用する場合には、ワークフロー コミット ポイントに到達するまでワークフロー状態情報の書き込みを遅らせるために、ワークフロー トランザクション バッチ処理を使用する必要があります。これを行うには、カスタム永続性サービス クラス内に IPendingWork インターフェイスを実装して、永続ストアの変更保留を表す作業アイテムを WorkBatch プロパティに追加します。
関連項目
参照
概念
その他の技術情報
Custom Persistence Service
Using Persistence Services
Windows Workflow Foundation Service の開発
Copyright © 2007 by Microsoft Corporation.All rights reserved.