Files
klp-oa/ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ModelUtils.java

54 lines
1.5 KiB
Java
Raw Normal View History

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);
}
/**
* bpmnModel转xml对象
*
* @param bpmnModel bpmnModel对象
* @return xml
*/
public static byte[] getBpmnXml(BpmnModel bpmnModel) {
return bpmnXMLConverter.convertToXML(bpmnModel);
}
/**
* 获取开始节点
*
* @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);
}
}