2017-10-26 1 views
0

코드에서 (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

사실 꽤 쉽게 발견되었습니다. WorkflowApplication 클래스에는 실패한 활동에 대한 정보가 들어있는 OnUnhandledException이 있습니다.

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

은 코드 샘플입니다
관련 문제