首页 > 其他分享 >Activity 流程模型导入导出-activity流程模型导入导出

Activity 流程模型导入导出-activity流程模型导入导出

时间:2024-03-08 15:46:44浏览次数:29  
标签:String 流程 导出 导入 put new model repositoryService name

环境版本

springboot: 2.5.6
activity: 5.22.0

导出

    @RequestMapping("/exportModelXml")
    public void exportModelXml(HttpServletResponse response, @RequestParam String modelId) throws IOException {

        Model model = repositoryService.getModel(modelId);
        if (model == null) {
            throw new TipException("流程模型不存在");
        }
        try (ServletOutputStream outputStream = response.getOutputStream()) {
            BpmnJsonConverter jsonConverter = new BpmnJsonConverter();
            JsonNode editorNode = new ObjectMapper().readTree(repositoryService.getModelEditorSource(model.getId()));
            BpmnModel bpmnModel = jsonConverter.convertToBpmnModel(editorNode);
            BpmnXMLConverter xmlConverter = new BpmnXMLConverter();
            byte[] bpmnBytes = xmlConverter.convertToXML(bpmnModel);
            String name = StringUtils.trim(bpmnModel.getMainProcess().getName());
            String filename = name + ".bpmn20.xml";
            response.reset();
            response.setContentType("text/xml");
            response.setCharacterEncoding("UTF-8");
            String showFileName = URLEncoder.encode(filename, "UTF-8");
            response.setHeader("Content-Disposition", "attachment;fileName=" + showFileName);
            outputStream.write(bpmnBytes);
            outputStream.flush();
        }
    }

导入

    @RequestMapping("/importModelXml")
    public ResultDto createModelByXmlFile(@RequestParam MultipartFile file,
                                          @RequestParam String name,
                                          @RequestParam String description,
                                          @RequestParam String key) throws Exception {
        InputStreamSource inputStreamSource = new InputStreamSource(file.getInputStream());

        // 解析xml文件
        BpmnModel bpmnModel = new BpmnXMLConverter().convertToBpmnModel(inputStreamSource, false, true);

        if (name.length() > 50) {
            throw new TipException("流程名称不能超过50个字符");
        }
        if (key.length() > 50) {
            throw new TipException("流程标识不能超过50个字符");
        }
        ModelQuery modelQuery = repositoryService.createModelQuery();
        if (StrUtil.isNotBlank(key)) {
            modelQuery.modelKey(key);
        }
        int total = modelQuery.list().size();
        if (total > 0) {
            throw new TipException("流程标识不能重复");
        }
        try {
            // 唯一标识
            Model model = repositoryService.newModel();

            model.setKey(key);

            // 名称
            model.setName(name);

            // 分类
//        model.setCategory(key);

            // 版本号
            model.setVersion(1);

            ObjectNode modelObjectNode = new ObjectMapper().createObjectNode();
            modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, name);
            modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, model.getVersion());
            modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);

            // 相关信息
            model.setMetaInfo(modelObjectNode.toString());

            //保存模型,存储数据到表:act_re_model
            repositoryService.saveModel(model);
            BpmnJsonConverter converter = new BpmnJsonConverter();
            ObjectNode modelNode = converter.convertToJson(bpmnModel);
            modelNode.put("id", "canvas");
            modelNode.put("resourceId", "canvas");
            ObjectNode stencilSetNode = objectMapper.createObjectNode();
            stencilSetNode.put("namespace",
                    "http://b3mn.org/stencilset/bpmn2.0#");
            modelNode.put("stencilset", stencilSetNode);
            //更新资源信息到model
            repositoryService.addModelEditorSource(model.getId(), modelNode.toString().getBytes(StandardCharsets.UTF_8));
        } catch (Exception e) {
            e.printStackTrace();
            return returnFail("模型创建失败");
        }
        return returnSuccess();
    }

标签:String,流程,导出,导入,put,new,model,repositoryService,name
From: https://www.cnblogs.com/xiaobaibuai/p/18061111

相关文章

  • mysql 导入的文件大小限制
    本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/323MySQL是一种流行的关系型数据库管理系统,支持导入各种类型的数据文件。然而,在导入文件时,可能会遇到文件大小的限制问题。默认情况下,MySQL的导入文件大小限制为1GB。这是通过m......
  • 自动驾驶测试全流程
    随着汽车电子化和高级辅助驾驶技术的快速发展,自动驾驶作为辅助驾驶技术的高级阶段,已成为全球范围内的一个新的技术研究热点和重点。尤其近年来,自动驾驶在人类交通发展史上取得了里程碑式的进步。随着深度学习和计算机视觉技术的兴起,自动驾驶为提升交通安全与效率提供了新的解决方......
  • 可视化表单流程编辑器为啥好用?
    想要提升办公率、提高数据资源的利用率,可以采用可视化表单流程编辑器的优势特点,实现心中愿望。伴随着社会的进步和发展,提质增效的办公效果一直都是很多职场办公团队的发展需求,作为低代码技术平台服务商,流辰信息团队严守创新研发的理念,为行业的数字化转型发展之路全力护航,提供可视......
  • 逆向实战33——某东登录参数与流程分析(包含滑块)
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!目标网站aHR0cHM6Ly9wYXNzcG9ydC5qZC5jb20vbmV3L2xvZ2luLmFzcHg/UmV0dXJuVXJsPWh0dHBzJTNBJTJGJTJGd3d3L......
  • 静态导入
    静态导入这是直接调用类进行show1方法静态导入:importstaticxx.xx.xx.静态方法;最好在本类中没有重名的时候进行使用先进行类的编写packagecom.shujia.day13;publicclassDemo5{publicstaticvoidshow1(){System.out.println("好好学习,天天向上");......
  • golang项目用k8s部署的流程
    摘要:本文将详细介绍如何使用Kubernetes(K8S)部署一套Golang微服务项目,并给出了完整的实施步骤和相应代码示例,旨在指导刚入行的开发者完成这一任务。一、整体流程下面是使用K8S部署Golang微服务项目的整体流程,我们将在接下来的内容中详细介绍每一步骤。1.准备容器镜像2.创建K8S集......
  • 【Vue】HutoolExcel导出
     最近写Excel导出功能,发现需求有点复杂,这里整理一下思路和解决方案一、需求背景:老系统改造,功能和代码是现成的,预览了一下内容:第一个是有特定样式,比如首行标题,以及红色的列名称 第二个,导出多个Sheet页 第三个,最后多一行放置导出时间 二、技术选型:我非常喜欢用Huto......
  • 六.模块导入和输出格式化
    1.模块导入2.输出格式美化 1.模块导入>>>导入:import文件名调用:文件名.方法名(参数)>>>导入:from文件名import方法名调用:方法名(参数)>>>导入文件内所有方法:from文件名import*  >>>导入:import多层包名.文件名调用:多层包名.文件名.方法名(参数)多层包......
  • 很好用的把Table表格数据通过点击button导出成Excel
    HTML的button按钮点击查看代码<buttonid="btn_download"type="button"class="btnbtn-light"style="margin-left:10px;"onclick="btn_export()"><imgsrc="~/download.svg"alt=&quo......
  • 流程图制作工具和绘图软件Visio2019下载
    Visio2019专业版是微软公司推出的功能强大的专业流程绘制工具,旨在以直观的方式工作,轻松绘制流程图。它可以创建各种流程图、网络图、组织结构图、工程设计以及其他使用现代形状和模板的内容。主要特点:协作共赢:支持多人同时编辑Visio图表,并轻松合并更改。获取实际见解......