浏览代码

Merge branch 'feature/refactor_workflow' of http://110.188.24.182:10023/Fengwo/hotline into feature/refactor_workflow

xf 6 月之前
父节点
当前提交
b3a90ef489

+ 1 - 1
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -856,7 +856,7 @@ namespace Hotline.Api.Controllers
 
             dto.DefinitionModuleCode = moduleCode;
             dto.Title = knowledge.Title;
-            return await _workflowApplication.StartWorkflowAsync(dto, _sessionContext, id, cancellationToken: HttpContext.RequestAborted);
+            return await _workflowApplication.StartWorkflowAsync(dto, id, cancellationToken: HttpContext.RequestAborted);
 		}
         #endregion
 

+ 2 - 2
src/Hotline.Api/Controllers/PbxController.cs

@@ -300,7 +300,7 @@ namespace Hotline.Api.Controllers
                 startWorkflowDto.DefinitionModuleCode = WorkflowModuleConsts.TelRestApply;
                 startWorkflowDto.Opinion = dto.Reason;
                 startWorkflowDto.Title = "分机休息申请流程";
-				await _workflowApplication.StartWorkflowAsync(startWorkflowDto, _sessionContext, telRest.Id, cancellationToken: HttpContext.RequestAborted);
+				await _workflowApplication.StartWorkflowAsync(startWorkflowDto, telRest.Id, cancellationToken: HttpContext.RequestAborted);
             }
         }
 
@@ -336,7 +336,7 @@ namespace Hotline.Api.Controllers
             startWorkflowDto.DefinitionModuleCode = WorkflowModuleConsts.TelRestApply;
             startWorkflowDto.Opinion = dto.Reason;
             startWorkflowDto.Title = "分机休息申请流程";
-			await _workflowApplication.StartWorkflowAsync(startWorkflowDto, _sessionContext, telRest.Id, cancellationToken: HttpContext.RequestAborted);
+			await _workflowApplication.StartWorkflowAsync(startWorkflowDto, telRest.Id, cancellationToken: HttpContext.RequestAborted);
         }
 
 

+ 1 - 1
src/Hotline.Application/FlowEngine/IWorkflowApplication.cs

@@ -19,7 +19,7 @@ namespace Hotline.Application.FlowEngine
         /// <summary>
         /// 开始流程
         /// </summary>
-        Task<string> StartWorkflowAsync(StartWorkflowDto dto, ISessionContext current, string externalId, DateTime? expiredTime = null,
+        Task<string> StartWorkflowAsync(StartWorkflowDto dto, string externalId, DateTime? expiredTime = null,
             CancellationToken cancellationToken = default);
 
         /// <summary>

+ 21 - 21
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -76,7 +76,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         IWfModuleCacheManager wfModuleCacheManager,
         ISystemDomainService systemDomainService,
         ITimeLimitDomainService timeLimitDomainService,
-        ISessionContext sessionContext,
+        ISessionContextProvider sessionContextProvider,
         IMapper mapper,
         IFileRepository fileRepository,
         ISystemSettingCacheManager systemSettingCacheManager,
@@ -97,15 +97,15 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         _wfModuleCacheManager = wfModuleCacheManager;
         _systemDomainService = systemDomainService;
         _timeLimitDomainService = timeLimitDomainService;
-        _sessionContext = sessionContext;
         _mapper = mapper;
         _fileRepository = fileRepository;
         _logger = logger;
         _systemSettingCacheManager = systemSettingCacheManager;
         _cityBaseConfiguration = cityBaseConfiguration;
+        _sessionContext = sessionContextProvider.SessionContext;
     }
 
