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


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

    1、通过xml先发布模型

    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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    注意这里的addModelEditorSource addModelEditorSourceExtra获取。

     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());
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
  • 相关阅读:
    javaScript(js)手写原生任务定时器源码
    Java类加载机制(JVM)
    Haproxy搭建 Web 群集实现负载均衡
    Linux启动失败进入dracut 紧急模式处理思路
    模拟信号隔离器在水处理控制系统中的应用方案
    dreamweaver作业静态HTML网页设计——家乡海南旅游网站
    SSD1306 oled显示屏的驱动SPI接口
    【脚本】生成已划分好训练集、验证集、测试集的数据集对应的train.txt、val.txt、test.txt【包含图像的绝对地址】
    2023-10-22
    SE语法总结博文(附思维导图)
  • 原文地址:https://blog.csdn.net/u010568976/article/details/132676490