activiti 通过xml上传 直接部署模型

通过流程xml 直接先发布模型,然后再通过发布模型之后的流程定义获取bpmn model来创建Model.

1、通过xml先发布模型

bash 复制代码
InputStream bpmnStream = multipartFile.getInputStream()
deployment = repositoryService.createDeployment()
                    .addInputStream(multipartFile.getOriginalFilename(), bpmnStream).deploy();
            List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery()
                    .deploymentId(deployment.getId()).list();
            String processDefinitionId = list.get(0).getId();
            convertToModel(processDefinitionId);

2. 发布之后 通过流程定义获取bpmn model新建model

注意这里的addModelEditorSource addModelEditorSourceExtra获取。

bash 复制代码
 Model modelData = repositoryService.newModel();
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
                .processDefinitionId(processDefinitionId).singleResult();
        InputStream bpmnStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(),
                processDefinition.getResourceName());
        XMLInputFactory xif = XMLInputFactory.newInstance();
        InputStreamReader in = new InputStreamReader(bpmnStream, "UTF-8");
        XMLStreamReader xtr = xif.createXMLStreamReader(in);
        BpmnModel bpmnModel = new BpmnXMLConverter().convertToBpmnModel(xtr);
        BpmnJsonConverter converter = new BpmnJsonConverter();
        com.fasterxml.jackson.databind.node.ObjectNode modelNode = converter.convertToJson(bpmnModel);
        modelData.setKey(processDefinition.getKey());
        modelData.setName(processDefinition.getKey());
        ObjectNode modelObjectNode = objectMapper.createObjectNode();
        modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, processDefinition.getResourceName());
        modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);// 版本
        modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION,processDefinition.getResourceName());
        modelData.setMetaInfo(modelObjectNode.toString());
        repositoryService.saveModel(modelData);
        DefaultProcessDiagramGenerator generator = new DefaultProcessDiagramGenerator();
        generator.generateDiagram(bpmnModel,  new ArrayList<>());
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        IoUtil.copy(bpmnStream, bos);
        byte[] bytes = bos.toByteArray();
        repositoryService.addModelEditorSource(modelData.getId(), modelNode.toString().getBytes("utf-8"));
        repositoryService.addModelEditorSourceExtra(
                modelData.getId(), bytes);
        deploy(modelData.getId());
相关推荐
前网易架构师-高司机9 天前
带标注的驾驶员安全带识别数据集,识别率99.5%,可识别有无系安全带,支持yolo,coco json,pascal voc xml格式
xml·yolo·数据集·交通·安全带
逍遥德9 天前
Maven教程.01- settings.xml 文件<profile>使用详解
xml·java·maven
逍遥德9 天前
Maven教程.03-如何阅读pom.xml文件
xml·java·后端·maven
松叶似针10 天前
Flutter三方库适配OpenHarmony【doc_text】— .docx 解析全流程:从 ZIP 解压到 XML 提取
xml·flutter·harmonyos
松叶似针10 天前
Flutter三方库适配OpenHarmony【doc_text】— parseDocxXml:正则驱动的 XML 文本提取
xml·flutter
2301_7806698611 天前
MyBatis(配置,增删改查,注解与XML两种开发方式)、SpringBoot配置文件(yml简化properties)
xml·spring boot·mybatis·javaweb
强子感冒了13 天前
JSON和XML学习笔记
xml·学习·json
сокол16 天前
【网安-Web渗透测试-漏洞系列】XXE漏洞
xml·web安全·php
树码小子18 天前
Mybatis(13)MyBatis Generator(xml生成器)& Mybatis-Plus初识
xml·mybatis
MX_935922 天前
Spring xml 方式整合第三方框架总结加案例
xml·java·spring