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

原文地址:https://www.cnblogs.com/yangjiming/p/10972255.html

时间: 2024-10-08 12:31:04

flowable流程资源部署方式的相关文章

2017.2.28 activiti实战--第五章--用户与组及部署管理(二)部署流程资源

学习资料:<Activiti实战> 第五章 用户与组及部署管理(二)部署流程资源 内容概览:讲解流程资源的读取与部署. 5.2 部署流程资源 5.2.1 流程资源 流程资源常用的有以下几种: 1 流程定义文件:拓展名为bpmn20.xml和bpmn 2 流程定义的图片:拓展名为PNG 3 表单文件:拓展名为form 4 规则文件:拓展名为drl 部署流程资源的时候,要注意一点: 引擎会根据不同的拓展名进行不同的处理.bpmn或bpmn20.xml类型的文件,会在ACT_RU_PROCDEF(流

Activiti 流程部署方式 activi 动态部署(高级源码篇)

欢迎加入我们的学习提升群523988350,里面有京东.美团网的技术人员,可以相互交流 Activiti的流程 部署方式有很多种方式,我们可以根据activit工作流引擎提供的ap方式进行部署. 当然了实际需求决定你要使用哪一种api操作,后面的总结详细介绍了使用场景. 下面看一下部署方式. 流程部署的方式在类org.activiti.engine.repository.DeploymentBuilder中定义的部署方接口式如下 : DeploymentBuilder addInputStrea

Activiti 流程部署方式 activi 动态部署(高级源代码篇)

Activiti的流程 部署方式有非常多种方式,我们能够依据activit工作流引擎提供的ap方式进行部署. 当然了实际需求决定你要使用哪一种api操作,后面的总结具体介绍了使用场景. 以下看一下部署方式. 流程部署的方式在类org.activiti.engine.repository.DeploymentBuilder中定义的部署方接口式例如以下 : DeploymentBuilder addInputStream(String resourceName, InputStream inputS

python web服务常见的部署方式

引自 - 全面解读python web 程序的9种部署方式 python有很多web 开发框架,代码写完了,部署上线是个大事,通常来说,web应用一般是三层结构 web server ---->application -----> DB server 主流的web server 一个巴掌就能数出来,apache,lighttpd,nginx,iis application,中文名叫做应用服务,就是你基于某个web framework写的应用代码 DB server 泛指存储服务,web开发中用

Apache Spark探秘:三种分布式部署方式比较

目前Apache Spark支持三种分布式部署方式,分别是standalone.spark on mesos和 spark on YARN,其中,第一种类似于MapReduce 1.0所采用的模式,内部实现了容错性和资源管理,后两种则是未来发展的趋势,部分容错性和资源管理交由统一的资源管理系统完成:让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架,比如MapReduce,公用一个集群资源,最大的好处是降低运维成本和提高资源利用率(资源按需分配).本文将介绍这三种部署方式,并比

全面解读python web 程序的9种部署方式

python有很多web 开发框架,代码写完了,部署上线是个大事,通常来说,web应用一般是三层结构 web server ---->application -----> DB server 主流的web server 一个巴掌就能数出来,apache,lighttpd,nginx,iis application,中文名叫做应用服务,就是你基于某个web framework写的应用代码 DB server 泛指存储服务,web开发中用mysql比较多,最近几年因为网站规模扩大,memcache

剖析微软Hyper-V的最佳部署方式

剖析微软Hyper-V的最佳部署方式 2014-04-24 10:53 布加迪编译 51CTO.com 字号:T | T 微软Hyper-V有两种不同的版本.既可以安装到Windows Server的上面,又可以作为一种独立式虚拟机管理程序来下载和安装.那么,哪种方法更好呢?本文中将权衡每种部署方式的优缺点. AD:51CTO网+ 首届中国APP创新评选大赛火热招募中…… [51CTO精选译文]最近,人们似乎重新对微软的Hyper-V产生了兴趣.这种虚拟机管理程序终于开始成熟起来,它所提供的功能

负载均衡器部署方式和工作原理

概述 负载均衡(Load Balance) 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担.在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求. 负载均衡实现方式分类 1:软件负载均衡技术 该技术适用于一些中小型网站系统,可以满足一般的均衡负载需求.软件

Spark源码分析:多种部署方式之间的区别与联系(1)

从官方的文档我们可以知道,Spark的部署方式有很多种:local.Standalone.Mesos.YARN.....不同部署方式的后台处理进程是不一样的,但是如果我们从代码的角度来看,其实流程都差不多. 从代码中,我们可以得知其实Spark的部署方式其实比官方文档中介绍的还要多,这里我来列举一下: 1.local:这种方式是在本地启动一个线程来运行作业: 2.local[N]:也是本地模式,但是启动了N个线程: 3.local[*]:还是本地模式,但是用了系统中所有的核: 4.local[N