背景: 私はWF 4.0を使用しています。私のWebアプリケーションとワークフローはファーム(4台のマシン)上で実行されています。 Webアプリケーションからワークフローへのすべての参照は、 "http:// localhost/.."を使用します。InstanceLockedException:WF 4.0でのロックの問題を処理する方法?
シナリオ: ServerAは新しいワークフローを作成し、Receive Activitiesがブランチとして含まれるPickアクティビティに到達すると処理を完了します。このワークフローはSQL Server 2005を使用して1つのデータベースに保持されます。 Pickアクティビティの直前に、アプリケーション固有のフラグがデータベースに設定され、ワークフローが次のリクエストを待機する準備ができていることを示します。ワークフロー永続性データベースにブックマークが作成されます。 ServerBは、相関を使用して既存のワークフローを再開し、次のPickアクティビティに到達するまで処理を続けます。そして、これからも。
上記のシナリオは、「アプリケーション固有のフラグ」が設定された直後にServerBがワークフローを再開しようとする場合を除いて、ほとんどの場合うまく機能します。このフラグは、次の操作を続行できることをユーザーに通知するためのカスタムアクションです。 しかし、ほとんどの場合、これはInstanceLockedExceptionで失敗します。サーバーはいくつかの試行があったことを示し、RedirectionExceptionという別の例外がスローされる前に別のサーバーにリダイレクトしようとします。
現在、私のWCFの構成は次のように設定されます...私はAgressiveRetryを使用したり、更新し、検出期間を変更する必要があるかどうかわからないんだけど
<sqlWorkflowInstanceStore connectionString="[conn str]"
instanceEncodingOption="None"
instanceCompletionAction="DeleteNothing"
instanceLockedExceptionAction="BasicRetry"
hostLockRenewalPeriod="00:00:30"
runnableInstancesDetectionPeriod="00:00:05" />
または私は全く違う何かをする必要がある場合。 あなたのご意見は大変ありがとうございます。
Peterありがとう!あなたのソリューションは私の構成で欠けていたものでした。 – Cesar
答えとしてマークすることは自由に感じてください:) –
私は答えとしてそれを投票しようとするたびに、私は15以上の担当者を持つ必要があることを知らせるプロンプトが表示されます。 – Cesar