Przeglądaj źródła

fixed: recall to start can not handle

xfe 1 rok temu
rodzic
commit
0a352db591

+ 16 - 13
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -526,7 +526,7 @@ namespace Hotline.FlowEngine.Workflows
                     throw new UserFriendlyException($"流程流转数据异常,未结束流程出现endStep, flowId: {workflow.Id}", "流程流转数据异常");
 
                 var targetSteps = await CreateConfigStepsAsync(workflow, targetStepDefine, lastStep, dto,
-                    flowAssignInfo, cancellationToken);
+                    flowAssignInfo, EWorkflowTraceStatus.Jump, cancellationToken);
                 targetStep = targetSteps.First();
 
                 workflow.EndCountersign();
@@ -789,7 +789,7 @@ namespace Hotline.FlowEngine.Workflows
             startStep.Status = EWorkflowStepStatus.WaitForHandle;
             startStep.PrevChosenStepCode = null;
             startStep.StepExpiredTime = workflow.ExpiredTime;
-            
+
             startStep.InitId();
             return startStep;
         }
@@ -797,10 +797,11 @@ namespace Hotline.FlowEngine.Workflows
         #region private method
 
         public async Task<WorkflowStep> CreateStartStepAsync(Workflow workflow, StepDefine startStepDefine, BasicWorkflowDto dto,
-            List<Kv> handles, CancellationToken cancellationToken)
+            List<Kv> handles, EWorkflowTraceStatus traceStatus, CancellationToken cancellationToken)
         {
             var startStep = CreateStartStep(workflow, startStepDefine, dto, handles);
             await _workflowStepRepository.AddAsync(startStep, cancellationToken);
+            await CreateTraceAsync(workflow, startStep, traceStatus, cancellationToken);
             return startStep;
         }
 
@@ -844,7 +845,7 @@ namespace Hotline.FlowEngine.Workflows
                         {
                             //todo 创建普通节点(根据配置)
                             nextSteps = await CreateConfigStepsAsync(workflow, nextStepDefine, currentStep, dto,
-                                flowAssignInfo, cancellationToken);
+                                flowAssignInfo, EWorkflowTraceStatus.Normal, cancellationToken);
                         }
                     }
                     else
@@ -886,13 +887,13 @@ namespace Hotline.FlowEngine.Workflows
                 //todo 创建动态下一级节点
                 nextSteps = await CreateStepsAsync(workflow, nextStepDefine, currentStep, dto,
                     flowAssignInfo.FlowAssignType, dto.NextHandlers, null, EWorkflowStepStatus.WaitForAccept,
-                    ECountersignPosition.None, false, cancellationToken);
+                    ECountersignPosition.None, false, EWorkflowTraceStatus.Normal, cancellationToken);
             }
             else
             {
                 //todo 创建普通节点(根据配置)
                 nextSteps = await CreateConfigStepsAsync(workflow, nextStepDefine, currentStep, dto, flowAssignInfo,
-                    cancellationToken);
+                    EWorkflowTraceStatus.Normal, cancellationToken);
             }
 
             return nextSteps;
@@ -912,7 +913,7 @@ namespace Hotline.FlowEngine.Workflows
 
             return CreateStepsAsync(workflow, stepDefine, prevStep, dto, flowAssignType, dto.NextHandlers, countersignId,
                 EWorkflowStepStatus.WaitForAccept, prevStep.GetNextStepCountersignPosition(),
-                false, cancellationToken);
+                false, EWorkflowTraceStatus.Normal, cancellationToken);
         }
 
         /// <summary>
@@ -1319,10 +1320,10 @@ namespace Hotline.FlowEngine.Workflows
                 workflow.SetStatusRunnable();
 
             var targetStepNew = targetIsStartStep
-                ? await CreateStartStepAsync(workflow, targetStepDefine, dto,
-                    new List<Kv> { new(_sessionContext.RequiredUserId, _sessionContext.UserName) }, cancellationToken)
-                : (await CreateConfigStepsAsync(workflow, targetStepDefine, targetPrevStep, dto, flowAssignInfo,
-                    cancellationToken)).First();
+                ? await CreateStartStepAsync(workflow, targetStepDefine, dto, dto.NextHandlers, traceStatus, cancellationToken)
+                : (await CreateStepsAsync(workflow, targetStepDefine, targetPrevStep, dto, flowAssignInfo.FlowAssignType, dto.NextHandlers,
+                    null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None, true, traceStatus, cancellationToken)).First();
+
 
             //更新当前办理节点信息
             workflow.UpdateWorkflowCurrentStepInfo(dto.IsStartCountersign,
@@ -1401,6 +1402,7 @@ namespace Hotline.FlowEngine.Workflows
             BasicWorkflowDto dto,
             FlowAssignInfo flowAssignInfo,
             //DateTime expiredTime,
+            EWorkflowTraceStatus traceStatus,
             CancellationToken cancellationToken)
         {
             List<Kv> handlers;
@@ -1416,7 +1418,7 @@ namespace Hotline.FlowEngine.Workflows
             }
 
             return await CreateStepsAsync(workflow, stepDefine, prevStep, dto, flowAssignInfo.FlowAssignType, handlers,
-                null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None, true, cancellationToken);
+                null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None, true, traceStatus, cancellationToken);
         }
 
         private async Task<List<WorkflowStep>> CreateStepsAsync(
@@ -1431,6 +1433,7 @@ namespace Hotline.FlowEngine.Workflows
             ECountersignPosition csPosition,
             //DateTime expiredTime,
             bool isOrigin,
+            EWorkflowTraceStatus traceStatus,
             CancellationToken cancellationToken
         )
         {
@@ -1464,7 +1467,7 @@ namespace Hotline.FlowEngine.Workflows
             //create traces todo add range traces
             foreach (var step in steps)
             {
-                await CreateTraceAsync(workflow, step, EWorkflowTraceStatus.Normal, cancellationToken);
+                await CreateTraceAsync(workflow, step, traceStatus, cancellationToken);
             }
 
             return steps;