zoukankan      html  css  js  c++  java
  • flowable流程资源部署方式

    一. 用flowable Modeler设计好流程图后,有多种资源部署方式

    1. 导出xml,然后部署到flowable数据库中
      public Deployment deployFlow(String filePath) {
              try {
                  DeploymentBuilder deploymentBuilder = repositoryService.createDeployment()
                          .addClasspathResource(filePath);
                  Deployment deployment = deploymentBuilder.deploy();
                  logger.info("成功:部署工作流成:" + filePath);
                  return deployment;
              } catch (Exception e) {
                  logger.error("失败:部署工作流:" + e);
                  return null;
              }
          }
    2. 多个流程模型定义文件,即xml打包成zip/bar,多个资源文件一起部署
      InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/approve.zip"); 
      ZipInputStream zipInputStream = new ZipInputStream(in);
      Deployment deployment = processEngine.getRepositoryService()//获取流程定义和部署对象相关的Service  
                      .createDeployment()//创建部署对象 
                      .addZipInputStream(zipInputStream)//使用zip方式部署,将approve.bpmn和approve.png压缩成zip格式的文件  
                      .deploy();//完成部署
      System.out.println("部署ID:"+deployment.getId());
      System.out.println("部署时间:"+deployment.getDeploymentTime());
    3. Model方式部署,设计器中的发布就是用的此方法
      Model modelData =modelService.getModel(modelId);
      byte[] bytes = modelService.getBpmnXML(modelData);
      if(bytes==null){
          res.put("error","模型数据为空,请先设计流程并成功保存,再进行发布。");
          return res;
      }
      
      BpmnModel model = modelService.getBpmnModel(modelData);
      if(model.getProcesses().size()==0){
          res.put("error","数据模型不符要求,请至少设计一条主线流程。");
          return res;
      }
      byte[] bpmnBytes = new BpmnXMLConverter().convertToXML(model);
      String processName = modelData.getName()+".bpmn20.xml";
      Deployment deployment = repositoryService.createDeployment()
              .name(modelData.getName())
              .addBytes(processName,bpmnBytes)
              .deploy();
    4. 你也可以用代码创建bpmnModel模型,然后用以下代码进行部署
      repositoryService.createDeployment().addBpmnModel("bpmnModel", bpmnModel).deploy();  
    5. 其他部署方式详细参考flowable源码

           

    二. 部署相关的表

    1. act_re_deployment:流程模型部署对象表。
       每部署一次生成一条记录,首先生成这条数据,它的id主键将会被act_re_procdef和act_ge_bytearray作为外键。
    2. act_re_procdef:流程定义表。
      一次部署可能采用zip/bar进行部署,里面是有多份流程定义文件xml的,这时候act_re_deployment只有一条部署信息,但act_re_procdef有多个记录(一个流程定义对应一条)
      ,这个表有DEPLOYMENT_ID_外键字段,用它关联act_re_deployment。
    3. act_ge_bytearray:资源文件表。
      流程模型资源文件的真正存放地方,它每部署一次就会产生2条记录,一条是关于bpmn规范的文件内容存放在BYTES字段中,另一条是图片信息,采用二进制格式存储。
      提示:可以部署后解析bpmn文件的内容自动生成流程图,实现流程图的跟踪线路。
    4. act_re_model:这张表,在xml进行部署时,它没有内容(flowable放弃了此表改用act_de_model保存流程模型信息)

    参考文章:https://blog.csdn.net/zhongzk69/article/details/90737302

  • 相关阅读:
    Nginx 学习笔记(一)如何配置一个安全的HTTPS网站服务器
    Ubuntu(16.04.2)学习笔记(一)如何解决dpkg: error processing install-info
    Linux 命令详解(八)Systemd 入门教程:实战篇
    Linux 命令详解(七)Systemd 入门教程:命令篇
    Linux 命令详解(六)Linux 守护进程的启动方法
    PHP7 学习笔记(四)PHP PSR-4 Autoloader 自动加载
    PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题
    WorkerMan 入门学习之(三)基础教程-Timer类的使用
    WorkerMan 入门学习之(二)基础教程-Connection类的使用
    数字证书相关知识结构PKI/PMI基本概念、组成部分、工作原理
  • 原文地址:https://www.cnblogs.com/yangjiming/p/10972255.html
Copyright © 2011-2022 走看看