Share via


SQLStoreExtensibility

このトピックの内容は、Windows Workflow Foundation 4 に該当します。

このサンプルでは、SQL ワークフロー インスタンス ストアの昇格したプロパティの使用法と構成を示します。SQL Workflow Instance Store は、SQL ベースのインスタンス ストアの実装です。SQL Workflow Instance Store を使用すると、インスタンスの状態を SQL Server データベースや SQL Server Express データベースに保存したり読み込んだりすることができます。ストア拡張機能を使用すると、ユーザーは、インスタンス ストアに格納されるプロパティを定義できます。このようなプロパティは、ユーザーがクエリを実行できる昇格したプロパティ ビューに表示されます。

このサンプルは、カウント サービスを実装するワークフローで構成されています。サービスの start メソッドが呼び出されると、0 から 29 までのカウントが行われます。カウンターは 2 秒ごとにインクリメントされ、カウントのたびにワークフローが永続化されます。現在のカウンター値は、昇格したプロパティとしてインスタンス ストアに格納されます。

このカウント ワークフローは、ワークフロー サービス ホストによってホストされる自己ホスト型サービスです。プログラムの Main メソッドは、次のアクションを実行します。

  • カウント ワークフローをホストするワークフロー サービス ホストのインスタンスを作成し、カウント ワークフローにアクセスできるエンドポイントを定義します。

  • SQL Workflow Instance Store を構成するために使用される SQL Workflow Instance Store の動作を定義します。このストアは、CountStatus を昇格したプロパティとして扱うように指示されます。

  • カウント ワークフローの start メソッドを呼び出すクライアントを作成します。

プログラムを開始すると、カウンターが自動的にカウントを開始します。インスタンスを読み込んで SQL Workflow Instance Store を構成するのに数秒かかる場合もあります。

カウンター値をカスタム プロパティとして昇格するには、次の手順を実行する必要があります。

  1. CounterStatus クラスで、状態変数を提供するアクティビティによって使用される、PersistenceParticipant 型を持つインスタンス拡張機能が定義されます。Count は、書き込み専用の値として定義されます。ワークフロー インスタンスが永続性ポイントに達すると、インスタンス拡張機能によって、Count プロパティが永続性データ コレクションに保存されます。

  2. インスタンス ストアの作成時に、新しいプロパティ CountStatusstore.Promote() を使用して定義されます。

  3. ワークフローの SaveCounter アクティビティによって、現在のカウンター値が Count 状態フィールドに代入されます。

このサンプルを使用するには

  1. インスタンス ストア データベースを作成します。

    1. Visual Studio 2010 コマンド プロンプトを開きます。

    2. Visual Studio 2010 コマンド プロンプトでサンプル ディレクトリ (\WF\Basic\Persistence\SqlStoreExtensibility\CS) に移動して、CreateInstanceStore.cmd を実行します。

      Ee622979.Warning(ja-jp,VS.100).gif 注意 :
      CreateInstanceStore.cmd スクリプトは、SQL Server 2008 Express の既定のインスタンスにデータベースを作成しようとします。別のインスタンスにデータベースをインストールする場合は、そのようにスクリプトを変更してください。

  2. Visual Studio 2010 を開いて SqlStoreExtensibility.sln ソリューションを読み込み、F6 キーを押してビルドします。

    Ee622979.Warning(ja-jp,VS.100).gif 注意 :
    SQL Server の既定以外のインスタンスにデータベースをインストールした場合は、ソリューションをビルドする前に、コードの接続文字列を更新してください。

  3. Windows エクスプローラーでプロジェクトの bin ディレクトリ (\WF\Basic\Persistence\SqlStoreExtensibility\bin\Debug) に移動し、SqlStoreExtensibility.exe を右クリックして [管理者として実行] をクリックすることで、サンプルを管理者権限で実行します。

サンプルが正常に動作していることを確認するには

  1. SQL Server Management Studio を使用して、オブジェクト エクスプローラーで [データベース][InstanceStore][System.ServiceModel.Activities.DurableInstancing.InstanceTable] の順に選択してインスタンス テーブルの内容を表示し、[System.ServiceModel.Activities.DurableInstancing.InstanceTable] を右クリックして [上位 1000 行を選択] をクリックします。SQL Server Management Studio 詳細情報、「SQL Server Management Studio の概要」を参照してください。

  2. 一覧表示されるワークフロー インスタンスを確認します。

  3. Visual Studio 2010 コマンド プロンプトで、サンプル ディレクトリ (\WF\Basic\Persistence\SqlStoreExtensibility) にある QueryInstanceStore.cmd スクリプトを実行します。

  4. CountStatus の下に表示されるカウンター値を確認します。

  5. スクリプトを数回実行して CountStats の値の変化を確認します。

  6. Enter キーを押してワークフロー アプリケーションを終了します。

サンプルをアンインストールするには

  1. サンプル ディレクトリ (\WF\Basic\Persistence\SqlStoreExtensibility) にある RemoveInstanceStore.cmd スクリプトを実行して、インスタンス ストア データベースを削除します。
Ee622979.Important(ja-jp,VS.100).gif 注 :
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。

<InstallDrive>:\WF_WCF_Samples

このディレクトリが存在しない場合は、「.NET Framework 4 向けの Windows Communication Foundation (WCF) および Windows Workflow Foundation (WF) のサンプル」にアクセスして、Windows Communication Foundation (WCF) および WF のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。

<InstallDrive>:\WF_WCF_Samples\WF\Basic\Persistence\SQLStoreExtensibility

参照

概念

ワークフローの永続性

その他のリソース

ワークフロー サービス