0

並列アクティビティを含む 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  |

つまり、私が見たい動作は、並列ブランチのそれぞれについて、それが存在するブランチにのみ永続化を適用する必要があるということです。

ワークフロー全体が持続していると思うので、これがどのように機能するかではないと思いますが、間違っていることを証明したいと思います! それで、私はこの動作を達成できますか?

4

1 に答える 1

0

あなたの基本的な前提は間違っています.....ワークフローはタスクの1つだけを処理し、2と6を処理することはできません。タスク2が完了するまで6を処理せず、そのブランチはアイドル状態になります(持続ポイントで) )。

したがって、ワークフロー全体が永続化されるという事実は問題ではありません。

于 2014-06-06T16:01:18.840 に答える