소스 검색

workflowdomain所有消息改为nowait

xf 9 달 전
부모
커밋
4cd33c4f37
2개의 변경된 파일20개의 추가작업 그리고 17개의 파일을 삭제
  1. 2 2
      src/Hotline/EventBus/Publisher.cs
  2. 18 15
      src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

+ 2 - 2
src/Hotline/EventBus/Publisher.cs

@@ -18,8 +18,8 @@ public class Publisher
         PublishStrategies[PublishStrategy.SyncStopOnException] = new CustomMediator(_serviceFactory, SyncStopOnException);
     }
 
-    public IDictionary<PublishStrategy, IMediator> PublishStrategies = new Dictionary<PublishStrategy, IMediator>();
-    public PublishStrategy DefaultStrategy { get; set; } = PublishStrategy.SyncContinueOnException;
+    private IDictionary<PublishStrategy, IMediator> PublishStrategies = new Dictionary<PublishStrategy, IMediator>();
+    private PublishStrategy DefaultStrategy { get; set; } = PublishStrategy.SyncContinueOnException;
 
     public Task PublishAsync<TNotification>(TNotification notification, CancellationToken cancellationToken)
     {

+ 18 - 15
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -36,7 +36,6 @@ namespace Hotline.FlowEngine.Workflows
         //private readonly IRepository<WorkflowStepHandler> _workflowStepHandlerRepository;
         private readonly ISessionContext _sessionContext;
         private readonly IMapper _mapper;
-        private readonly IMediator _mediator;
         private readonly Publisher _publisher;
         private readonly ILogger<WorkflowDomainService> _logger;
         private readonly IFileRepository _fileRepository;
@@ -51,7 +50,6 @@ namespace Hotline.FlowEngine.Workflows
             //IRepository<WorkflowStepHandler> workflowStepHandlerRepository,
             ISessionContext sessionContext,
             IMapper mapper,
-            IMediator mediator,
             Publisher publisher,
             ILogger<WorkflowDomainService> logger,
             IFileRepository fileRepository)
@@ -64,7 +62,6 @@ namespace Hotline.FlowEngine.Workflows
             //_workflowStepHandlerRepository = workflowStepHandlerRepository;
             _sessionContext = sessionContext;
             _mapper = mapper;
-            _mediator = mediator;
             _publisher = publisher;
             _logger = logger;
             _fileRepository = fileRepository;
@@ -108,9 +105,9 @@ namespace Hotline.FlowEngine.Workflows
         {
             if (firstStepDefine.StepType is EStepType.End)
             {
-                await _mediator.Publish(
+                await _publisher.PublishAsync(
                     new StartWorkflowNotify(workflow, dto, flowAssignInfo, startStep.WorkflowTrace),
-                    cancellationToken);
+                    PublishStrategy.ParallelNoWait, cancellationToken);
 
                 //firstStep是否为end,t: 实际办理节点为startStep, 并且handlerId赋值 f: 实际办理节点为firstStep, handlerId未赋值
                 workflow.UpdateActualStepWhenHandle(startStep,
@@ -182,7 +179,6 @@ namespace Hotline.FlowEngine.Workflows
             await _workflowRepository.UpdateAsync(workflow, cancellationToken);
 
             //publish
-            //await _mediator.Publish(new StartWorkflowNotify(workflow, dto, flowAssignInfo, trace), cancellationToken);
             await _publisher.PublishAsync(new StartWorkflowNotify(workflow, dto, flowAssignInfo, trace),
                 PublishStrategy.ParallelNoWait, cancellationToken);
         }
@@ -542,9 +538,9 @@ namespace Hotline.FlowEngine.Workflows
 
             #endregion
 
-            await _mediator.Publish(
+            await _publisher.PublishAsync(
                 new NextStepNotify(workflow, dto, flowAssignInfo, trace, nextStepDefine,
-                    current.RequiredOrgId, expiredTime.HasValue),
+                    current.RequiredOrgId, expiredTime.HasValue), PublishStrategy.ParallelNoWait,
                 cancellationToken);
         }
 
@@ -662,7 +658,8 @@ namespace Hotline.FlowEngine.Workflows
 
             await _workflowRepository.UpdateAsync(workflow, cancellationToken);
 
-            await _mediator.Publish(new PreviousNotify(workflow, newPrevStep, dto, isOrgToCenter), cancellationToken);
+            await _publisher.PublishAsync(new PreviousNotify(workflow, newPrevStep, dto, isOrgToCenter),
+                PublishStrategy.ParallelNoWait, cancellationToken);
 
             return GetFlowDirection(currentStep.BusinessType, prevStep.BusinessType);
         }
