並列アクティビティを含む Windows Workflow Foundation ワークフローがあります。この並列アクティビティ内には、非常に長い時間がかかる一連のアクティビティがあります (シーケンスとシーケンス内のアクティビティの両方)。
これらのアクティビティは NativeActivity から派生し、ブックマークと System.Threading.Tasks.Task を使用して作業を実行します。
通常、それらを並行して実行すると問題なく動作します。
ここで、並列ブランチ全体のいくつかの場所に Persist アクティビティを追加したいと思います。
2 つの並列ブランチ A、B があり、アクティビティ 1,2 が A にあり、アクティビティ 3,4 が B にあるとします。
アスタリスク記号は、何かが実行中であることを示しています。
| Branch A | Branch B |
|##############|##############|
| Activity 1 | Activity 3 |
| | PERSIST |
| *Activity 2* | Activity 4 |
| PERSIST | |
| Activity 5 | *Activity 6* |
A は 1 をクローズし、2 を実行していますが、まだ永続化されていません。B は 3 を閉じ、持続し、4 を閉じ、現在 6 を実行しています。サーバーが停止します。
サーバーを再起動して WF インスタンスを再開すると、ブランチ A が再び 1 から始まり、ブランチ B が 4 から始まることを確認したいと思います。
| Branch A | Branch B |
|##############|##############|
| *Activity 1* | Activity 3 |
| | PERSIST |
| Activity 2 | *Activity 4* |
| PERSIST | |
| Activity 5 | Activity 6 |
つまり、私が見たい動作は、並列ブランチのそれぞれについて、それが存在するブランチにのみ永続化を適用する必要があるということです。
ワークフロー全体が持続していると思うので、これがどのように機能するかではないと思いますが、間違っていることを証明したいと思います! それで、私はこの動作を達成できますか?