Windows工作流 - TerminateActivity导致工作流程出错?

问题描述:

我正在处理FaultActivityHandler中的异常,最后我希望结束工作流程。为此,我在故障处理程序中添加了TerminateActivity。看起来这会导致工作流程出错。有没有更好的方法来做到这一点?我可以使用if-else来检查错误标志,但最终会产生很多嵌套的if-else,其中右侧什么都不做,只是跳到工作流的末尾。Windows工作流 - TerminateActivity导致工作流程出错?

我错过了一个显而易见的方式来优雅地结束工作流程或应该当我因为异常而结束它时,它会发生故障吗?

我认为最简单的方法是添加ThrowActivity和一些自定义异常,并在工作流级别捕获该自定义异常。这样工作流程将正常结束,但所有其他活动都会被跳过。

+0

我想我不是在想WF的方式。在我看来,工作流中的终点是处理这种情况的自然方式,而不是抛出异常(其中后者在我的开发系统上非常非常慢)。 – Brian 2009-11-03 19:07:15

+0

这就是为什么在不需要时不要抛出异常的原因。但是,如果出现意想不到的问题,并且您想要停止处理,那就是要走的路。在常规代码中,这是没有什么不同的,否则你会在你的代码中增加很多额外的测试。 – Maurice 2009-11-04 08:54:13

+0

在我看来,一个简单的端点会更合适。我已经发现了异常并处理了它,但工作流程现在需要结束。嵌套if-else语句似乎是一种很糟糕的方法,就像再次抛出异常一样。 – Brian 2009-11-13 20:00:22