0

Windows Workflow Foundationにワークフローがあります。NativeActivityを拡張する 4 つのアクティビティを配置したParallelグループを作成しました。

アクティビティはリモート Web サービスを呼び出しており、呼び出しで何か問題が発生した場合 (おそらくビジネス ルール)、NativeActivityContextにBookmarkを作成してアクティビティを一時停止します。同じブックマーク名 (SuspendBookmark) を使用しているため、複数のアクティビティが失敗した場合、これはあまりうまくいきません。

何らかの方法で並列動作を拡張し、並列呼び出し内の各アクティビティの代わりにここで失敗を処理することは可能ですか?

また、あるアクティビティが成功し、別のアクティビティが失敗した場合、失敗したアクティビティの中断されたブックマークから再開するとどうなりますか? 並列呼び出しで各アクティビティを再度実行するか、失敗したアクティビティを再実行するだけですか?

これらの並列呼び出しをワークフローに実装する方法と、これらの失敗を処理する方法に関する情報が必要です。

4

2 に答える 2

1

私があなたをよく理解していれば、ブランチのいずれかがうまくいかない場合は、並列アクティビティをキャンセルしたいと考えています。そうすれば、ブックマークが 1 つだけ作成され、それを再開できます。

アクティビティでCompletionConditionプロパティを使用できますParallel

このプロパティが true と評価された場合、Branches コレクション内の他のスケジュールされた要素はキャンセルされます。このプロパティが設定されていない場合、Branches コレクション内のすべての Activity オブジェクトは完了するまで実行されます。

bool並列アクティビティ レベルで変数を作成し、true問題が発生するたびに設定するだけです。

それが思い通りにいかない場合、独自のカスタム並列アクティビティを作成することを妨げるものは何もありません。

PS: 並列アクティビティは実際には並列ではないことに注意してください。すべての分岐が実行されるのを並行して待機しますが、実行自体は順次実行されます (順序に依存しません)。

于 2013-05-03T14:01:49.530 に答える
0

活動を 2 つの異なる種類 (クラス) として考えると、役立つかもしれません。1 つは、失敗することも成功することもあり、独自のブックマークを持つ単一の独立したアクティビティです。2 番目のタイプのアクティビティは「複合」アクティビティです。これは、失敗することも成功することもあり、独自のブックマークを持つ可能性があるアクティビティのコレクションです。

于 2013-05-03T13:21:25.160 に答える