From 3f3768ca455a6484430ee1beaf2993e389373175 Mon Sep 17 00:00:00 2001 From: konbai <1527468660@qq.com> Date: Sun, 15 Jan 2023 17:26:40 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E5=B7=A5=E4=BD=9C=E6=B5=81=E6=A8=A1?= =?UTF-8?q?=E5=9D=97):=20=E4=BC=98=E5=8C=96=20=E6=B5=81=E7=A8=8B=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E4=BF=A1=E6=81=AF=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E5=87=8F=E5=B0=91=E6=A8=A1=E5=9E=8B=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=AC=A1=E6=95=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/flowable/utils/ModelUtils.java | 11 ++++++++ .../service/impl/WfProcessServiceImpl.java | 25 +++++++------------ 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ModelUtils.java b/ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ModelUtils.java index ebe0d272..a0c0d34e 100644 --- a/ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ModelUtils.java +++ b/ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ModelUtils.java @@ -1,6 +1,7 @@ package com.ruoyi.flowable.utils; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import org.flowable.bpmn.converter.BpmnXMLConverter; import org.flowable.bpmn.model.Process; import org.flowable.bpmn.model.*; @@ -26,6 +27,16 @@ public class ModelUtils { return bpmnXMLConverter.convertToBpmnModel(new StringStreamSource(xml), false, false); } + /** + * bpmnModel转xml字符串 + * + * @param bpmnModel bpmnModel对象 + * @return xml字符串 + */ + public static String getBpmnXmlStr(BpmnModel bpmnModel) { + return StrUtil.utf8Str(getBpmnXml(bpmnModel)); + } + /** * bpmnModel转xml对象 * 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 8e40b73a..982c8fac 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 @@ -546,14 +546,10 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce @Override public String selectFormContent(String definitionId, String deployId) { - InputStream inputStream = repositoryService.getProcessModel(definitionId); - String bpmnString; - try { - bpmnString = IoUtil.readUtf8(inputStream); - } catch (IORuntimeException exception) { + BpmnModel bpmnModel = repositoryService.getBpmnModel(definitionId); + if (ObjectUtil.isNull(bpmnModel)) { throw new RuntimeException("获取流程设计失败!"); } - BpmnModel bpmnModel = ModelUtils.getBpmnModel(bpmnString); StartEvent startEvent = ModelUtils.getStartEvent(bpmnModel); WfDeployFormVo deployFormVo = deployFormMapper.selectVoOne(new LambdaQueryWrapper() .eq(WfDeployForm::getDeployId, deployId) @@ -634,12 +630,13 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce if (taskIns == null) { throw new ServiceException("没有可办理的任务!"); } - InputStream inputStream = repositoryService.getProcessModel(taskIns.getProcessDefinitionId()); - detailVo.setBpmnXml(IoUtil.readUtf8(inputStream)); + // 获取Bpmn模型信息 + BpmnModel bpmnModel = repositoryService.getBpmnModel(taskIns.getProcessDefinitionId()); + detailVo.setBpmnXml(ModelUtils.getBpmnXmlStr(bpmnModel)); detailVo.setTaskFormData(currTaskFormData(deployId, taskIns)); detailVo.setHistoryProcNodeList(historyProcNodeList(procInsId)); - detailVo.setProcessFormList(processFormList(procInsId, deployId)); - detailVo.setFlowViewer(getFlowViewer(procInsId)); + detailVo.setProcessFormList(processFormList(bpmnModel, procInsId, deployId)); + detailVo.setFlowViewer(getFlowViewer(bpmnModel, procInsId)); return detailVo; } @@ -701,10 +698,9 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce /** * 获取历史流程表单信息 */ - private List processFormList(String procInsId, String deployId) { + private List processFormList(BpmnModel bpmnModel, String procInsId, String deployId) { List procFormList = new ArrayList<>(); HistoricProcessInstance historicProcIns = historyService.createHistoricProcessInstanceQuery().processInstanceId(procInsId).includeProcessVariables().singleResult(); - BpmnModel bpmnModel = repositoryService.getBpmnModel(historicProcIns.getProcessDefinitionId()); List activityInstanceList = historyService.createHistoricActivityInstanceQuery() .processInstanceId(procInsId).finished() .activityTypes(CollUtil.newHashSet(BpmnXMLConstants.ELEMENT_EVENT_START, BpmnXMLConstants.ELEMENT_TASK_USER)) @@ -914,7 +910,7 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce * @param procInsId * @return */ - private WfViewerVo getFlowViewer(String procInsId) { + private WfViewerVo getFlowViewer(BpmnModel bpmnModel, String procInsId) { // 构建查询条件 HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery() .processInstanceId(procInsId); @@ -922,9 +918,6 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce if (CollUtil.isEmpty(allActivityInstanceList)) { return new WfViewerVo(); } - // 获取流程发布Id信息 - String processDefinitionId = allActivityInstanceList.get(0).getProcessDefinitionId(); - BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); // 查询所有已完成的元素 List finishedElementList = allActivityInstanceList.stream() .filter(item -> ObjectUtil.isNotNull(item.getEndTime())).collect(Collectors.toList());