ワークフロー アプリケーションの永続化
このトピックの内容は、Windows Workflow Foundation 4 に該当します。
このサンプルでは、WorkflowApplication を実行し、アイドル状態になったときにアンロードしてから、再読み込みしてその実行を継続する方法を示します。
サンプルの詳細
WorkflowApplication は、単純なインターフェイスを提供していくつかのより一般的なホスト シナリオを実現する、単一のワークフロー インスタンスのホストです。このようなシナリオの 1 つに、永続化によって容易になる実行時間の長いワークフローがあります。永続化のホスト コントロールは、WorkflowApplication で永続化操作を呼び出すか、WorkflowApplication イベントを処理して WorkflowApplication が永続化することを示すことで実行されます。
サンプル ワークフローは、ユーザーに名前の入力を求める WriteLine アクティビティ、Bookmark の再開を通じて名前を入力として受け取るための ReadLine
アクティビティ、およびメッセージをユーザーにエコーするためのもう 1 つの WriteLine です。ワークフローが入力を待機しているとき、これは永続化に適したポイントになります。多くの場合、このポイントは Idle ポイントと呼ばれます。ワークフロー プログラムが永続化でき、ブックマーク再開を待機しており、他の処理が実行されていないときは常に、WorkflowApplication は Idle イベントを発生させます。このサンプルのワークフローでは、そのポイントが ReadLine
アクティビティの実行開始直後に発生します。
WorkflowApplication は、InstanceStore を使用して永続化を実行するように設定されています。このサンプルでは、SqlWorkflowInstanceStore を使用しています。InstanceStore は、WorkflowApplication の実行前に InstanceStore プロパティに割り当てる必要があります。
このサンプルでは、PersistableIdle イベントにハンドラーを追加します。このイベントのハンドラーは、PersistableIdleAction を返すことによって WorkflowApplication が行う処理を示します。Unload が返された場合、WorkflowApplication はアンロードされます。
その後、このサンプルはユーザーからの入力を受け入れ、永続化されたワークフローを新しい WorkflowApplication に読み込みます。これを行うには、新しい WorkflowApplication を作成し、InstanceStore を再作成します。次に、完了してアンロードされたイベントをインスタンスに関連付けて、対象のワークフロー インスタンスの識別子を使用して Load を呼び出します。インスタンスが取得されたら、ReadLine
アクティビティのブックマークが再開されます。ワークフローは、ReadLine
アクティビティ内から実行を続け、最後まで実行します。ワークフローが完了してアンロードされると、最後にもう一度 InstanceStore が呼び出され、ワークフローが削除されます。
このサンプルを使用するには
Visual Studio 2010 コマンド プロンプトを開きます。
このサンプルを実行するには、既定で Visual Studio 2010 と共にインストールされる SQL Server Express が必要です。
サンプル ディレクトリ (\WF\Basic\Persistence\InstancePersistence\CS) に移動して、CreateInstanceStore.cmd を実行します。
注意 : CreateInstanceStore.cmd スクリプトは、SQL Server 2008 Express の既定のインスタンスにデータベースを作成しようとします。別のインスタンスにデータベースをインストールする場合は、そのようにスクリプトを変更してください。 Visual Studio 2010 を使用して Persistence.sln ソリューション ファイルを開き、F6 キーを押してビルドします。
注意 : SQL Server の既定以外のインスタンスにデータベースをインストールした場合は、ソリューションをビルドする前に、コードの接続文字列を更新してください。 Windows エクスプローラーでプロジェクトの bin ディレクトリ (\WF\Basic\Persistence\InstancePersistence\bin\Debug) に移動し、Workflow.exe を右クリックして [管理者として実行] をクリックすることで、サンプルを管理者権限で実行します。
インスタンス ストア データベースを削除するには
Visual Studio 2010 コマンド プロンプトを開きます。
サンプル ディレクトリに移動して RemoveInstanceStore.cmd を実行します。
注 : |
---|
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。
<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
|