如何处理并行活动中的失败

本文关键字:并行 活动中 失败 处理 何处理 | 更新日期: 2023-09-27 18:11:54

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

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

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

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

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

如何处理并行活动中的失败

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

您已经在Parallel活动上可用CompletionCondition属性。

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

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

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

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

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