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());
相关推荐
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ3 小时前
mapper.xml中的大于等于、小于等于
xml
问水っ1 天前
Qt Creator快速入门 第三版 第17-2章 XML
xml
独断万古他化1 天前
【MyBatis 深度解析】注解操作与 XML 配置:增删改查全流程实现
xml·java·spring·mybatis
odoo中国2 天前
如何在 Odoo 19 中加载演示数据
xml·csv·odoo·odoo 19·odoo 演示数据加载
web守墓人3 天前
【前端】ikun-pptx编辑器前瞻问题五:pptx中的xml命名空间
xml·前端
h7ml3 天前
企业微信回调模式解析:从XML到POJO的自定义JAXB编解码器设计
xml·java·企业微信
Full Stack Developme3 天前
达梦(DM8)对 JSON 与 XML 的使用教程
xml·数据库·json
chilavert3184 天前
技术演进中的开发沉思-304计算机原理:XML
xml·计算机原理
程序猿零零漆6 天前
Spring之旅 - 记录学习 Spring 框架的过程和经验(十一)基于XML方式、注解的声明式事务控制、Spring整合Web环境
xml·学习·spring
科雷软件测试6 天前
推荐几个常用的校验yaml、json、xml、md等多种文件格式的在线网站
xml·html·md·yaml