如何获取引发异常的工作流活动

时间:2017-10-26 12:29:16

标签: .net workflow

如果我从代码运行(XAML)工作流程,例如

var activity = ActivityXamlServices.Load(@"test.xaml");
var workflowApp = new WorkflowApplication(activity);

workflowApp.Completed += eventArgs =>
{
    switch (eventArgs.CompletionState)
    {
        case ActivityInstanceState.Faulted:
            // Something went wrong, but where?
            Console.WriteLine(eventArgs.TerminationException.Message);
            break;
        case ActivityInstanceState.Closed:
            // Success
            break;
    }
};

workflowApp.Run();

有没有办法告诉哪个特定活动引发了异常?

我注意到我至少可以使用workflowApp.WorkflowDefinition遍历整个活动树,但我似乎无法找到任何出现故障的活动迹象。

1 个答案:

答案 0 :(得分:0)

我发现它实际上很容易。 WorkflowApplication类有一个OnUnhandledException,其中包含有关失败的活动的信息。

以下是代码示例:

workflowApp.OnUnhandledException += eventArgs =>
{
    Logger.Error($"An error occured in activity '{eventArgs.ExceptionSource.DisplayName}' with ID '{eventArgs.ExceptionSource.Id}'.");
    return UnhandledExceptionAction.Terminate; 
 };