From 54aed467b7e0e991dac18d1af4293ee191068bd2 Mon Sep 17 00:00:00 2001 From: konbai <1527468660@qq.com> Date: Tue, 13 Dec 2022 01:58:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=20=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=8F=91=E8=B5=B7=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=B0=81?= =?UTF-8?q?=E8=A3=85=E5=8F=91=E8=B5=B7=E5=AE=9E=E4=BE=8B=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/WfProcessController.java | 2 +- .../workflow/service/IWfProcessService.java | 2 +- .../service/impl/WfProcessServiceImpl.java | 39 ++++++++----------- 3 files changed, 18 insertions(+), 25 deletions(-) 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); }