美文网首页
流程引擎Camunda开发记录(五)获取节点的扩展信息

流程引擎Camunda开发记录(五)获取节点的扩展信息

作者: _花 | 来源:发表于2022-04-19 19:31 被阅读0次

    1.获取camunda的bpmn文件中的扩展信息

        @GetMapping("/bpmn/getExtensionElementsText")
        public ResponseData getExtensionElementsText(BpmnModelParam bpmnModelParam){
            InputStream processModel = ProcessEngines
                    .getDefaultProcessEngine()
                    .getRepositoryService()
                    .getProcessModel("Process_0uz4e7e:11:30b89d94-236f-11ec-82fb-861b7790c7c0");
            BpmnModelInstance bpmnModelInstance = Bpmn.readModelFromStream(processModel);
            // 通过id获取元素
    //        StartEvent startEvent = (StartEvent) bpmnModelInstance.getModelElementById("StartEvent_1");
     
     
            // 通过任务类型查找节点任务
    //        ModelElementType type = bpmnModelInstance.getModel().getType(StartEvent.class);
    //        Collection<ModelElementInstance> taskInstances = bpmnModelInstance.getModelElementsByType(type);
     
            /**
             *  通过类型查找开始节点
             */
            System.out.println("=================获取全局扩展配置信息========================");
            Collection<Process> processCollection = bpmnModelInstance.getModelElementsByType(Process.class);
            for (Process process: processCollection) {
                ExtensionElements extensionElements = process.getExtensionElements();
                Collection<CamundaProperty> properties = extensionElements.getElementsQuery()
                        .filterByType(CamundaProperties.class)
                        .singleResult()
                        .getCamundaProperties();
                for (CamundaProperty property : properties) {
                    String name = property.getCamundaName();
                    System.out.println("process:"+name);
                    String value = property.getCamundaValue();
                    System.out.println("process:"+value);
                }
            }
     
            System.out.println("=================获取开始节点配置信息========================");
            Collection<StartEvent> startEventCollection = bpmnModelInstance.getModelElementsByType(StartEvent.class);
            for (StartEvent startEvent: startEventCollection) {
                ExtensionElements extensionElements = startEvent.getExtensionElements();
                Collection<CamundaProperty> properties = extensionElements.getElementsQuery()
                        .filterByType(CamundaProperties.class)
                        .singleResult()
                        .getCamundaProperties();
                for (CamundaProperty property : properties) {
                    String name = property.getCamundaName();
                    System.out.println(name);
                    String value = property.getCamundaValue();
                    System.out.println(value);
                }
            }
            System.out.println("================获取所有扩展信息=========================");
            Collection<ExtensionElements> extensionElementsCollection = bpmnModelInstance.getModelElementsByType(ExtensionElements.class);
            for (ExtensionElements extensionElements: extensionElementsCollection) {
                Collection<CamundaProperty> properties = extensionElements.getElementsQuery()
                        .filterByType(CamundaProperties.class)
                        .singleResult()
                        .getCamundaProperties();
                for (CamundaProperty property : properties) {
                    String name = property.getCamundaName();
                    System.out.println(name);
                    String value = property.getCamundaValue();
                    System.out.println(value);
                }
            }
            System.out.println("================任务节点=========================");
            Task task = ProcessEngines
                    .getDefaultProcessEngine()
                    .getTaskService()
                    .createTaskQuery()
                    .taskId("926e98fb-239a-11ec-876c-861b7790c7c0").singleResult();
            String taskDefinitionKey = task.getTaskDefinitionKey();
            System.out.println(taskDefinitionKey);
            UserTask userTask = (UserTask) bpmnModelInstance.getModelElementById(taskDefinitionKey);
            ExtensionElements extensionElements = userTask.getExtensionElements();
            Collection<CamundaProperty> properties = extensionElements.getElementsQuery()
                    .filterByType(CamundaProperties.class)
                    .singleResult()
                    .getCamundaProperties();
            for (CamundaProperty property : properties) {
                String name = property.getCamundaName();
                System.out.println(name);
                String value = property.getCamundaValue();
                System.out.println(value);
            }
     
     
    //        StartEvent startEvent = bpmnModelInstance.newInstance(StartEvent.class);
     
    //        ExtensionElements extensionElements = startEvent.getExtensionElements();
    //
    //        Collection<CamundaProperty> properties = extensionElements.getElementsQuery()
    //                .filterByType(CamundaProperties.class)
    //                .singleResult()
    //                .getCamundaProperties();
    //
    //        for (CamundaProperty property : properties) {
    //            String name = property.getCamundaName();
    //            System.out.println(name);
    //            String value = property.getCamundaValue();
    //            System.out.println(value);
    //        }
     
            return new SuccessResponseData();
        }
    

    相关文章

      网友评论

          本文标题:流程引擎Camunda开发记录(五)获取节点的扩展信息

          本文链接:https://www.haomeiwen.com/subject/fgsdjrtx.html