永続性データベース スキーマ
このトピックでは、SQL Workflow Instance Store でサポートされるパブリック ビューについて説明します。
Instances ビュー
Instances ビューには、データベースのすべてのワークフロー インスタンスに関する一般的な情報が格納されます。
列名 | 列の型 | 説明 |
---|---|---|
InstanceId | UniqueIdentifier | ワークフロー インスタンスの ID。 |
PendingTimer | DateTime | ワークフローが Delay アクティビティでブロックされていて、タイマーが時間切れになってから再開されることを示します。 タイマーが時間切れになるまで待機するようにワークフローがブロックされていない場合は null になります。 |
CreationTime | DateTime | ワークフローが作成された日時を示します。 |
LastUpdatedTime | DateTime | ワークフローがデータベースに最後に永続化された日時を示します。 |
ServiceDeploymentId | BigInt | [ServiceDeployments] ビューに対する外部キーとして機能します。 現在のワークフロー インスタンスが Web ホスト型サービスのインスタンスの場合、この列に値が設定されます。それ以外の場合は NULL に設定されます。 |
SuspensionExceptionName | Nvarchar(450) | ワークフローの中断の原因となった例外の種類 (InvalidOperationException など) を示します。 |
SuspensionReason | Nvarchar(max) | ワークフロー インスタンスが中断された理由を示します。 例外が原因でインスタンスが中断された場合は、例外に関連付けられているメッセージが格納されます。 手動でインスタンスが中断された場合は、ユーザーが指定したインスタンスの中断理由が格納されます。 |
ActiveBookmarks | Nvarchar(max) | ワークフロー インスタンスがアイドル状態の場合、このプロパティはインスタンスがブロックされているブックマークを示します。 インスタンスがアイドル状態でない場合は、この列は NULL になります。 |
CurrentMachine | Nvarchar(128) | ワークフロー インスタンスを現在メモリに読み込んでいるコンピューターの名前を示します。 |
LastMachine | Nvarchar(450) | ワークフロー インスタンスを最後に読み込んだコンピューターを示します。 |
ExecutionStatus | Nvarchar(450) | ワークフローの現在の実行状態を示します。 状態には、Executing、Idle、Closed などがあります。 |
IsInitialized | ビット | ワークフロー インスタンスが初期化されているかどうかを示します。 初期化されたワークフロー インスタンスとは、少なくとも 1 回は永続化されているワークフロー インスタンスのことです。 |
IsSuspended | ビット | ワークフロー インスタンスが中断されているかどうかを示します。 |
IsCompleted | ビット | ワークフロー インスタンスの実行が完了しているかどうかを示します。 注:InstanceCompletionAction プロパティが DeleteAll に設定されている場合、インスタンスは完了時にビューか削除されます。 |
EncodingOption | TinyInt | データ プロパティのシリアル化に使用されるエンコーディングを示します。 - 0 – エンコードなし - 1 – GzipStream |
ReadWritePrimitiveDataProperties | Varbinary(max) | インスタンスが読み込まれるときにワークフロー ランタイムに戻される、シリアル化されたインスタンスのデータ プロパティが格納されます。 プリミティブ型の各プロパティはネイティブな CLR 型です。つまり、BLOB を逆シリアル化するときに特別なアセンブリは必要ありません。 |
WriteOnlyPrimitiveDataProperties | Varbinary(max) | インスタンスが読み込まれるときにワークフロー ランタイムに戻されない、シリアル化されたインスタンスのデータ プロパティが格納されます。 プリミティブ型の各プロパティはネイティブな CLR 型です。つまり、BLOB を逆シリアル化するときに特別なアセンブリは必要ありません。 |
ReadWriteComplexDataProperties | Varbinary(max) | インスタンスが読み込まれるときにワークフロー ランタイムに戻される、シリアル化されたインスタンスのデータ プロパティが格納されます。 デシリアライザーで、この BLOB に格納されているすべてのオブジェクト型を認識している必要があります。 |
WriteOnlyComplexDataProperties | Varbinary(max) | インスタンスが読み込まれるときにワークフロー ランタイムに戻されない、シリアル化されたインスタンスのデータ プロパティが格納されます。 デシリアライザーで、この BLOB に格納されているすべてのオブジェクト型を認識している必要があります。 |
IdentityName | Nvarchar(max) | ワークフロー定義の名前。 |
IdentityPackage | Nvarchar(max) | ワークフローが作成されたときに指定されたパッケージの情報 (アセンブリ名など)。 |
ビルド | BigInt | ワークフロー バージョンのビルド番号。 |
メジャー | BigInt | ワークフロー バージョンのメジャー番号。 |
Minor | BigInt | ワークフロー バージョンのマイナー番号。 |
リビジョン | BigInt | ワークフロー バージョンのリビジョン番号。 |
注意事項
Instances ビューには、Delete トリガーも含まれています。 適切な権限を持つユーザーは、このビューに対して delete ステートメントを実行して、データベースからワークフロー インスタンスを強制的に削除することができます。 ただし、ワークフロー ランタイムからインスタンスを削除すると意図しない結果を引き起こすことがあるため、ビューから直接削除する方法は最後の手段としてのみ使用することをお勧めします。 代わりに、ワークフロー インスタンス管理エンドポイントを使用して、ワークフロー ランタイムでインスタンスを終了するようにしてください。 ビューから多数のインスタンスを削除する場合は、それらのインスタンスで稼動しているアクティブなランタイムがないことを確認してください。
ServiceDeployments ビュー
ServiceDeployments ビューには、Web (IIS/WAS) ホスト型のすべてのワークフロー サービスの配置情報が格納されます。 Web ホスト型の各ワークフロー インスタンスに、このビューの行を参照する ServiceDeploymentId が格納されます。
列名 | 列の型 | 説明 |
---|---|---|
ServiceDeploymentId | BigInt | このビューの主キー。 |
SiteName | Nvarchar(max) | ワークフロー サービスを含むサイト名を表します (例: 既定の Web サイト)。 |
RelativeServicePath | Nvarchar(max) | ワークフロー サービスの仮想パスを、サイトを基準とした相対パスで表します (例: /app1/PurchaseOrderService.svc)。 |
RelativeApplicationPath | Nvarchar(max) | ワークフロー サービスを含むアプリケーションの仮想パスを、サイトを基準とした相対パスで表します (例: /app1)。 |
ServiceName | Nvarchar(max) | ワークフロー サービスの名前を表します (例: PurchaseOrderService)。 |
ServiceNamespace | Nvarchar(max) | ワークフロー サービスの名前空間を表します (例: MyCompany)。 |
ServiceDeployments ビューには、Delete トリガーも含まれています。 適切な権限を持つユーザーは、このビューに対して delete ステートメントを実行して、データベースから ServiceDeployment のエントリを削除することができます。 以下の点に注意してください。
このビューからエントリを削除するときは、実行前にデータベース全体をロックしなければならないため、この操作は高コストです。 これは、存在しない ServiceDeployment のエントリをワークフロー インスタンスが参照しないようにするために必要です。 このビューからの削除は、ダウンタイムか保守時間帯のみに行うようにしてください。
Instances ビューのエントリによって参照されている ServiceDeployment 行を削除しようとすると、no-op になります。 削除できるのは、参照がない ServiceDeployment 行だけです。
InstancePromotedProperties ビュー
InstancePromotedProperties ビューには、ユーザーが指定したすべての昇格されたプロパティの情報が格納されます。 昇格されたプロパティはファーストクラスのプロパティとして機能します。ユーザーは、このプロパティをクエリで使用してインスタンスを取得できます。 たとえば、注文のコストを常に Value1 列に格納する PurchaseOrder 昇格を追加できます。 これにより、コストが特定の値を超えるすべての購買発注書を照会することができます。
列の型 | 列の型 | 説明 |
---|---|---|
InstanceId | UniqueIdentifier | ワークフロー インスタンスの ID。 |
EncodingOption | TinyInt | 昇格されたバイナリ プロパティのシリアル化に使用されるエンコーディングを示します。 - 0 – エンコードなし - 1 – GZipStream |
PromotionName | Nvarchar(400) | このインスタンスに関連付けられた昇格の名前。 PromotionName は、この行の汎用的な列にコンテキストを追加するために必要です。 たとえば、PromotionName が PurchaseOrder の場合、Value1 に注文のコスト、Value2 に注文を行った顧客の名前、Value 3 に顧客の住所のように格納されることを示します。 |
Value[1-32] | SqlVariant | Value[1-32] には、SqlVariant 列に格納できる値が格納されます。 1 つの昇格に 32 を超える SqlVariant を格納することはできません。 |
Value[33-64] | Varbinary(max) | Value[33-64] には、シリアル化された値が格納されます。たとえば、Value33 に購入品目の JPEG を格納することができます。 1 つの昇格に 32 を超えるバイナリ プロパティを格納することはできません。 |
InstancePromotedProperties ビューはスキーマ バインドであるため、このビューに対するクエリを最適化するために、1 つまたは複数の列にインデックスを追加することができます。
注意
インデックス付きビューを使用する場合、必要なストレージが多くなり、処理のオーバーヘッドが増加します。 詳細については、「SQL Server 2008 のインデックス付きビューを使用したパフォーマンスの向上」を参照してください。
.NET