BPM 模型重构 2:导入流程时,只填写 name、description、key

This commit is contained in:
YunaiV
2022-01-11 21:06:54 +08:00
parent c4950e1b13
commit 62b720a5d0
6 changed files with 52 additions and 16 deletions

View File

@ -2,10 +2,13 @@ package cn.iocoder.yudao.framework.activiti.core.util;
import cn.hutool.core.util.ReflectUtil;
import com.alibaba.ttl.TransmittableThreadLocal;
import org.activiti.bpmn.converter.BpmnXMLConverter;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.impl.identity.Authentication;
import org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntityImpl;
import org.activiti.engine.impl.persistence.entity.HistoricScopeInstanceEntityImpl;
import org.activiti.engine.impl.util.io.StringStreamSource;
/**
* Activiti 工具类
@ -37,4 +40,25 @@ public class ActivitiUtils {
Authentication.setAuthenticatedUserId(null);
}
// ========== BPMN XML 相关 ==========
/**
* 替换 BPMN XML 主流程的 id 和 name 属性
*
* @param bpmnXml 原始的 BPMN XML 字符串
* @param id 编号,对应到 XML 实际是 key 属性
* @param name 名字
* @return 新的 BPMN XML 的字节数组
*/
public static byte[] replaceBpmnMainProcessIdAndName(String bpmnXml, String id, String name) {
// 转换成 BpmnModel 对象
BpmnXMLConverter converter = new BpmnXMLConverter();
BpmnModel bpmnModel = converter.convertToBpmnModel(new StringStreamSource(bpmnXml), true, true);
// 设置 id 和 name 属性
bpmnModel.getMainProcess().setId(id);
bpmnModel.getMainProcess().setName(name);
// 转换回字节数组
return converter.convertToXML(bpmnModel);
}
}