-    public async Task<string> StartWorkflowAsync(StartWorkflowDto dto, ISessionContext current, string externalId,
+    public async Task<string> StartWorkflowAsync(StartWorkflowDto dto, string externalId,
         DateTime? expiredTime, CancellationToken cancellationToken = default)
     {
         var validator = new StartWorkflowDtoValidator();
@@ -126,7 +126,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
 
         //下一节点是否为动态节点
         var isNextDynamic = startStepDefine.InstanceMode is EInstanceMode.Dynamic &&
-                            !_workflowDomainService.DynamicShouldTerminal(startStepDefine, current.OrgLevel);
+                            !_workflowDomainService.DynamicShouldTerminal(startStepDefine, _sessionContext.OrgLevel);
         var firstStepDefine = isNextDynamic
             ? startStepDefine
             : definition.FindStepDefine(dto.NextStepCode);
@@ -152,7 +152,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         }
 
         var workflow = await _workflowDomainService.CreateWorkflowAsync(wfModule, dto.Title,
-            current.RequiredUserId, current.RequiredOrgId,
+            _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId,
             externalId, cancellationToken);
 
         //var startStepHandles = new List<WorkflowStepHandler>{WorkflowStepHandler.Create(workflow.Id, workflow.ExternalId,
@@ -163,12 +163,12 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         var startStep = _workflowDomainService.CreateStartStep(workflow, startStepDefine, dto,
             new FlowStepHandler
             {
-                Key = current.RequiredUserId,
-                Value = current.UserName,
-                UserId = current.UserId,
-                Username = current.UserName,
-                OrgId = current.RequiredOrgId,
-                OrgName = current.OrgName,
+                Key = _sessionContext.RequiredUserId,
+                Value = _sessionContext.UserName,
+                UserId = _sessionContext.UserId,
+                Username = _sessionContext.UserName,
+                OrgId = _sessionContext.RequiredOrgId,
+                OrgName = _sessionContext.OrgName,
                 RoleId = defineHandler.Key,
                 RoleName = defineHandler.Value,
             }, expiredTime);
@@ -179,7 +179,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         var counterSignType = _workflowDomainService.GetCounterSignType(dto.IsStartCountersign);
 
         //办理开始节点
-        await _workflowDomainService.HandleStepAsync(current, startStep, workflow, dto, flowAssignInfo.FlowAssignType,
+        await _workflowDomainService.HandleStepAsync(startStep, workflow, dto, flowAssignInfo.FlowAssignType,
             counterSignType, expiredTime, cancellationToken);
 
         if (dto.Files.Any())
@@ -200,14 +200,14 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
 
         //更新受理人信息
         workflow.UpdateAcceptor(
-            current.RequiredUserId,
-            current.UserName,
-            current.StaffNo,
-            current.RequiredOrgId,
-            current.OrgName);
+            _sessionContext.RequiredUserId,
+            _sessionContext.UserName,
+            _sessionContext.StaffNo,
+            _sessionContext.RequiredOrgId,
+            _sessionContext.OrgName);
 
         await _workflowDomainService.StartAsync(workflow, startStep, dto, firstStepDefine, isNextDynamic,
-            flowAssignInfo, counterSignType, expiredTime, current, cancellationToken);
+            flowAssignInfo, counterSignType, expiredTime, cancellationToken);
 
         return workflow.Id;
     }
@@ -492,7 +492,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
 
         foreach (var step in unhandleSteps)
         {
-            await _workflowDomainService.HandleStepAsync(current, step, workflow, dto, null,
+            await _workflowDomainService.HandleStepAsync(step, workflow, dto, null,
                 null, null, cancellationToken);
 
             var trace = unhandleTraces.First(d => d.StepId == step.Id);
@@ -508,7 +508,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
                               ?? workflow.Steps.OrderBy(d => d.CreationTime).Last();
 
             await _workflowDomainService.EndAsync(workflow, dto,
-                endStepDefine, currentStep, current, expiredTime, cancellationToken);
+                endStepDefine, currentStep, expiredTime, cancellationToken);
         }
     }
 
@@ -1775,7 +1775,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         dto.NextStepName = endStepDefine.Name;
         dto.FlowDirection = EFlowDirection.CenterToFile;
 
