SQL ワークフロー インスタンス ストアは、定期的に起動し、永続化データベース内の実行可能またはアクティブ化可能なワークフロー インスタンスを検出する内部タスクを実行します。 実行可能なワークフロー インスタンスが見つかると、インスタンスをアクティブ化できるワークフロー ホストに通知されます。 インスタンス ストアは、アクティブ化可能なワークフロー インスタンスを検出すると、ワークフロー ホストをアクティブ化する汎用ホストに通知し、ワークフロー インスタンスを実行します。 このトピックの以降のセクションでは、インスタンスのアクティブ化プロセスについて詳しく説明します。
実行可能ワークフロー インスタンスの検出とアクティブ化
SQL ワークフロー インスタンス ストアは、インスタンスが中断状態または完了状態でない場合にワークフロー インスタンスを 実行可能 と見なし、次の条件を満たします。
インスタンスはロック解除されており、期限切れの保留中タイマーがあります。
インスタンスに有効期限が切れたロックがあります。
インスタンスのロックが解除され、その状態が 実行中です。
SQL ワークフロー インスタンス ストアでは、実行可能なインスタンスが見つかると、 HasRunnableWorkflowEvent が発生します。 その後、SqlWorkflowInstanceStore は、ストアで TryLoadRunnableWorkflowCommand が 1 回呼び出されるまで監視を停止します。
HasRunnableWorkflowEventをサブスクライブし、インスタンスを読み込み可能なワークフロー ホストは、インスタンス ストアに対してTryLoadRunnableWorkflowCommandを実行してインスタンスをメモリに読み込みます。 ワークフロー ホストとインスタンスにメタデータ プロパティ WorkflowServiceType が同じ値に設定されている場合、ワークフロー ホストはワークフロー インスタンスを読み込むと見なされます。
アクティブ化可能なワークフロー インスタンスの検出とアクティブ化
インスタンスが実行可能であり、インスタンスを読み込み可能なワークフロー ホストがコンピューター上で実行されていない場合、ワークフロー インスタンスは アクティブ化 可能と見なされます。 実行可能ワークフロー インスタンスの定義については、上記の実行可能ワークフロー インスタンスの検出とアクティブ化を参照してください。
SQL ワークフロー インスタンス ストアでは、データベース内でアクティブ化可能なワークフロー インスタンスが見つかると、 HasActivatableWorkflowEvent が発生します。 その後、SqlWorkflowInstanceStore は、ストアで QueryActivatableWorkflowsCommand が 1 回呼び出されるまで監視を停止します。
HasActivatableWorkflowEventをサブスクライブした汎用ホストがイベントを受信すると、インスタンス ストアに対してQueryActivatableWorkflowsCommandが実行され、ワークフロー ホストの作成に必要なアクティブ化パラメーターが取得されます。 汎用ホストは、これらのアクティブ化パラメーターを使用してワークフロー ホストを作成し、実行可能なサービス インスタンスを読み込んで実行します。
汎用ホスト
汎用ホストは、汎用ホストのメタデータ プロパティ WorkflowServiceType の値が WorkflowServiceType.Any に設定され、任意のワークフローの種類を処理できることを示すホストです。 汎用ホストには、 ActivationType という名前の XName パラメーターがあります。
現在、SQL ワークフロー インスタンス ストアでは、ActivationType パラメーターの値が WAS に設定された汎用ホストがサポート されています。 ActivationType が WAS に設定されていない場合、SQL ワークフロー インスタンス ストアは InstancePersistenceExceptionをスローします。 Windows Server AppFabric のホスティング機能に付属するワークフロー管理サービスは、アクティブ化の種類が WAS に設定されている汎用ホスト です。
WAS のアクティベーションのためには、汎用ホストが新しいホストをアクティブ化するエンドポイントアドレスを導き出すために、必要なアクティベーションパラメーターが必要です。 WAS ライセンス認証のアクティブ化パラメーターは、サイトの名前、サイトを基準とするアプリケーションへのパス、およびアプリケーションに対するサービスへのパスです。 SQL ワークフロー インスタンス ストアには、 SaveWorkflowCommandの実行中にこれらのアクティブ化パラメーターが格納されます。
実行可能インスタンスの検出期間
SQL ワークフロー インスタンス ストアの Runnable Instances 検出期間 プロパティは、SQL ワークフロー インスタンス ストアが検出タスクを実行して、前の検出サイクルの後に永続化データベース内の実行可能またはアクティブ化可能なワークフロー インスタンスを検出する期間を指定します。 このプロパティの詳細については、「 実行可能インスタンスの検出期間 」を参照してください。
.NET