Commit 0ce0c3f3d2c6a82550eaf14c64798c50557d3510

Authored by YunaiV
1 parent 87adf15a

【功能修复】工作流:bpmnBytes 在非 UTF-8 环境下,可能存在乱码的问题

yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/definition/BpmModelConvert.java
@@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModel @@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModel
13 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO; 13 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO;
14 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmCategoryDO; 14 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmCategoryDO;
15 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO; 15 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
  16 +import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
16 import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO; 17 import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO;
17 import org.flowable.common.engine.impl.db.SuspensionState; 18 import org.flowable.common.engine.impl.db.SuspensionState;
18 import org.flowable.engine.repository.Deployment; 19 import org.flowable.engine.repository.Deployment;
@@ -55,7 +56,7 @@ public interface BpmModelConvert { @@ -55,7 +56,7 @@ public interface BpmModelConvert {
55 BpmModelMetaInfoRespDTO metaInfo = buildMetaInfo(model); 56 BpmModelMetaInfoRespDTO metaInfo = buildMetaInfo(model);
56 BpmModelRespVO modelVO = buildModel0(model, metaInfo, null, null, null, null); 57 BpmModelRespVO modelVO = buildModel0(model, metaInfo, null, null, null, null);
57 if (ArrayUtil.isNotEmpty(bpmnBytes)) { 58 if (ArrayUtil.isNotEmpty(bpmnBytes)) {
58 - modelVO.setBpmnXml(new String(bpmnBytes)); 59 + modelVO.setBpmnXml(BpmnModelUtils.getBpmnXml(bpmnBytes));
59 } 60 }
60 return modelVO; 61 return modelVO;
61 } 62 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.util; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.util;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.util.ArrayUtil; 4 import cn.hutool.core.util.ArrayUtil;
  5 +import cn.hutool.core.util.StrUtil;
5 import cn.iocoder.yudao.framework.common.util.number.NumberUtils; 6 import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
6 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants; 7 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants;
7 import org.flowable.bpmn.converter.BpmnXMLConverter; 8 import org.flowable.bpmn.converter.BpmnXMLConverter;
@@ -108,7 +109,14 @@ public class BpmnModelUtils { @@ -108,7 +109,14 @@ public class BpmnModelUtils {
108 return null; 109 return null;
109 } 110 }
110 BpmnXMLConverter converter = new BpmnXMLConverter(); 111 BpmnXMLConverter converter = new BpmnXMLConverter();
111 - return new String(converter.convertToXML(model)); 112 + return StrUtil.utf8Str(converter.convertToXML(model));
  113 + }
  114 +
  115 + public static String getBpmnXml(byte[] bpmnBytes) {
  116 + if (ArrayUtil.isEmpty(bpmnBytes)) {
  117 + return null;
  118 + }
  119 + return StrUtil.utf8Str(bpmnBytes);
112 } 120 }
113 121
114 // ========== 遍历相关的方法 ========== 122 // ========== 遍历相关的方法 ==========