2011年4月25日月曜日

SQL Server で永続化を行った際のデータ

前回の記事で SqlWorkflowInstanceStore クラスを利用し SQL Server 上に永続化を行う方法を扱いました。その際にどのようにデータが記録されているのかは次のようになります。

永続化1

テスト用にこのようなワークフローを用意しました。最初に適当な値を入力させ、Delay アクティビティで少し待機、その後値を表示させるというサンプル以外の何物でもないワークフローです。まず、値を入力させる段階ではアイドル状態にさせるようにはコーディングしていませんので、入力せずに放置していても何も値は記録されません。何かしらの値を入力し、Delayアクティビティに遷移した際に初めて SQL Server に記録されます。

永続化2

ワークフローがアイドル状態になった際に、上記のような結果となります。InstanceTable と LockOwnersTable にデータが記録されているのがわかると思います。InstanceTable には現在実行中のワークフローの情報が、LockOwnersTable にはワークフローの実行者(実行している環境)の情報が記録され、あるワークフローがどこで実行されているかを把握する事ができます。

永続化3

Delay アクティビティが終了し値の表示が終わり、ワークフロー自体が終了した場合には次のようになります。InstanceTable から値が削除され実行中ワークフロー情報がなくなります。もう一つの LockOwnersTable には情報が残りますが、これは次に何かしらのワークフローを実行した際にも利用されるデータとなっています。毎回データを新規生成する無駄が省かれている形です。

このような形でワークフローの永続化時にデータの保持が行われます。前回の記事で書いた事以外にはコード上での対応はありません。いかに簡単に永続化が行う事ができるかがわかると思います。

0 件のコメント:

コメントを投稿