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; 
}; 
関連する問題