2

私はWorkflowFoundation4または4.5を評価していますが、サーバーの再起動時にインスタンスストアから複数のワークフロー定義を使用して実行可能なインスタンスをロードする方法を知りたいですか?</ p>

フォーラムのトピックと同じ質問です:http ://social.msdn.microsoft.com/Forums/en-US/wfprerelease/thread/b8d5ed34-054a-4e55-88e1-cd430ac42110?prof = required

「InstanceStore.WaitForEventsを使用する場合、インスタンスの準備ができているとHasRunnableWorkflowEventイベントが発生します。また、WorkflowApplication.LoadRunnableInstance()を呼び出すには、新しいワークフローアプリケーションを作成する必要があります。適切なワークフロー定義が必要です。ワークフローの実装は1つだけです。ただし、同じInstanceStoreに関連付けられたワークフローのタイプが複数あり、HasRunnableWorkflowEventには、LoadRunnableInstance()によってロードされる準備完了インスタンスに関する他の情報がないため、わかりません。新しいWorkflowApplication用に作成する必要のあるインスタンスのタイプ。」

しかし、答えは次のことを示唆しています。

唯一の方法は、WorkflowApplicationでホストするときに、ワークフロー定義ごとに個別のインスタンスストアを用意することです。

私は何か見落としてますか?

4

1 に答える 1

2

1つのストアに複数の種類のワークフロー定義を含めることができますが、ワークフローの開始に使用したワークフロー定義を追跡する必要があります。どちらがあなたの問題です。私の現在のプロジェクトでは、以下を使用してこれを解決しました。

WorkflowApplicationクラスのラッパークラスを使用し、これを使用してワークフローを開始します。このラッパーでは、実際にワークフローを開始する前に、データベースのテーブルにWorkflowInstanceレコードを書き込みます。このテーブルには、間もなく実行されるeorkflowの定義が格納されます。他の情報とは別に、WorkflowApplicationオブジェクトによって生成されたIDである「persisted-id」の列もあります。ワークフローを開始するときにこのIDがわからないため、この列は空のままにします。実行中のワークフローインスタンスが永続化されている場合(WorkflowApplicationオブジェクトでイベントを処理することで通知できます)、WorkflowApplicationオブジェクトによって生成されたIDを取得できます。ワークフローインスタンスをpersisted-idで更新し、サーバーの再起動時にワークフローを再ロードする場合は、

お役に立てれば。ここでは魅力のように機能します。

于 2012-09-05T18:23:58.047 に答える