From 472dfc165dee7ef16cf4d7eb8a8e9b9b23063cc9 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Fri, 29 Dec 2023 23:42:29 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E5=AD=90=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E4=B8=AD=E8=AE=BE=E7=BD=AE=E5=8F=91=E8=B5=B7=E4=BA=BA?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/utils/WorkflowUtils.java | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index 0e59b5220..38a81dcc9 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -85,15 +85,29 @@ public class WorkflowUtils { } //解决设计器选择设置流程发起人设置变量有问题 Collection flowElements = bpmnModel.getMainProcess().getFlowElements(); - for (FlowElement flowElement : flowElements) { - if (flowElement instanceof UserTask && INITIATOR_SET.equals(((UserTask) flowElement).getAssignee())) { - ((UserTask) flowElement).setAssignee(INITIATOR_SET_UPDATE); - } - } + repairInitiatorVariable(flowElements); // 2.将bpmnModel转为xml return new BpmnXMLConverter().convertToXML(bpmnModel); } + /** + * 修复发起人节点变量错误问题 + * + * @param flowElements 节点 + */ + private static void repairInitiatorVariable(Collection flowElements) { + for (FlowElement flowElement : flowElements) { + if (flowElement instanceof SubProcess) { + Collection subFlowElements = ((SubProcess) flowElement).getFlowElements(); + repairInitiatorVariable(subFlowElements); + } else { + if (flowElement instanceof UserTask && INITIATOR_SET.equals(((UserTask) flowElement).getAssignee())) { + ((UserTask) flowElement).setAssignee(INITIATOR_SET_UPDATE); + } + } + } + } + /** * xml转为bpmnModel * @@ -153,8 +167,8 @@ public class WorkflowUtils { } FlowElement targetFlowElement = outgoingFlows.get(0).getTargetFlowElement(); - if (!(targetFlowElement instanceof UserTask)) { - throw new ServerException(subtask ? "子流程开始节点后第一个节点必须是用户任务!" : "开始节点后第一个节点必须是用户任务!"); + if (!(targetFlowElement instanceof UserTask) && !subtask) { + throw new ServerException("开始节点后第一个节点必须是用户任务!"); } List endEventList = flowElements.stream().filter(EndEvent.class::isInstance).map(EndEvent.class::cast).collect(Collectors.toList());