私は Windows ワークフローの基盤に少し慣れていないので、非常に簡単かもしれませんが、私はそれに固執しています。私は非常に単純なシーケンシャル ワークフローを使用しており、トランザクション スコープ アクティビティ内にいくつかのコード アクティビティがあります。
次のコードを持つコンソール アプリケーションからワークフローを実行しています。
Activity workflow = new Process();
var inputArgument = new Dictionary<string, object>();
inputArgument["Argument 1"] = 1234567;
inputArgument["Argument 2"] = 1234567;
inputArgument["Argument 3"] = "GUID";
inputArgument["Aggument 4"] = @"\\filepath\";
var syncEvent = new AutoResetEvent(false);
var workflowApp = new WorkflowApplication(workflow, inputArgument);
workflowApp.OnUnhandledException =
delegate (WorkflowApplicationUnhandledExceptionEventArgs e)
{
return UnhandledExceptionAction.Terminate;
};
workflowApp.Completed +=
delegate (WorkflowApplicationCompletedEventArgs e)
{
syncEvent.Set();
};
workflowApp.Run();
syncEvent.WaitOne();
トランザクション スコープ アクティビティを追加しない場合、ワークフローは正常に実行され、例外が発生した場合はワークフロー インスタンスが終了し、コンソール アプリケーションも閉じます。
ただし、Transaction Scope アクティビティを追加すると、Transaction Scope 内でいずれかのアクティビティが失敗した場合、ワークフロー インスタンスはコンソールと同様に実行され続けます。インスタンスを終了する方法を教えてもらえますか?
ワークフロー内で例外を処理していないので、例外の詳細をログに記録できるようにしたいと考えています。