2

これはばかげたことのように思えるかもしれませんが、並行アクティビティの最終分岐であるため、明確にします。これは、それぞれが単純な作成タスク、変更されたタスク、完了したタスクを含む 3 つのブランチを持つ並列アクティビティです。最後に完了したタスクを含むブランチが壊れているようです。したがって、すべてのタスクはそれ自体で機能しますが、最後のタスクで問題が発生します。

ユーザーが最終タスクのリンクをクリックして、添付された infopath フォームを開き、それを送信したとします。実行は、その onTaskChanged のイベント ハンドラーに到達します。ここで、taskCompleted 変数が true に設定され、while ループが終了します。この行でブレークポイントにヒットしたので、それが起こることがわかりました。ただし、そのブランチの最後のアクティビティである completeTask はヒットしません。

最終フォームで [送信] をクリックすると、操作が進行中の画面で、ワークフロー ステータス ページに戻る前にかなりの時間が表示されます。開いて送信したタスクに「未開始」と表示されます。

いずれかのブランチを無効にして 2 つだけにすることはできますが、最後に完了するブランチでも同じ問題が発生します。ワークフローの早い段階で、基本的に同じことを行います。各ブランチにタスクが含まれる別の 3 つのブランチの並列アクティビティがあります。これは正しく機能するため、同じシーケンシャル ワークフローで 2 つの並列アクティビティを使用すると問題が発生する可能性があると思われます

相関トークンの問題である可能性を考慮しました。すべてのタスク ブランチが使用するトークンは、そのブランチに固有のものであり、その所有者のアクティビティ名は、ブランチのものと一致します。タスク完了変数が実際に true に設定されているが、while ループが終了していない場合は、どこかで変数と交差するワイヤがあるのは当然のことです。ただし、ワークフロー ステータス ページに戻ったタスク ステータスは、少なくともタスクが進行中であることを示していると思っていました。

これは、私にとってイライラするバグのショーストッパーです。私がそれらを調査できるように、どんな考えや提案も大いに役に立ちます。

4

1 に答える 1

0

私のワークフロー シナリオは、遅延アクティビティを起動して、タスクの期限が切れた後にタスクをその作成者に再割り当てすることです。私のワークフローには、異なるタスクを異なるユーザーに同時に割り当てる (作成する) ために使用される並列レプリケーターがあります。 listenActivity の右側のブランチには、Delay アクティビティがあり、その後にCompleteTask2アクティビティが続きます。タスクをタスクの作成者に再割り当てするコード アクティビティ。両方の completetasks アクティビティの相関トークンについて確信があります。左側のブランチではすべてが正常に機能しますが、Delay アクティビティを含む右側のブランチでエラーが発生します->Completetask アクティビティ。2 人のユーザーに 2 つのタスクが割り当てられており、タスクを完了するのに 1 時間の猶予があるが、そうではなかったとします。したがって、両方のタスクに対して遅延アクティビティが発生します。その後、ワークフローで最初のタスクは完了しますが、2 番目のタスクは完了します。エラー。

問題は、completetask の taskid プロパティにあると思います。2 番目のタスク ID で更新されないため、完了したタスクを完了しようとします。

于 2010-12-05T11:00:31.023 に答える