|
@@ -0,0 +1,40 @@
|
|
|
+package com.ruoyi.common.utils.bpm;
|
|
|
+
|
|
|
+import cn.hutool.core.util.XmlUtil;
|
|
|
+import org.w3c.dom.Document;
|
|
|
+import org.w3c.dom.Element;
|
|
|
+import org.w3c.dom.NodeList;
|
|
|
+
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+public class XmlDataParserUtils {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 解析流程xml文件内容,得到开始节点和下一个节点
|
|
|
+ * @param xmlData xml内容
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Map<String,String> getStartNodeAndNextNode(String xmlData){
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
+ Document document= XmlUtil.parseXml(xmlData);
|
|
|
+ //获得XML文档根节点
|
|
|
+ Element elementG=XmlUtil.getRootElement(document);
|
|
|
+ //获取bpmn:process节点
|
|
|
+ Element bpmnProcessEvent = XmlUtil.getElement(elementG,"bpmn:process");
|
|
|
+ //获取开始节点并得到开始节点ID
|
|
|
+ Element bpmnStartEvent=XmlUtil.getElement(bpmnProcessEvent,"bpmn:startEvent");
|
|
|
+ String startNode = bpmnStartEvent.getAttribute("id");
|
|
|
+ map.put("startNode",startNode);
|
|
|
+
|
|
|
+ //获取所有序列流(顺序),循环得到开始节点的下一个节点
|
|
|
+ NodeList elementsByTagName = elementG.getElementsByTagName("bpmn:sequenceFlow");
|
|
|
+ for (int i = 0; i < elementsByTagName.getLength(); i++) {
|
|
|
+ if (startNode.equals(elementsByTagName.item(i).getAttributes().getNamedItem("sourceRef").getNodeValue())) {
|
|
|
+ map.put("nextNode",elementsByTagName.item(i).getAttributes().getNamedItem("targetRef").getNodeValue());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+}
|