@@ -1053,7 +1050,8 @@ namespace Hotline.FlowEngine.Workflows
 
             await _workflowRepository.UpdateAsync(workflow, cancellationToken);
 
-            await _mediator.Publish(new RecallNotify(workflow, targetStep, dto, isOrgToCenter), cancellationToken);
+            await _publisher.PublishAsync(new RecallNotify(workflow, targetStep, dto, isOrgToCenter),
+                PublishStrategy.ParallelNoWait, cancellationToken);
         }
 
         /// <summary>
@@ -1123,7 +1121,8 @@ namespace Hotline.FlowEngine.Workflows
 
             var dto = _mapper.Map<RecallDto>(targetStep);
             dto.WorkflowId = workflow.Id;
-            await _mediator.Publish(new RecallNotify(workflow, targetStep, dto, isOrgToCenter), cancellationToken);
+            await _publisher.PublishAsync(new RecallNotify(workflow, targetStep, dto, isOrgToCenter),
+                PublishStrategy.ParallelNoWait, cancellationToken);
         }
 
         ///// <summary>
@@ -1285,7 +1284,8 @@ namespace Hotline.FlowEngine.Workflows
             workflow.Terminate(dto.Opinion);
             await _workflowRepository.UpdateAsync(workflow, cancellationToken);
 
-            await _mediator.Publish(new TerminalWorkflowNotify(workflow), cancellationToken);
+            await _publisher.PublishAsync(new TerminalWorkflowNotify(workflow), PublishStrategy.ParallelNoWait,
+                cancellationToken);
         }
 
         /// <summary>
@@ -1386,7 +1386,8 @@ namespace Hotline.FlowEngine.Workflows
             var endTrace = await EndAsync(workflow, basicDto, endStepDefine, currentStep, current,
                 expiredTime, cancellationToken: cancellationToken);
 
-            await _mediator.Publish(new CancelWorkflowNotify(workflow), cancellationToken);
+            await _publisher.PublishAsync(new CancelWorkflowNotify(workflow), PublishStrategy.ParallelNoWait,
+                cancellationToken);
         }
 
         /// <summary>
@@ -1462,7 +1463,8 @@ namespace Hotline.FlowEngine.Workflows
 
             await _workflowRepository.UpdateAsync(workflow, cancellationToken);
 
-            await _mediator.Publish(new EndWorkflowNotify(workflow, endTrace, dto), cancellationToken);
+            await _publisher.PublishAsync(new EndWorkflowNotify(workflow, endTrace, dto),
+                PublishStrategy.ParallelNoWait, cancellationToken);
 
             return endTrace;
         }
@@ -1785,7 +1787,8 @@ namespace Hotline.FlowEngine.Workflows
             //create trace
             await CreateTraceAsync(workflow, countersignEndStep, EWorkflowTraceType.Normal, cancellationToken);
 
-            await _mediator.Publish(new CountersignEndAssigned(workflow), cancellationToken);
+            await _publisher.PublishAsync(new CountersignEndAssigned(workflow), PublishStrategy.ParallelNoWait,
+                cancellationToken);
             //}
 
             return nextSteps;