diff --git a/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java b/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java index 4e2a57d041936c652ecc1d6e55c11949f822149d..3852c97ba09ab27c3ab41ee99a57280d11d42399 100644 --- a/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java +++ b/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java @@ -146,6 +146,8 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { protected int myActive(ProcessTaskStepVo currentProcessTaskStepVo) throws ProcessTaskException { currentProcessTaskStepVo.setStatus(ProcessTaskStatus.RUNNING.getValue()); currentProcessTaskStepVo.setUpdateStartTime(1); + IProcessTaskCrossoverMapper processTaskCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskCrossoverMapper.class); + processTaskCrossoverMapper.deleteProcessTaskStepWorker(new ProcessTaskStepWorkerVo(currentProcessTaskStepVo.getId())); ProcessTaskStepVo processTaskStepVo = new ProcessTaskStepVo(); processTaskStepVo.setId(currentProcessTaskStepVo.getId()); processTaskStepVo.setName(currentProcessTaskStepVo.getName()); @@ -290,15 +292,22 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { return; } String assignExecUser = SystemUser.SYSTEM.getUserUuid(); - List processTaskStepWorkerList = processTaskCrossoverMapper.getProcessTaskStepWorkerByProcessTaskIdAndProcessTaskStepId(processTaskStepVo.getProcessTaskId(), processTaskStepVo.getId()); - if (CollectionUtils.isNotEmpty(processTaskStepWorkerList)) { - for (ProcessTaskStepWorkerVo processTaskStepWorkerVo : processTaskStepWorkerList) { - if (Objects.equals(processTaskStepWorkerVo.getUserType(), ProcessUserType.MAJOR.getValue()) && Objects.equals(processTaskStepWorkerVo.getType(), GroupSearch.USER.getValue())) { + IProcessStepHandlerCrossoverUtil processStepHandlerCrossoverUtil = CrossoverServiceFactory.getApi(IProcessStepHandlerCrossoverUtil.class); + ProcessTaskStepAssignVo processTaskStepAssignVo = processStepHandlerCrossoverUtil.analysisAssignConfig(processTaskStepVo); + List finalStepWorkerList = processTaskStepAssignVo.getFinalStepWorkerList(); + if (CollectionUtils.isNotEmpty(finalStepWorkerList)) { + for (ProcessTaskStepWorkerVo processTaskStepWorkerVo : finalStepWorkerList) { + if (Objects.equals(processTaskStepWorkerVo.getType(), GroupSearch.USER.getValue())) { assignExecUser = processTaskStepWorkerVo.getUuid(); break; } } } + UserContext userContext = null; + // 如果作业的执行用户不是当前用户,创建作业的时候会切换用户上下文,这里先复制一份当前的用户上下文,等作业创建完成后再切回当前用户上下文 + if (!Objects.equals(assignExecUser, UserContext.get().getUserUuid())) { + userContext = UserContext.get().copy(); + } JSONArray errorMessageList = new JSONArray(); boolean flag = false; List jobIdList = new ArrayList<>(); @@ -333,6 +342,9 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { flag = true; } } + if (userContext != null && !Objects.equals(userContext.getUserUuid(), UserContext.get().getUserUuid())) { + UserContext.init(userContext); + } // 如果有一个作业创建有异常,则根据失败策略执行操作 if (flag) { ProcessTaskStepDataVo processTaskStepDataVo = new ProcessTaskStepDataVo(); @@ -371,7 +383,6 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { } } } - IProcessStepHandlerCrossoverUtil processStepHandlerCrossoverUtil = CrossoverServiceFactory.getApi(IProcessStepHandlerCrossoverUtil.class); /* 触发通知 **/ processStepHandlerCrossoverUtil.notify(processTaskStepVo, AutoexecNotifyTriggerType.CREATE_JOB_FAILED); } else {