0

我在Windows Workflow Foundation中有一个工作流。我创建了一个Parallel组,我在其中放置了四个扩展NativeActivity的活动。

这些活动正在调用远程 Web 服务,如果调用中出现任何问题(可能是业务规则),我会通过在NativeActivityContext上创建一个书签来暂停活动。这不是很好,如果超过一个活动失败,因为它们使用相同的书签名称(SuspendBookmark)。

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

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

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

4

2 回答 2

1

如果我理解你,如果它的任何分支出错,你想取消并行活动。这样只会创建一个书签,您可以恢复它。

您可以在活动中使用CompletionCondition属性。Parallel

如果此属性的计算结果为 true,则取消 Branches 集合中的其他计划元素。如果未设置此属性,则 Branches 集合中的所有 Activity 对象都会执行直到完成。

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

如果这不能按您想要的方式工作,那么没有什么可以阻止您创建自己的自定义并行活动。

PS:请记住,并行活动并不是真正的并行。它并行等待所有分支执行,但执行本身是顺序的(尽管与顺序无关)。

于 2013-05-03T14:01:49.530 回答
0

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

于 2013-05-03T13:21:25.160 回答