Share via


ワークフロー アプリケーションの永続化

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

このサンプルでは、WorkflowApplication を実行し、アイドル状態になったときにアンロードしてから、再読み込みしてその実行を継続する方法を示します。

サンプルの詳細

WorkflowApplication は、単純なインターフェイスを提供していくつかのより一般的なホスト シナリオを実現する、単一のワークフロー インスタンスのホストです。このようなシナリオの 1 つに、永続化によって容易になる実行時間の長いワークフローがあります。永続化のホスト コントロールは、WorkflowApplication で永続化操作を呼び出すか、WorkflowApplication イベントを処理して WorkflowApplication が永続化することを示すことで実行されます。

サンプル ワークフローは、ユーザーに名前の入力を求める WriteLine アクティビティ、Bookmark の再開を通じて名前を入力として受け取るための ReadLine アクティビティ、およびメッセージをユーザーにエコーするためのもう 1 つの WriteLine です。ワークフローが入力を待機しているとき、これは永続化に適したポイントになります。多くの場合、このポイントは Idle ポイントと呼ばれます。ワークフロー プログラムが永続化でき、ブックマーク再開を待機しており、他の処理が実行されていないときは常に、WorkflowApplicationIdle イベントを発生させます。このサンプルのワークフローでは、そのポイントが ReadLine アクティビティの実行開始直後に発生します。

WorkflowApplication は、InstanceStore を使用して永続化を実行するように設定されています。このサンプルでは、SqlWorkflowInstanceStore を使用しています。InstanceStore は、WorkflowApplication の実行前に InstanceStore プロパティに割り当てる必要があります。

このサンプルでは、PersistableIdle イベントにハンドラーを追加します。このイベントのハンドラーは、PersistableIdleAction を返すことによって WorkflowApplication が行う処理を示します。Unload が返された場合、WorkflowApplication はアンロードされます。

その後、このサンプルはユーザーからの入力を受け入れ、永続化されたワークフローを新しい WorkflowApplication に読み込みます。これを行うには、新しい WorkflowApplication を作成し、InstanceStore を再作成します。次に、完了してアンロードされたイベントをインスタンスに関連付けて、対象のワークフロー インスタンスの識別子を使用して Load を呼び出します。インスタンスが取得されたら、ReadLine アクティビティのブックマークが再開されます。ワークフローは、ReadLine アクティビティ内から実行を続け、最後まで実行します。ワークフローが完了してアンロードされると、最後にもう一度 InstanceStore が呼び出され、ワークフローが削除されます。

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

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

    このサンプルを実行するには、既定で Visual Studio 2010 と共にインストールされる SQL Server Express が必要です。

  2. サンプル ディレクトリ (\WF\Basic\Persistence\InstancePersistence\CS) に移動して、CreateInstanceStore.cmd を実行します。

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

  3. Visual Studio 2010 を使用して Persistence.sln ソリューション ファイルを開き、F6 キーを押してビルドします。

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

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

インスタンス ストア データベースを削除するには

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

  2. サンプル ディレクトリに移動して RemoveInstanceStore.cmd を実行します。

Dd807516.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\InstancePersistence