如果我从代码运行(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
遍历整个活动树,但我似乎无法找到任何出现故障的活动迹象。
答案 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;
};