単一のワークフロー定義 (xamlx) と永続化のための SqlInstanceStore を使用して、IIS で実行されている WF4 プロジェクトを考えてみましょう。xamlx を直接ホストする代わりに、顧客ごとに個別のエンドポイントで専用の WorkflowServiceHost をスピンアップする WorkflowServiceHostFactory をホストします。
ワークフロー定義の新しいバージョンが必要になるまで、これはしばらくの間正常に動作していました。ワークフロー サービスとのすべての対話は、必要なバージョンを識別するのに十分なほどスマートなビジネス ロジックでラップされているため、この自作のバージョン管理は、新しく開始されたワークフロー (Flow.xamlx と Flow1.xamlx の両方) に対して適切に機能します。
ただし、この変更の前に開始されたワークフローは再アクティブ化に失敗します (ポストでサービスホストが UnknownMessageReceived 例外をスローします)。WF はワークフローを再アクティブ化できない理由 (間違ったバージョン、インスタンスが見つからない、ロックなど) を説明する際に過度に冗長ではないため、SQL プロファイラーをデータベースにアタッチしました。
WorkflowServiceHost がクエリで使用する「WorkflowServiceType」が、保存されているインスタンスの WorkflowServiceType とは異なることが判明しました。おそらくこれが、永続化されたインスタンスの検出に失敗する理由です。
私は同じ xamlx をインスタンス化していると確信しているので、この値がどこから来ているのか理解できません。この Guid の計算に使用されるパラメーター、環境 (サイト名) は重要ですか、ワークフローを再アクティブ化するにはどうすればよいですか?