• 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
  • 相关阅读:
    适配器模式
    Selenium自动化测试-设置元素等待
    远程桌面连接下拉框IP地址删除
    【数学建模学习笔记【集训十天】之第三天】
    PreparedStatement 模拟并解决sql注入
    (数据科学学习手札156)地图可视化神器kepler.gl 3.0版本发布
    未授权访问:MongoDB未授权访问漏洞
    scss文件自动导入
    【ROS机器人】Autolabor OS最新版本已上线,免费下载
    macOS配置Maven和环境变量
  • 原文地址:https://blog.csdn.net/u010568976/article/details/132676490