004 流程定义

一 .概述

  在前面,我们学习了流程的部署,我们知道在流程部署之后,生成了一个流程定义的信息.

  本节我们来了解一下流程定义的内容.



二 .流程定义

  流程定义我们可以理解为一个流程的基本信息,我们通过流程图的id来确定到底是哪一个流程,这个流程图的id最终被映射到流程定义的key上面.

我们从上面的数据库的信息就能看到这一点.



三 .流程升级

  当我们的项目升级的时候,我们的流程可能回升级,但是我们往往会维护一个固定的key表示一个流程.

  本次,我们重复运行我们的流程部署,看看这个表的改变.

我们看到,我们的key是相同的,但是版本升级了.

  因此,在这里我们需要记住一点:

  我们以后都是通过流程的key来确定一种流程的.



二 .流程的查看

  我们的项目之中常常会出现这样的需求,就查看我们的流程. 

    ProcessEngines.getDefaultProcessEngine()
            .getRepositoryService()
                .createProcessDefinitionQuery()
                    .processDefinitionName("leave")
                        .list().forEach((e)->{
                            System.out.println("流程定义的名字是="+e.getName());
                            System.out.println("流程定义的版本号是="+e.getVersion());
                        });

结果是:

流程定义的名字是=leave
流程定义的版本号是=1
流程定义的名字是=leave
流程定义的版本号是=2

我们发现,我们能够轻松的知道我们的项目之中有的所有的流程.



三 .查询最新版本的流程

  在我们项目之中,我们使用的都是最新版本的流程.因此,我们需要需要获取到最新版本的流程.

/// 获取最新版本的流程
    @Test
    public void getLastestVersionProcessDef(){
        // 获取所有的流程,按照版本号从小到大排列
        List<ProcessDefinition> list = ProcessEngines.getDefaultProcessEngine()
            .getRepositoryService()
                .createProcessDefinitionQuery()
                    .orderByProcessDefinitionVersion().asc()
                        .list();

        Map<String,ProcessDefinition> result = new HashMap<>();

        list.forEach((e)->{
            result.put(e.getKey(), e);
        });

        // 现在map之中存在的都是最新版本的流程定义了
        // 其中key 就是流程的key

        for(Entry<String, ProcessDefinition> model:result.entrySet()){
            System.out.println("key="+model.getKey()+",我的版本号是=="+model.getValue().getVersion());
        }
    }

看看结果:  

key=leave,我的版本号是==2


四.删除流程定义

  在前面我们知道了如果增加一个流程定义(使用流程部署),查看流程定义.下面我们需要知道如何删除一个流程定义. 

    ProcessEngines.getDefaultProcessEngine().getRepositoryService()
            // 第二个参数决定是否级联删除
            .deleteDeployment("1111",true);


五 .流程修改

  在activiti之中,不支持流程的修改,我们可以部署一个相同key的流程覆盖之前的流程.

  这样之前的流程还是可以运行的,只要我们不启动原先的流程定义,慢慢流程就会全部变成新的流程.

  这样也能保证已经启动的原流程可以正确的运行.



六 .流程定义相关联的资源

  我们知道,流程部署的时候,顺带有一个流程xml和一个流程图.

  我们怎么获取呢?  

//ProcessEngines.getDefaultProcessEngine().getRepositoryService()
            // 获取流程定义的xml
            //.getResourceAsStream(deploymentId, resourceName)
            //
                // 获取流程图
            //.getProcessDiagram("")

我们只要知道流程部署的id ,就能轻松的知道这些附带的资源

原文地址:https://www.cnblogs.com/trekxu/p/9607319.html

时间: 2024-10-09 09:37:54

004 流程定义的相关文章

03-查询流程定义部署

//查询流程部署 @Test public void queryDeployment() { RepositoryService repositoryService=this.processEngine.getRepositoryService(); ProcessDefinitionQuery definitionQuery= repositoryService.createProcessDefinitionQuery(); String processDefinitionKey="purch

工作流笔记第二天_流程定义的CRUD

0.流程定义的表 -- Deployment 部署对象和流程定义相关的表-- 1.一次部署的多个文件的信息,对于不需要的流程可以删除或修改select * FROM act_re_deployment; -- 部署对象表select * FROM act_re_procdef; -- 流程定义表select * FROM act_ge_bytearray; -- 资源文件表select * FROM act_ge_property; -- 主键生成策略表,下一个流程的编号 1.部署流程定义的三种

15-流程操作(查询和删除部署信息和流程定义信息)

效果如下: 查询部署表 部署对象Deployment也是接口,它的四个方法刚好对应着部署表act_re_deployment的四个字段 查询流程定义列表 假如这个流程图画错了,我不想使用这个流程了,把它删除掉,那就删除部署信息 删除部署信息 流程部署表act_re_deployment里面ID_为1的记录被删除了,并且流程定义表act_re_procdef里面外键DEPLOYMENT_ID_为1的记录也被删除了,因为有外键约束嘛,不可能只删除流程部署表的信息 现在看是没有问题,我来制造一个问题,

Activiti 删除流程定义

package com.mycom.processDefinition; import java.io.InputStream; import java.util.List; import java.util.zip.ZipInputStream; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.repository.De

JBPM(六)——掌握JBPM流程定义语言

一.流程 在JPDL中process元素是每个流程定义的顶级元素,即任何流程定义都必须以如下形式开始和结束 <process> ... </process> process元素拥有的属性: 属性 类型 默认值 是否必须 描述 name 文本 无 必须 展示给用户 key 如省略,则根据name生成 标识不同流程 version 整型 从1开始 同一流程的不同版本 它下的子元素有:description.activities 二.流转控制活动 start--开始活动 state--状

框架 day57 BOS项目练习(流程定义/实例管理,bos用户角色同步activiti用户表组表)

BOS项目笔记第11天 内容: 1.提供新的json文件,修改系统菜单(加入工作流的菜单) 2.流程定义管理(查询.部署流程.查看png流程图片) 3.流程实例管理(查询.查看运行状态) 4.将bos系统中的用户数据和角色数据同步到activiti的用户表和组表 1.    提供新的json文件,修改系统菜单(加入工作流的菜单) 2.    流程定义管理 第一步:创建一个ProcessDefinitionAction,提供list方法,并注入流程引擎对象  查询 @Controller @Sco

Activiti 查询最新版本的流程定义

package com.mycom.processDefinition; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.zip.ZipInputSt

流程定义管理

package com.kite.pd; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.List; import java.util.zip.ZipInputStream; import org.apache.log.output.FileOutputLo

activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义

注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring整合activiti-modeler5.16实例(二):创建流程模型        (3)流程模型列表展示:activiti自定义流程之Spring整合activiti-modeler5.16实例(三):流程模型列表展示 1.maven导包及spring的一些基本配置与之前的没有什么变化,依旧沿用就