diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java index 3f34d29d..51f29519 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java @@ -68,7 +68,7 @@ public class WfProcessController extends BaseController { @SaCheckPermission("workflow:process:start") @PostMapping("/start/{processDefId}") public R start(@PathVariable(value = "processDefId") String processDefId, @RequestBody Map variables) { - processService.startProcess(processDefId, variables); + processService.startProcessByDefId(processDefId, variables); return R.ok("流程启动成功"); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java index f3f12c2b..ec44dbdc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java @@ -34,7 +34,7 @@ public interface IWfProcessService { * @param procDefId 流程定义ID * @param variables 扩展参数 */ - void startProcess(String procDefId, Map variables); + void startProcessByDefId(String procDefId, Map variables); /** * 通过DefinitionKey启动流程 diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java index 052285e5..a0827dc2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java @@ -146,18 +146,11 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce */ @Override @Transactional(rollbackFor = Exception.class) - public void startProcess(String procDefId, Map variables) { + public void startProcessByDefId(String procDefId, Map variables) { try { ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() .processDefinitionId(procDefId).singleResult(); - if (Objects.nonNull(processDefinition) && processDefinition.isSuspended()) { - throw new ServiceException("流程已被挂起,请先激活流程"); - } - // 设置流程发起人Id到流程中 - this.buildProcessVariables(variables); - ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDefId, variables); - // 第一个用户任务为发起人,则自动完成任务 - wfTaskService.startFirstTask(processInstance, variables); + startProcess(processDefinition, variables); } catch (Exception e) { e.printStackTrace(); throw new ServiceException("流程启动错误"); @@ -173,16 +166,9 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce @Transactional(rollbackFor = Exception.class) public void startProcessByDefKey(String procDefKey, Map variables) { try { - if (StringUtils.isNoneBlank(procDefKey)) { - ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() - .processDefinitionKey(procDefKey).latestVersion().singleResult(); - if (processDefinition != null && processDefinition.isSuspended()) { - throw new ServiceException("流程已被挂起,请先激活流程"); - } - this.buildProcessVariables(variables); - ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(procDefKey, variables); - wfTaskService.startFirstTask(processInstance, variables); - } + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() + .processDefinitionKey(procDefKey).latestVersion().singleResult(); + startProcess(processDefinition, variables); } catch (Exception e) { e.printStackTrace(); throw new ServiceException("流程启动错误"); @@ -438,13 +424,20 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce } /** - * 扩展参数构建 - * @param variables 扩展参数 + * 启动流程实例 */ - private void buildProcessVariables(Map variables) { - String userIdStr = LoginHelper.getUserId().toString(); + private void startProcess(ProcessDefinition procDef, Map variables) { + if (ObjectUtil.isNotNull(procDef) && procDef.isSuspended()) { + throw new ServiceException("流程已被挂起,请先激活流程"); + } + // 设置流程发起人Id到流程中 + String userIdStr = TaskUtils.getUserId(); identityService.setAuthenticatedUserId(userIdStr); variables.put(BpmnXMLConstants.ATTRIBUTE_EVENT_START_INITIATOR, userIdStr); + // 发起流程实例 + ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDef.getId(), variables); + // 第一个用户任务为发起人,则自动完成任务 + wfTaskService.startFirstTask(processInstance, variables); }