获取位置:

目前是有三个位置可以获取

  1. BPMN.js的监听事件 解析bpmn xml文件
  2. 部署后的流程定义
  3. 从官方提供的接口中获取(Camunda中获取bpmn的扩展信息,其他的流程引擎不清楚是否可以)

xPath解析BPMN获取任务节点

本次使用hutool的XmlUtil工具类,使用Xpath表达式解析

		Document document = XmlUtil.readXML(camundaSubStr);
        NodeList value3 = XmlUtil.getNodeListByXPath("//*[name()='bpmn:userTask']", document);
        for (int i = 0 ; i < value3.getLength() ; i ++){
            System.out.println(value3.item(i).getNodeName()+"---"+value3.item(i).getAttributes().getNamedItem("id")+"---"+value3.item(i).getAttributes().getNamedItem("name"));
        }

附加测试的xml内容:包含了自流程用户任务和自身的用户任务

String camundaSubStr = "<?xml version=\\\\"1.0\\\\" encoding=\\\\"UTF-8\\\\"?>\\\\n" +
                "<bpmn:definitions xmlns:bpmn=\\\\"<http://www.omg.org/spec/BPMN/20100524/MODEL\\\\>" xmlns:bpmndi=\\\\"<http://www.omg.org/spec/BPMN/20100524/DI\\\\>" xmlns:dc=\\\\"<http://www.omg.org/spec/DD/20100524/DC\\\\>" xmlns:di=\\\\"<http://www.omg.org/spec/DD/20100524/DI\\\\>" xmlns:modeler=\\\\"<http://camunda.org/schema/modeler/1.0\\\\>" id=\\\\"Definitions_0wffco2\\\\" targetNamespace=\\\\"<http://bpmn.io/schema/bpmn\\\\>" exporter=\\\\"Camunda Modeler\\\\" exporterVersion=\\\\"4.12.0\\\\" modeler:executionPlatform=\\\\"Camunda Platform\\\\" modeler:executionPlatformVersion=\\\\"7.15.0\\\\">\\\\n" +
                "  <bpmn:process id=\\\\"Process_05xw307\\\\" isExecutable=\\\\"true\\\\">\\\\n" +
                "    <bpmn:startEvent id=\\\\"StartEvent_1\\\\">\\\\n" +
                "      <bpmn:outgoing>Flow_0rf0r4b</bpmn:outgoing>\\\\n" +
                "    </bpmn:startEvent>\\\\n" +
                "    <bpmn:sequenceFlow id=\\\\"Flow_0rf0r4b\\\\" sourceRef=\\\\"StartEvent_1\\\\" targetRef=\\\\"Activity_1hk94bh\\\\" />\\\\n" +
                "    <bpmn:userTask id=\\\\"Activity_1hk94bh\\\\" name=\\\\"test\\\\">\\\\n" +
                "      <bpmn:incoming>Flow_0rf0r4b</bpmn:incoming>\\\\n" +
                "      <bpmn:outgoing>Flow_1dffyci</bpmn:outgoing>\\\\n" +
                "    </bpmn:userTask>\\\\n" +
                "    <bpmn:sequenceFlow id=\\\\"Flow_1dffyci\\\\" sourceRef=\\\\"Activity_1hk94bh\\\\" targetRef=\\\\"bb\\\\" />\\\\n" +
                "    <bpmn:subProcess id=\\\\"Activity_0v9vkib\\\\">\\\\n" +
                "      <bpmn:incoming>Flow_0581fjr</bpmn:incoming>\\\\n" +
                "      <bpmn:startEvent id=\\\\"Event_0kuh5dk\\\\">\\\\n" +
                "        <bpmn:outgoing>Flow_1j7bsy6</bpmn:outgoing>\\\\n" +
                "      </bpmn:startEvent>\\\\n" +
                "      <bpmn:sequenceFlow id=\\\\"Flow_1j7bsy6\\\\" sourceRef=\\\\"Event_0kuh5dk\\\\" targetRef=\\\\"Activity_15c0dbw\\\\" />\\\\n" +
                "      <bpmn:userTask id=\\\\"Activity_15c0dbw\\\\" name=\\\\"cc\\\\">\\\\n" +
                "        <bpmn:incoming>Flow_1j7bsy6</bpmn:incoming>\\\\n" +
                "        <bpmn:outgoing>Flow_1qqzoi4</bpmn:outgoing>\\\\n" +
                "      </bpmn:userTask>\\\\n" +
                "      <bpmn:endEvent id=\\\\"Event_0ti975g\\\\">\\\\n" +
                "        <bpmn:incoming>Flow_1qqzoi4</bpmn:incoming>\\\\n" +
                "      </bpmn:endEvent>\\\\n" +
                "      <bpmn:sequenceFlow id=\\\\"Flow_1qqzoi4\\\\" sourceRef=\\\\"Activity_15c0dbw\\\\" targetRef=\\\\"Event_0ti975g\\\\" />\\\\n" +
                "    </bpmn:subProcess>\\\\n" +
                "    <bpmn:sequenceFlow id=\\\\"Flow_0581fjr\\\\" sourceRef=\\\\"bb\\\\" targetRef=\\\\"Activity_0v9vkib\\\\" />\\\\n" +
                "    <bpmn:userTask id=\\\\"bb\\\\" name=\\\\"bb\\\\">\\\\n" +
                "      <bpmn:incoming>Flow_1dffyci</bpmn:incoming>\\\\n" +
                "      <bpmn:outgoing>Flow_0581fjr</bpmn:outgoing>\\\\n" +
                "    </bpmn:userTask>\\\\n" +
                "  </bpmn:process>\\\\n" +
                "  <bpmndi:BPMNDiagram id=\\\\"BPMNDiagram_1\\\\">\\\\n" +
                "    <bpmndi:BPMNPlane id=\\\\"BPMNPlane_1\\\\" bpmnElement=\\\\"Process_05xw307\\\\">\\\\n" +
                "      <bpmndi:BPMNEdge id=\\\\"Flow_0rf0r4b_di\\\\" bpmnElement=\\\\"Flow_0rf0r4b\\\\">\\\\n" +
                "        <di:waypoint x=\\\\"215\\\\" y=\\\\"117\\\\" />\\\\n" +
                "        <di:waypoint x=\\\\"270\\\\" y=\\\\"117\\\\" />\\\\n" +
                "      </bpmndi:BPMNEdge>\\\\n" +
                "      <bpmndi:BPMNEdge id=\\\\"Flow_1dffyci_di\\\\" bpmnElement=\\\\"Flow_1dffyci\\\\">\\\\n" +
                "        <di:waypoint x=\\\\"370\\\\" y=\\\\"117\\\\" />\\\\n" +
                "        <di:waypoint x=\\\\"430\\\\" y=\\\\"117\\\\" />\\\\n" +
                "      </bpmndi:BPMNEdge>\\\\n" +
                "      <bpmndi:BPMNEdge id=\\\\"Flow_0581fjr_di\\\\" bpmnElement=\\\\"Flow_0581fjr\\\\">\\\\n" +
                "        <di:waypoint x=\\\\"530\\\\" y=\\\\"117\\\\" />\\\\n" +
                "        <di:waypoint x=\\\\"560\\\\" y=\\\\"117\\\\" />\\\\n" +
                "      </bpmndi:BPMNEdge>\\\\n" +
                "      <bpmndi:BPMNShape id=\\\\"_BPMNShape_StartEvent_2\\\\" bpmnElement=\\\\"StartEvent_1\\\\">\\\\n" +
                "        <dc:Bounds x=\\\\"179\\\\" y=\\\\"99\\\\" width=\\\\"36\\\\" height=\\\\"36\\\\" />\\\\n" +
                "      </bpmndi:BPMNShape>\\\\n" +
                "      <bpmndi:BPMNShape id=\\\\"Activity_0cpirn3_di\\\\" bpmnElement=\\\\"Activity_1hk94bh\\\\">\\\\n" +
                "        <dc:Bounds x=\\\\"270\\\\" y=\\\\"77\\\\" width=\\\\"100\\\\" height=\\\\"80\\\\" />\\\\n" +
                "      </bpmndi:BPMNShape>\\\\n" +
                "      <bpmndi:BPMNShape id=\\\\"Activity_14c6lk3_di\\\\" bpmnElement=\\\\"bb\\\\">\\\\n" +
                "        <dc:Bounds x=\\\\"430\\\\" y=\\\\"77\\\\" width=\\\\"100\\\\" height=\\\\"80\\\\" />\\\\n" +
                "      </bpmndi:BPMNShape>\\\\n" +
                "      <bpmndi:BPMNShape id=\\\\"Activity_0v9vkib_di\\\\" bpmnElement=\\\\"Activity_0v9vkib\\\\" isExpanded=\\\\"true\\\\">\\\\n" +
                "        <dc:Bounds x=\\\\"560\\\\" y=\\\\"50\\\\" width=\\\\"350\\\\" height=\\\\"200\\\\" />\\\\n" +
                "      </bpmndi:BPMNShape>\\\\n" +
                "      <bpmndi:BPMNEdge id=\\\\"Flow_1j7bsy6_di\\\\" bpmnElement=\\\\"Flow_1j7bsy6\\\\">\\\\n" +
                "        <di:waypoint x=\\\\"636\\\\" y=\\\\"150\\\\" />\\\\n" +
                "        <di:waypoint x=\\\\"690\\\\" y=\\\\"150\\\\" />\\\\n" +
                "      </bpmndi:BPMNEdge>\\\\n" +
                "      <bpmndi:BPMNEdge id=\\\\"Flow_1qqzoi4_di\\\\" bpmnElement=\\\\"Flow_1qqzoi4\\\\">\\\\n" +
                "        <di:waypoint x=\\\\"790\\\\" y=\\\\"150\\\\" />\\\\n" +
                "        <di:waypoint x=\\\\"852\\\\" y=\\\\"150\\\\" />\\\\n" +
                "      </bpmndi:BPMNEdge>\\\\n" +
                "      <bpmndi:BPMNShape id=\\\\"Event_0kuh5dk_di\\\\" bpmnElement=\\\\"Event_0kuh5dk\\\\">\\\\n" +
                "        <dc:Bounds x=\\\\"600\\\\" y=\\\\"132\\\\" width=\\\\"36\\\\" height=\\\\"36\\\\" />\\\\n" +
                "      </bpmndi:BPMNShape>\\\\n" +
                "      <bpmndi:BPMNShape id=\\\\"Activity_0jz8ou7_di\\\\" bpmnElement=\\\\"Activity_15c0dbw\\\\">\\\\n" +
                "        <dc:Bounds x=\\\\"690\\\\" y=\\\\"110\\\\" width=\\\\"100\\\\" height=\\\\"80\\\\" />\\\\n" +
                "      </bpmndi:BPMNShape>\\\\n" +
                "      <bpmndi:BPMNShape id=\\\\"Event_0ti975g_di\\\\" bpmnElement=\\\\"Event_0ti975g\\\\">\\\\n" +
                "        <dc:Bounds x=\\\\"852\\\\" y=\\\\"132\\\\" width=\\\\"36\\\\" height=\\\\"36\\\\" />\\\\n" +
                "      </bpmndi:BPMNShape>\\\\n" +
                "    </bpmndi:BPMNPlane>\\\\n" +
                "  </bpmndi:BPMNDiagram>\\\\n" +
                "</bpmn:definitions>\\\\n";