-        await StartWorkflowAsync(dto, current, externalId, expiredTime, cancellationToken);
+        await StartWorkflowAsync(dto, externalId, expiredTime, cancellationToken);
     }
 
     /// <summary>

+ 3 - 3
src/Hotline/FlowEngine/Workflows/IWorkflowDomainService.cs

@@ -24,7 +24,7 @@ namespace Hotline.FlowEngine.Workflows
         /// </summary>
         Task StartAsync(Workflow workflow, WorkflowStep startStep, BasicWorkflowDto dto, StepDefine firstStepDefine,
             bool isNextDynamic, FlowAssignInfo flowAssignInfo, ECounterSignType? counterSignType, DateTime? expiredTime,
-            ISessionContext current, CancellationToken cancellationToken);
+            CancellationToken cancellationToken);
 
         /// <summary>
         /// 查询工作流
@@ -121,7 +121,7 @@ namespace Hotline.FlowEngine.Workflows
         /// 结束流程(流程直接流转至结束节点)
         /// </summary>
         Task<WorkflowTrace> EndAsync(Workflow workflow, BasicWorkflowDto dto, StepDefine endStepDefine,
-            WorkflowStep currentStep, ISessionContext current, DateTime? expiredTime, CancellationToken cancellationToken);
+            WorkflowStep currentStep, DateTime? expiredTime, CancellationToken cancellationToken);
 
         StepDefine GetStepDefine(WorkflowDefinition workflowDefinition, string stepCode);
 
@@ -203,7 +203,7 @@ namespace Hotline.FlowEngine.Workflows
         /// <summary>
         /// 办理节点
         /// </summary>
-        Task HandleStepAsync(ISessionContext current, WorkflowStep step, Workflow workflow, BasicWorkflowDto dto,
+        Task HandleStepAsync(WorkflowStep step, Workflow workflow, BasicWorkflowDto dto,
             EFlowAssignType? flowAssignType, ECounterSignType? counterSignType, DateTime? expiredTime,
             CancellationToken cancellationToken);
 

+ 50 - 53
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -40,15 +40,15 @@ namespace Hotline.FlowEngine.Workflows
         private readonly IRepository<User> _userRepository;
         private readonly ISystemSettingCacheManager _systemSettingCacheManager;
 
-		public WorkflowDomainService(
+        public WorkflowDomainService(
             IWorkflowRepository workflowRepository,
             IRepository<WorkflowStep> workflowStepRepository,
             IRepository<WorkflowTrace> workflowTraceRepository,
             IRepository<WorkflowSupplement> workflowSupplementRepository,
             IRepository<WorkflowCountersign> workflowCountersignRepository,
-			//IRepository<WorkflowStepHandler> workflowStepHandlerRepository,
-			ISystemSettingCacheManager systemSettingCacheManager,
-			ISessionContext sessionContext,
+            //IRepository<WorkflowStepHandler> workflowStepHandlerRepository,
+            ISystemSettingCacheManager systemSettingCacheManager,
+            ISessionContextProvider sessionContextProvider,
             IMapper mapper,
             Publisher publisher,
             ILogger<WorkflowDomainService> logger,
@@ -60,13 +60,13 @@ namespace Hotline.FlowEngine.Workflows
             _workflowSupplementRepository = workflowSupplementRepository;
             _workflowCountersignRepository = workflowCountersignRepository;
             //_workflowStepHandlerRepository = workflowStepHandlerRepository;
-            _sessionContext = sessionContext;
+            _sessionContext = sessionContextProvider.SessionContext;
             _mapper = mapper;
             _publisher = publisher;
             _logger = logger;
             _fileRepository = fileRepository;
             _systemSettingCacheManager = systemSettingCacheManager;
-		}
+        }
 
         public async Task<Workflow> CreateWorkflowAsync(WorkflowModule wfModule, string title, string userId,
             string orgId, string? externalId = null, CancellationToken cancellationToken = default)
@@ -102,7 +102,7 @@ namespace Hotline.FlowEngine.Workflows
         public async Task StartAsync(Workflow workflow, WorkflowStep startStep, BasicWorkflowDto dto,
             StepDefine firstStepDefine, bool isNextDynamic, FlowAssignInfo flowAssignInfo,
             ECounterSignType? counterSignType, DateTime? expiredTime,
-            ISessionContext current, CancellationToken cancellationToken)
+            CancellationToken cancellationToken)
         {
             if (firstStepDefine.StepType is EStepType.End)
             {
@@ -111,11 +111,11 @@ namespace Hotline.FlowEngine.Workflows
                     PublishStrategy.ParallelWhenAll, cancellationToken);
 
                 //firstStep是否为end,t: 实际办理节点为startStep, 并且handlerId赋值 f: 实际办理节点为firstStep, handlerId未赋值
-                workflow.UpdateActualStepWhenHandle(startStep, current.OrgAreaCode, current.OrgAreaName, current.OrgLevel);
+                workflow.UpdateActualStepWhenHandle(startStep, _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName, _sessionContext.OrgLevel);
 
-                workflow.UpdateCurrentStepWhenHandle(startStep, current.OrgAreaCode, current.OrgAreaName, current.OrgLevel);
+                workflow.UpdateCurrentStepWhenHandle(startStep, _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName, _sessionContext.OrgLevel);
 
-                var endTrace = await EndAsync(workflow, dto, firstStepDefine, startStep, current, expiredTime, cancellationToken);
+                var endTrace = await EndAsync(workflow, dto, firstStepDefine, startStep, expiredTime, cancellationToken);
                 return;
             }
 
