004 流程定义
Posted trekxu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 ,就能轻松的知道这些附带的资源
以上是关于004 流程定义的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段15——git命令操作一个完整流程
VSCode自定义代码片段15——git命令操作一个完整流程
SpringBoot脚手架项目002-004.Spring IOC_权限管理系统_Spring:什么是IOCSpring Bean注入SpringBean的注解bean的加载流程