xf há 1 ano atrás
pai
commit
989e3dcd12
1 ficheiros alterados com 5 adições e 17 exclusões
  1. 5 17
      src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

+ 5 - 17
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -492,7 +492,7 @@ namespace Hotline.FlowEngine.Workflows
             if (targetStepBox is null)
                 throw UserFriendlyException.SameMessage("该流程尚未流转至该节点");
 
-            await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, isStartCountersign, cancellationToken);
+            await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, isStartCountersign, EWorkflowTraceStatus.Recall, cancellationToken);
 
             workflow.ResetHandlers(flowAssignMode.FlowAssignType, flowAssignMode.HandlerObjects);
             await _workflowRepository.UpdateAsync(workflow, cancellationToken);
@@ -560,9 +560,9 @@ namespace Hotline.FlowEngine.Workflows
             else
             {
                 //返回之前节点
-                await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, isStartCountersign, cancellationToken);
+                await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, isStartCountersign, EWorkflowTraceStatus.Jump, cancellationToken);
             }
-            
+
             workflow.ResetHandlers(flowAssignMode.FlowAssignType, flowAssignMode.HandlerObjects);
             await _workflowRepository.UpdateAsync(workflow, cancellationToken);
 
@@ -822,7 +822,7 @@ namespace Hotline.FlowEngine.Workflows
         }
 
         private async Task RecallAsync(Workflow workflow, NextWorkflowDto dto, StepDefine targetStepDefine, WorkflowStep targetStepBox,
-            bool isStartCountersign, CancellationToken cancellationToken)
+            bool isStartCountersign, EWorkflowTraceStatus traceStatus, CancellationToken cancellationToken)
         {
             //get targetStep's previous
             var targetPrevStepBox = workflow.StepBoxes.FirstOrDefault(d => d.Id == targetStepBox.PreviousId);
@@ -833,18 +833,6 @@ namespace Hotline.FlowEngine.Workflows
             if (targetPrevStep == null)
                 throw new UserFriendlyException($"{nameof(RecallAsync)}, 未找到目标节点的前一节点, flowId: {workflow.Id}");
 
-            ////remove completedSteps include target stepBox
-            //var removeSteps = GetStepsIncludeStepBox(targetStepBox);
-            //var tempStepBox = currentStepBox;
-            //while (tempStepBox.Code != targetStepBox.Code)
-            //{
-            //    removeSteps.AddRange(GetStepsIncludeStepBox(tempStepBox));
-            //    var prevStepBox = workflow.StepBoxes.FirstOrDefault(d => d.Id == tempStepBox.PreviousId);
-            //    if (prevStepBox is null)
-            //        throw new UserFriendlyException($"{nameof(RecallAsync)}, 未查询到节点, workflowId: {workflow.Id}, prevStepBoxId: {tempStepBox.PreviousId}");
-            //    tempStepBox = prevStepBox;
-            //}
-            //
             //查询所有目标节点之后的节点,然后删掉(包括目标节点)
             var removeSteps = GetStepsBehindTargetStepBox(workflow.StepBoxes, targetStepBox);
             await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
@@ -852,7 +840,7 @@ namespace Hotline.FlowEngine.Workflows
 
             //recreate targetStep
             await CreateStepAsync(isStartCountersign, workflow, targetStepDefine, dto, EWorkflowStepStatus.Assigned,
-                targetPrevStepBox, targetPrevStep, EWorkflowTraceStatus.Recall, cancellationToken);
+                targetPrevStepBox, targetPrevStep, traceStatus, cancellationToken);
 
             //flow manage
             await ResetWorkflowCurrentStepInfo(workflow, dto, targetStepBox, isStartCountersign, cancellationToken);