2013-05-03 45 views
0

我在Windows Workflow Foundation中有一个工作流程。我创建了一个并行组,我已经放置了四个活动,它们扩展了NativeActivity如何处理并行活动中的故障

的活动调用远程网络服务,如果有什么不顺心的呼叫(也许业务规则),我通过在NativeActivityContext创建书签暂停活动。如果多个活动中的一个失败,这是不太好的,因为它们使用相同的书签名称(SuspendBookmark)。

是否有可能以某种方式扩展并行行为,并且可能在这里处理失败而不是并行调用中的每个活动?

另一件事,如果一个活动成功和另一个失败,如果我从失败的活动中的暂停书签恢复,会发生什么?它会再次在并行调用中运行每个活动,还是会重新运行失败的活动?

我需要一些关于如何在我的工作流程中实现这些并行调用以及如何处理这些并行调用的信息。

回答

1

如果我很好地理解你,你想要取消并行活动,如果它的任何分支出错。这样只有一个书签被创建,你可以继续。

您可用的CompletionConditionParallel活动。

如果此属性的计算结果为true,则分支集合中的其他预定元素 将被取消。如果未设置此属性,则 分支集合中的所有活动对象执行到 完成。

只需在并行活动级别创建一个bool变量,并在出现问题时将其设置为true

如果这种方式无法按照您的方式工作,则无法阻止您创建自己的自定义平行活动。 PS:请记住,并行活动并不是真正平行的。它并行等待所有分支执行,但执行本身是顺序的(尽管顺序无关)。

0

如果您将活动视为两种不同类型(课程),也许会有所帮助。一种是单一的独立活动,可能会失败或成功并拥有自己的书签。第二类活动是“复合”活动。这是一组活动,也可能失败或成功,也可能拥有自己的书签。