当前位置: 首页 > news >正文

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);

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());
http://www.lryc.cn/news/155018.html

相关文章:

  • 算法题打卡day56-编辑距离 | 583. 两个字符串的删除操作、72. 编辑距离
  • SQL中的CASE WHEN语句:从基础到高级应用指南
  • 超时取消子线程任务
  • 模块化---common.js
  • VSCode下载、安装及配置、调试的一些过程理解
  • KC705开发板——MGT IBERT测试记录
  • 前端代码优化散记
  • HTML <map> 标签的使用
  • stable diffusion实践操作-大模型介绍
  • W5500-EVB-PICO进行MQTT连接订阅发布教程(十二)
  • 90、00后严选出的数据可视化工具:奥威BI工具
  • 删除maven中出现.lastUpdate结尾的文件
  • Cannot assign to read only property ‘exports‘ of object ‘#<Object>‘
  • Dockerfile中编译、打包、部署spring boot项目
  • 微型计算机原理知识点总结(一)
  • 【postgresql 基础入门】psql客户端的使用方法
  • QTcpSocket发送数据方法
  • select 语句执行顺序
  • PMD 检查java代码:避免将内部数组直接返回给调用者(MethodReturnsInternalArray)
  • ActiveMQ配置初探
  • 【官方中文文档】Mybatis-Spring #示例代码
  • python二级例题
  • 【java】【项目实战】[外卖九]项目优化(缓存)
  • Scala集合常用函数与集合计算简单函数,高级计算函数Map和Reduce等
  • You must install at least one postgresql-client-<version> package
  • 爬虫源码---爬取自己想要看的小说
  • 【AGC】云数据库API9开发问题汇总
  • ASP.NET Core IOC容器
  • 入门力扣自学笔记277 C++ (题目编号:42)(动态规划)
  • SwiftUI实现iPad多任务分屏