2022-07-08 21:33:58 +08:00
|
|
|
|
package com.ruoyi.flowable.utils;
|
|
|
|
|
|
|
|
|
|
|
|
import org.flowable.bpmn.converter.BpmnXMLConverter;
|
|
|
|
|
|
import org.flowable.bpmn.model.BpmnModel;
|
|
|
|
|
|
import org.flowable.bpmn.model.FlowElement;
|
|
|
|
|
|
import org.flowable.bpmn.model.Process;
|
|
|
|
|
|
import org.flowable.bpmn.model.StartEvent;
|
|
|
|
|
|
import org.flowable.common.engine.impl.util.io.StringStreamSource;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Collection;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @author KonBAI
|
|
|
|
|
|
* @createTime 2022/3/26 19:04
|
|
|
|
|
|
*/
|
|
|
|
|
|
public class ModelUtils {
|
|
|
|
|
|
|
|
|
|
|
|
private static final BpmnXMLConverter bpmnXMLConverter = new BpmnXMLConverter();
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* xml转bpmnModel对象
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param xml xml
|
|
|
|
|
|
* @return bpmnModel对象
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static BpmnModel getBpmnModel(String xml) {
|
|
|
|
|
|
return bpmnXMLConverter.convertToBpmnModel(new StringStreamSource(xml), false, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-07-19 20:59:32 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* bpmnModel转xml对象
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param bpmnModel bpmnModel对象
|
|
|
|
|
|
* @return xml
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static byte[] getBpmnXml(BpmnModel bpmnModel) {
|
|
|
|
|
|
return bpmnXMLConverter.convertToXML(bpmnModel);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-07-08 21:33:58 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 获取开始节点
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param model bpmnModel对象
|
|
|
|
|
|
* @return 开始节点(未找到开始节点,返回null)
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static StartEvent getStartEvent(BpmnModel model) {
|
|
|
|
|
|
Process process = model.getMainProcess();
|
|
|
|
|
|
Collection<FlowElement> elements = process.getFlowElements();
|
|
|
|
|
|
return (StartEvent) elements.stream()
|
|
|
|
|
|
.filter(flowElement -> flowElement instanceof StartEvent)
|
|
|
|
|
|
.findFirst().orElse(null);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|