@@ -259,7 +259,7 @@ namespace Hotline.FlowEngine.Workflows
 
             var unhandlePreviousTrace = workflow.Traces.FirstOrDefault(d =>
                     d.Status is not EWorkflowStepStatus.Handled
-            //&& d.TraceType is EWorkflowTraceType.Previous
+                //&& d.TraceType is EWorkflowTraceType.Previous
             );
             //var previousOpinion = unhandlePreviousTrace?.Opinion ?? null;
 
@@ -379,7 +379,7 @@ namespace Hotline.FlowEngine.Workflows
                 }
             }
 
-            await HandleStepAsync(current, currentStep, workflow, dto, flowAssignInfo.FlowAssignType,
+            await HandleStepAsync(currentStep, workflow, dto, flowAssignInfo.FlowAssignType,
                 counterSignType, expiredTime, cancellationToken);
 
             //创建会签数据
@@ -486,8 +486,7 @@ namespace Hotline.FlowEngine.Workflows
             //检查是否流转到流程终点
             if (nextStepDefine.StepType is EStepType.End)
             {
-                var endTrace = await EndAsync(workflow, dto, nextStepDefine, currentStep, current, expiredTime,
-                    cancellationToken);
+                var endTrace = await EndAsync(workflow, dto, nextStepDefine, currentStep, expiredTime, cancellationToken);
                 return;
             }
 
@@ -633,7 +632,7 @@ namespace Hotline.FlowEngine.Workflows
                 await DuplicateStepWithTraceAsync(workflow, prevStep, EWorkflowTraceType.Previous, cancellationToken);
 
             //退给派单组节点,需按照平均分配原则派给一个派单员 禅道299 TODO
-            if (dto.Handler != null)//todo 改为按策略判断
+            if (dto.Handler != null) //todo 改为按策略判断
             {
                 var handle = dto.Handler;
                 newPrevStep.Assign(handle.UserId, handle.Username, handle.OrgId, handle.OrgName, handle.RoleId, handle.RoleName);
@@ -641,7 +640,7 @@ namespace Hotline.FlowEngine.Workflows
 
             //remove workflow.steps
             await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
-            
+
             var stepIds = removeSteps.Select(d => d.Id).ToList();
             var updateTraces = workflow.Traces.Where(d => stepIds.Contains(d.StepId)).ToList();
             await UpdateTracesStateAsync(updateTraces, EWorkflowTraceState.StepRemoveByPrevious, cancellationToken);
@@ -1114,7 +1113,7 @@ namespace Hotline.FlowEngine.Workflows
                 {
                     new FlowStepHandler
                     {
-                        Key= startStep.RoleId,
+                        Key = startStep.RoleId,
                         Value = startStep.RoleName,
                         RoleId = startStep.RoleId,
                         RoleName = startStep.RoleName,
@@ -1163,7 +1162,7 @@ namespace Hotline.FlowEngine.Workflows
                 {
                     new FlowStepHandler
                     {
-                        Key= sendStep.RoleId,
+                        Key = sendStep.RoleId,
                         Value = sendStep.RoleName,
                         RoleId = sendStep.RoleId,
                         RoleName = sendStep.RoleName,
@@ -1210,8 +1209,8 @@ namespace Hotline.FlowEngine.Workflows
                     {
                         new FlowStepHandler
                         {
-                            Key= sendStep.RoleId,
-                            Value= sendStep.RoleName,
+                            Key = sendStep.RoleId,
+                            Value = sendStep.RoleName,
                             RoleId = sendStep.RoleId,
                             RoleName = sendStep.RoleName,
                             UserId = sendStep.HandlerId,
@@ -1246,7 +1245,7 @@ namespace Hotline.FlowEngine.Workflows
                     {
                         new FlowStepHandler
                         {
-                            Key= startStep.RoleId,
+                            Key = startStep.RoleId,
                             Value = startStep.RoleName,
                             RoleId = startStep.RoleId,
                             RoleName = startStep.RoleName,
@@ -1435,7 +1434,7 @@ namespace Hotline.FlowEngine.Workflows
             var endStepDefine = workflow.WorkflowDefinition.FindEndStepDefine();
 
             var basicDto = _mapper.Map<BasicWorkflowDto>(dto);
-            var endTrace = await EndAsync(workflow, basicDto, endStepDefine, currentStep, current,
+            var endTrace = await EndAsync(workflow, basicDto, endStepDefine, currentStep,
                 expiredTime, cancellationToken: cancellationToken);
 
             await _publisher.PublishAsync(new CancelWorkflowNotify(workflow), PublishStrategy.ParallelWhenAll,
@@ -1495,7 +1494,7 @@ namespace Hotline.FlowEngine.Workflows
         /// 流程结束
         /// </summary>
         public async Task<WorkflowTrace> EndAsync(Workflow workflow, BasicWorkflowDto dto,
-            StepDefine endStepDefine, WorkflowStep currentStep, ISessionContext current,
+            StepDefine endStepDefine, WorkflowStep currentStep,
             DateTime? expiredTime, CancellationToken cancellationToken)
         {
             //var endStepHandles = new List<WorkflowStepHandler>
@@ -1505,7 +1504,7 @@ namespace Hotline.FlowEngine.Workflows
             //};
 
             //create endStep
-            var endStep = await CreateEndStepAsync(current, workflow, endStepDefine, currentStep, expiredTime,
+            var endStep = await CreateEndStepAsync(workflow, endStepDefine, currentStep, expiredTime,
                 cancellationToken);
             //workflow.Steps.Add(endStep);
 
@@ -1515,8 +1514,7 @@ namespace Hotline.FlowEngine.Workflows
             workflow.Complete(endStep, dto.ReviewResult);
 
             //需求调整:归档时当前节点显示为归档节点
-            workflow.UpdateCurrentStepWhenHandle(endStep,
-                current.OrgAreaCode, current.OrgAreaName, current.OrgLevel);
+            workflow.UpdateCurrentStepWhenHandle(endStep, _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName, _sessionContext.OrgLevel);
             workflow.UpdateCurrentStepAcceptTime(endStep.AcceptTime.Value);
 
             //workflow.UpdateActualStepWhenHandle(endStep, current.OrgAreaCode, current.OrgAreaName, current.OrgLevel);
@@ -1558,7 +1556,7 @@ namespace Hotline.FlowEngine.Workflows
         /// <summary>
         /// 办理节点
         /// </summary>
-        public async Task HandleStepAsync(ISessionContext current, WorkflowStep step, Workflow workflow,
+        public async Task HandleStepAsync(WorkflowStep step, Workflow workflow,
             BasicWorkflowDto dto, EFlowAssignType? flowAssignType, ECounterSignType? counterSignType,
             DateTime? expiredTime, CancellationToken cancellationToken)
         {
@@ -1581,7 +1579,7 @@ namespace Hotline.FlowEngine.Workflows
             step.Remark = dto.Remark;
 
             //step办理状态
-            HandleStep(current, step, dto.Opinion, dto.NextStepCode);
+            HandleStep(step, dto.Opinion, dto.NextStepCode);
         }
 
 
@@ -1799,7 +1797,7 @@ namespace Hotline.FlowEngine.Workflows
                 EDynamicPolicy.OrgUpLead => EHandlerType.OrgLevel,
                 EDynamicPolicy.ArriveCenter => EHandlerType.OrgLevel,
                 EDynamicPolicy.ArriveOneOrg => EHandlerType.OrgLevel,
-				EDynamicPolicy.OrgDownCenterTop => EHandlerType.OrgLevel,
+                EDynamicPolicy.OrgDownCenterTop => EHandlerType.OrgLevel,
                 EDynamicPolicy.OrgDown => EHandlerType.OrgLevel,
                 null => throw new ArgumentOutOfRangeException(),
                 _ => throw new ArgumentOutOfRangeException()
@@ -1835,7 +1833,7 @@ namespace Hotline.FlowEngine.Workflows
                 EDynamicPolicyCountersign.OrgUpLead => EHandlerType.OrgLevel,
                 EDynamicPolicyCountersign.ArriveCenter => EHandlerType.OrgLevel,
                 EDynamicPolicyCountersign.ArriveOneOrg => EHandlerType.OrgLevel,
-				EDynamicPolicyCountersign.OrgDownCenterTop => EHandlerType.OrgLevel,
+                EDynamicPolicyCountersign.OrgDownCenterTop => EHandlerType.OrgLevel,
                 EDynamicPolicyCountersign.OrgDown => EHandlerType.OrgLevel,
                 null => throw new ArgumentOutOfRangeException(),
                 _ => throw new ArgumentOutOfRangeException()
@@ -1941,12 +1939,12 @@ namespace Hotline.FlowEngine.Workflows
         /// <summary>
         /// 办理节点(赋值节点的办理对象信息)
         /// </summary>
-        private void HandleStep(ISessionContext current, WorkflowStep step, string opinion, string nextStepCode)
+        private void HandleStep(WorkflowStep step, string opinion, string nextStepCode)
         {
-            step.Handle(current.RequiredUserId, current.UserName,
-                current.RequiredOrgId, current.OrgName,
-                current.OrgAreaCode, current.OrgAreaName,
-                current.OrgIsCenter, opinion, nextStepCode);
+            step.Handle(_sessionContext.RequiredUserId, _sessionContext.UserName,
+                _sessionContext.RequiredOrgId, _sessionContext.OrgName,
+                _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName,
+                _sessionContext.OrgIsCenter, opinion, nextStepCode);
 
             //var handler = step.FindActualHandler(current.Roles, current.RequiredUserId, current.RequiredOrgId);
             //if (handler is not null)
@@ -2413,7 +2411,6 @@ namespace Hotline.FlowEngine.Workflows
         }
 
         private async Task<WorkflowStep> CreateEndStepAsync(
-            ISessionContext current,
             Workflow workflow,
             StepDefine endStepDefine,
             WorkflowStep prevStep,
@@ -2425,12 +2422,12 @@ namespace Hotline.FlowEngine.Workflows
 
             var handler = new FlowStepHandler
             {
-                Key = current.UserId,
-                Value = current.UserName,
-                UserId = current.RequiredUserId,
-                Username = current.UserName,
-                OrgId = current.OrgId,
-                OrgName = current.OrgName,
+                Key = _sessionContext.UserId,
+                Value = _sessionContext.UserName,
+                UserId = _sessionContext.RequiredUserId,
+                Username = _sessionContext.UserName,
+                OrgId = _sessionContext.OrgId,
+                OrgName = _sessionContext.OrgName,
             };
 
             var step = CreateStep(workflow, endStepDefine, prevStep, EFlowAssignType.User, handler,
@@ -2441,7 +2438,7 @@ namespace Hotline.FlowEngine.Workflows
             //    _sessionContext.RequiredOrgId, _sessionContext.OrgName,
             //    _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName);
 
-            HandleStep(current, step, "流程归档", string.Empty);
+            HandleStep(step, "流程归档", string.Empty);
 
             await _workflowStepRepository.AddAsync(step, cancellationToken);
             workflow.Steps.Add(step);
@@ -2567,8 +2564,7 @@ namespace Hotline.FlowEngine.Workflows
         /// </summary>
         public bool DynamicShouldTerminal(StepDefine currentStepDefine, int currentOrgLevel)
         {
-	       
-			if (currentStepDefine.InstanceMode is not EInstanceMode.Dynamic)
+            if (currentStepDefine.InstanceMode is not EInstanceMode.Dynamic)
                 throw new UserFriendlyException("非动态节点");
             switch (currentStepDefine.InstancePolicy)
             {
@@ -2578,19 +2574,19 @@ namespace Hotline.FlowEngine.Workflows
                 case EDynamicPolicy.ArriveOneOrg:
                 case EDynamicPolicy.OrgUpHandleCenterTop:
                 case EDynamicPolicy.OrgUpHandle:
-					if (!int.TryParse(currentStepDefine.TerminalDynamicMark, out var tMark))
+                    if (!int.TryParse(currentStepDefine.TerminalDynamicMark, out var tMark))
                         throw new UserFriendlyException(
                             $"TerminalDynamicMark parse to int failed, tMark: {currentStepDefine.TerminalDynamicMark}");
                     return currentOrgLevel <= tMark;
                 case EDynamicPolicy.OrgUpLeadCenterTop:
                 case EDynamicPolicy.OrgUpLead:
-	                if (!int.TryParse(currentStepDefine.TerminalDynamicMark, out var tMark2))
-		                throw new UserFriendlyException(
-			                $"TerminalDynamicMark parse to int failed, tMark: {currentStepDefine.TerminalDynamicMark}");
-	                var leadRoleCode = _systemSettingCacheManager.GetSetting(SettingConstants.RoleLingDao)?.SettingValue[0];
-					var isLead = _sessionContext.Roles.Any(x => x == leadRoleCode);
-					return (currentOrgLevel <= tMark2) && isLead;
-				case EDynamicPolicy.OrgDownCenterTop:
+                    if (!int.TryParse(currentStepDefine.TerminalDynamicMark, out var tMark2))
+                        throw new UserFriendlyException(
+                            $"TerminalDynamicMark parse to int failed, tMark: {currentStepDefine.TerminalDynamicMark}");
+                    var leadRoleCode = _systemSettingCacheManager.GetSetting(SettingConstants.RoleLingDao)?.SettingValue[0];
+                    var isLead = _sessionContext.Roles.Any(x => x == leadRoleCode);
+                    return (currentOrgLevel <= tMark2) && isLead;
+                case EDynamicPolicy.OrgDownCenterTop:
                 case EDynamicPolicy.OrgDown:
                     if (!int.TryParse(currentStepDefine.TerminalDynamicMark, out var tMark1))
                         throw new UserFriendlyException(
@@ -2889,6 +2885,7 @@ namespace Hotline.FlowEngine.Workflows
                     throw new ArgumentOutOfRangeException();
             }
         }
+
         #endregion
     }
 }