From 1f7d8b52af037fcb9bd0fec3e4c1ee3a659c2a13 Mon Sep 17 00:00:00 2001 From: songgaoshuai Date: Mon, 5 Jun 2023 13:01:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=EF=BC=8C=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9E=8B=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E5=AF=BC=E5=87=BA=EF=BC=8C=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E9=9D=9E=E7=A9=BA=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/ruoyi-workflow/pom.xml | 41 ++++--------------- .../service/impl/ActModelServiceImpl.java | 26 +++++++++--- 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/pom.xml b/ruoyi-modules/ruoyi-workflow/pom.xml index ca167ecc8..fafc0c897 100644 --- a/ruoyi-modules/ruoyi-workflow/pom.xml +++ b/ruoyi-modules/ruoyi-workflow/pom.xml @@ -17,8 +17,7 @@ - 2.11.0 - 1.10 + 6.8.0 @@ -35,49 +34,25 @@ - - org.flowable - flowable-ui-modeler-rest - 6.8.0 - org.flowable flowable-image-generator + + + org.flowable + flowable-json-converter + ${flowable.version} + + org.dromara ruoyi-system - - - org.apache.xmlgraphics - batik-all - ${batik.version} - - - xalan - xalan - - - - - - - xerces - xercesImpl - ${xerces.version} - - - org.flowable - flowable-json-converter - 6.8.0 - compile - - diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java index 020aaa1a3..70032f85a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java @@ -108,7 +108,7 @@ public class ActModelServiceImpl implements IActModelService { String description = modelBo.getDescription(); Model checkModel = repositoryService.createModelQuery().modelKey(key).modelTenantId(LoginHelper.getTenantId()).singleResult(); if (ObjectUtil.isNotNull(checkModel)) { - throw new ServiceException("模型key已存在!"); + throw new ServiceException("模型key已存在!"); } // 1. 初始空的模型 Model model = repositoryService.newModel(); @@ -213,13 +213,17 @@ public class ActModelServiceImpl implements IActModelService { String key = values.getFirst("key"); List list = repositoryService.createModelQuery().modelKey(key).modelTenantId(LoginHelper.getTenantId()).list(); list.stream().filter(e -> !e.getId().equals(model.getId())).findFirst().ifPresent(e -> { - throw new ServiceException("模型key已存在!"); + throw new ServiceException("模型key已存在!"); }); model.setKey(key); repositoryService.saveModel(model); byte[] xmlBytes = WorkflowUtils.bpmnJsonToXmlBytes(Objects.requireNonNull(values.getFirst("json_xml")).getBytes(StandardCharsets.UTF_8)); if (ArrayUtil.isEmpty(xmlBytes)) { - throw new ServiceException("模型不能为空!"); + throw new ServiceException("模型不能为空!"); + } + byte[] toXmlBytes = WorkflowUtils.bpmnJsonToXmlBytes(xmlBytes); + if (ArrayUtil.isEmpty(toXmlBytes)) { + throw new ServiceException("模型不能为空,请至少设计一条主线流程!"); } repositoryService.addModelEditorSource(model.getId(), xmlBytes); return true; @@ -244,6 +248,10 @@ public class ActModelServiceImpl implements IActModelService { if (ArrayUtil.isEmpty(xmlBytes)) { throw new ServiceException("模型数据为空,请先设计流程定义模型,再进行部署!"); } + byte[] toXmlBytes = WorkflowUtils.bpmnJsonToXmlBytes(xmlBytes); + if (ArrayUtil.isEmpty(toXmlBytes)) { + throw new ServiceException("模型不能为空,请至少设计一条主线流程!"); + } // 查询模型的基本信息 Model model = repositoryService.getModel(id); // xml资源的名称 ,对应act_ge_bytearray表中的name_字段 @@ -287,11 +295,17 @@ public class ActModelServiceImpl implements IActModelService { String zipName = "模型不存在"; //查询模型基本信息 Model model = repositoryService.getModel(modelId); + byte[] xmlBytes = repositoryService.getModelEditorSource(modelId); if (ObjectUtil.isNotNull(model)) { - // 查询流程定义模型的json字节码 - byte[] xmlBytes = repositoryService.getModelEditorSource(modelId); - if (ArrayUtil.isEmpty(xmlBytes)) { + byte[] toXmlBytes = WorkflowUtils.bpmnJsonToXmlBytes(xmlBytes); + if (ArrayUtil.isEmpty(toXmlBytes)) { + zipName = "模型不能为空,请至少设计一条主线流程!"; + zos.putNextEntry(new ZipEntry(zipName + ".txt")); + zos.write(zipName.getBytes(StandardCharsets.UTF_8)); + } else if (ArrayUtil.isEmpty(xmlBytes)) { zipName = "模型数据为空,请先设计流程定义模型,再进行部署!"; + zos.putNextEntry(new ZipEntry(zipName + ".txt")); + zos.write(zipName.getBytes(StandardCharsets.UTF_8)); } else { String fileName = model.getName() + "-" + model.getKey(); // 压缩包文件名