0

私は 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 内でいずれかのアクティビティが失敗した場合、ワークフロー インスタンスはコンソールと同様に実行され続けます。インスタンスを終了する方法を教えてもらえますか?

ワークフロー内で例外を処理していないので、例外の詳細をログに記録できるようにしたいと考えています。

4

1 に答える 1