これはばかげたことのように思えるかもしれませんが、並行アクティビティの最終分岐であるため、明確にします。これは、それぞれが単純な作成タスク、変更されたタスク、完了したタスクを含む 3 つのブランチを持つ並列アクティビティです。最後に完了したタスクを含むブランチが壊れているようです。したがって、すべてのタスクはそれ自体で機能しますが、最後のタスクで問題が発生します。
ユーザーが最終タスクのリンクをクリックして、添付された infopath フォームを開き、それを送信したとします。実行は、その onTaskChanged のイベント ハンドラーに到達します。ここで、taskCompleted 変数が true に設定され、while ループが終了します。この行でブレークポイントにヒットしたので、それが起こることがわかりました。ただし、そのブランチの最後のアクティビティである completeTask はヒットしません。
最終フォームで [送信] をクリックすると、操作が進行中の画面で、ワークフロー ステータス ページに戻る前にかなりの時間が表示されます。開いて送信したタスクに「未開始」と表示されます。
いずれかのブランチを無効にして 2 つだけにすることはできますが、最後に完了するブランチでも同じ問題が発生します。ワークフローの早い段階で、基本的に同じことを行います。各ブランチにタスクが含まれる別の 3 つのブランチの並列アクティビティがあります。これは正しく機能するため、同じシーケンシャル ワークフローで 2 つの並列アクティビティを使用すると問題が発生する可能性があると思われます。
相関トークンの問題である可能性を考慮しました。すべてのタスク ブランチが使用するトークンは、そのブランチに固有のものであり、その所有者のアクティビティ名は、ブランチのものと一致します。タスク完了変数が実際に true に設定されているが、while ループが終了していない場合は、どこかで変数と交差するワイヤがあるのは当然のことです。ただし、ワークフロー ステータス ページに戻ったタスク ステータスは、少なくともタスクが進行中であることを示していると思っていました。
これは、私にとってイライラするバグのショーストッパーです。私がそれらを調査できるように、どんな考えや提案も大いに役に立ちます。