@@ -33,33 +33,46 @@ public async Task RunPreMiddleware(WorkflowInstance workflow, WorkflowDefinition
3333 }
3434
3535 /// <inheritdoc cref="IWorkflowMiddlewareRunner.RunPostMiddleware"/>
36- public async Task RunPostMiddleware ( WorkflowInstance workflow , WorkflowDefinition def )
36+ public Task RunPostMiddleware ( WorkflowInstance workflow , WorkflowDefinition def )
3737 {
38- var postMiddleware = _middleware
39- . Where ( m => m . Phase == WorkflowMiddlewarePhase . PostWorkflow ) ;
40- try
41- {
42- await RunWorkflowMiddleware ( workflow , postMiddleware ) ;
43- }
44- catch ( Exception exception )
45- {
46- await HandleWorkflowMiddlewareError ( def . OnPostMiddlewareError , exception ) ;
47- }
38+ return RunWorkflowMiddlewareWithErrorHandling (
39+ workflow ,
40+ WorkflowMiddlewarePhase . PostWorkflow ,
41+ def . OnPostMiddlewareError ) ;
4842 }
4943
5044 /// <inheritdoc cref="IWorkflowMiddlewareRunner.RunExecuteMiddleware"/>
51- public async Task RunExecuteMiddleware ( WorkflowInstance workflow , WorkflowDefinition def )
45+ public Task RunExecuteMiddleware ( WorkflowInstance workflow , WorkflowDefinition def )
5246 {
53- var executeMiddleware = _middleware
54- . Where ( m => m . Phase == WorkflowMiddlewarePhase . ExecuteWorkflow ) ;
47+ return RunWorkflowMiddlewareWithErrorHandling (
48+ workflow ,
49+ WorkflowMiddlewarePhase . ExecuteWorkflow ,
50+ def . OnExecuteMiddlewareError ) ;
51+ }
52+
53+ public async Task RunWorkflowMiddlewareWithErrorHandling (
54+ WorkflowInstance workflow ,
55+ WorkflowMiddlewarePhase phase ,
56+ Type middlewareErrorType )
57+ {
58+ var middleware = _middleware . Where ( m => m . Phase == phase ) ;
5559
5660 try
5761 {
58- await RunWorkflowMiddleware ( workflow , executeMiddleware ) ;
62+ await RunWorkflowMiddleware ( workflow , middleware ) ;
5963 }
6064 catch ( Exception exception )
6165 {
62- await HandleWorkflowMiddlewareError ( def . OnExecuteMiddlewareError , exception ) ;
66+ var errorHandlerType = middlewareErrorType ?? typeof ( IWorkflowMiddlewareErrorHandler ) ;
67+
68+ using ( var scope = _serviceProvider . CreateScope ( ) )
69+ {
70+ var typeInstance = scope . ServiceProvider . GetService ( errorHandlerType ) ;
71+ if ( typeInstance is IWorkflowMiddlewareErrorHandler handler )
72+ {
73+ await handler . HandleAsync ( exception ) ;
74+ }
75+ }
6376 }
6477 }
6578
@@ -73,19 +86,5 @@ private static Task RunWorkflowMiddleware(
7386 ( previous , middleware ) =>
7487 ( ) => middleware . HandleAsync ( workflow , previous ) ) ( ) ;
7588 }
76-
77- private async Task HandleWorkflowMiddlewareError ( Type middlewareErrorType , Exception exception )
78- {
79- var errorHandlerType = middlewareErrorType ?? typeof ( IWorkflowMiddlewareErrorHandler ) ;
80-
81- using ( var scope = _serviceProvider . CreateScope ( ) )
82- {
83- var typeInstance = scope . ServiceProvider . GetService ( errorHandlerType ) ;
84- if ( typeInstance is IWorkflowMiddlewareErrorHandler handler )
85- {
86- await handler . HandleAsync ( exception ) ;
87- }
88- }
89- }
9089 }
9190}
0 commit comments