六、activiti工作流-流程定义查询
本节主要讲流程定义查询、查询某个流程设计图片并保存到本地中、查询最新版本的流程定义集合、删除所有key相同的定义
先创建一个java类
package com.java.procdef;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.ProcessDefinition;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
public class ProcessDefinitionTest {
//获取默认流程引擎实例,会自动读取avtiviti.cfg.xml文件
private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
//流程定义查询,就是查某个模板被用了多少次,返回流程定义集合对应表act_re_procdef
@Test
public void list() {
String processDefinition="myFirstProcess";
List<ProcessDefinition> pdList= processEngine.getRepositoryService()
.createProcessDefinitionQuery() //创建流程定义查询
.processDefinitionKey(processDefinition) //通过key查询,返回的是集合
.list();
for (ProcessDefinition pd : pdList) {
System.out.println("id"+pd.getId());
System.out.println("name"+pd.getName());
System.out.println("key"+pd.getKey());
System.out.println("version"+pd.getVersion());
System.out.println("====");
}
}
//通过流程定义id查询某个流程定义,就是查具体的某一个模板的某一个流程
@Test
public void getById() {
String processDefinitionId = "myFirstProcess:1:4";
ProcessDefinition pd = processEngine.getRepositoryService().createProcessDefinitionQuery() // 创建流程定义查询
.processDefinitionId(processDefinitionId).singleResult(); //
System.out.println("id"+pd.getId());
System.out.println("name"+pd.getName());
System.out.println("key"+pd.getKey());
System.out.println("version"+pd.getVersion());
System.out.println("====");
}
/**
* 根据流程部署id和图片名字查询。查询某个流程定义的流程设计图片;并保存到本地中
* @throws IOException
*/
@Test
public void getImageById() throws IOException {
InputStream inputStream = processEngine.getRepositoryService()
.getResourceAsStream("10001", "diagrams/HelloWord.png"); //根据流程部署id和资源名称
//获得输入流,这个是apache提供的工具类
FileUtils.copyInputStreamToFile(inputStream, new File("E:/helloWord.png"));
}
/**
* 查询最新版本的流程定义集合
*/
@Test
public void selectLastVersion() {
List<ProcessDefinition> listAll= processEngine.getRepositoryService()
.createProcessDefinitionQuery() //创建流程定义查询
.orderByProcessDefinitionVersion().asc() //根据流程定义版本升序
.list();
//定义有序的map,相同的key,假如添加map的值后者的值会覆盖前面相同key的值,map特点是保证key唯一
Map<String,ProcessDefinition> map=new LinkedHashMap<String,ProcessDefinition>();
//遍历集合,根据key来覆盖前面的值,来保证最新的key覆盖老的key
for (ProcessDefinition pd : listAll) {
map.put(pd.getKey(), pd);
}
List<ProcessDefinition> pdList=new LinkedList<ProcessDefinition>(map.values());
for (ProcessDefinition pd : pdList) {
System.out.println("id"+pd.getId());
System.out.println("name"+pd.getName());
System.out.println("key"+pd.getKey());
System.out.println("version"+pd.getVersion());
System.out.println("====");
}
}
/**
* 删除所有key相同的定义,activiti提供的接口支持级联删除
*
*/
@Test
public void deleteByKey() {
String processDefinitionKy="HelloWorld2";
List<ProcessDefinition> pdList= processEngine.getRepositoryService()
.createProcessDefinitionQuery() //创建流程定义查询
.processDefinitionKey(processDefinitionKy) //根据流程定义版本升序
.list();
for (ProcessDefinition pd : pdList) {
processEngine.getRepositoryService()
.deleteDeployment(pd.getDeploymentId(),true);
}
}
}
六、activiti工作流-流程定义查询的更多相关文章
- 深入了解Activiti工作流流程定义
深入了解Activiti工作流流程定义 2016-03-27| 发布: | 浏览: 2363 |保存PDF 部署流程定义 部署流程定义的流程: 1. 先获取流程引擎对象:在创建时会自动加载 class ...
- (四)Activiti之流程定义部署之ZIP方式和流程定义查询
一.流程定义部署之ZIP方式 上一章节我们使用classpath的方式加载流程定义文件,这里我们使用ZIP的方式. 1.1 用activiti插件生成bpmn和png图片之后,压缩到一个zip格式的压 ...
- Activiti 删除流程定义
package com.mycom.processDefinition; import java.io.InputStream; import java.util.List; import java. ...
- activiti部署流程定义时出错:INSERT INTO ACT_GE_BYTEARRAY,修改数据库编码
activiti部署流程定义时出错 // 部署流程定义 Deployment deployment = deploymentBuilder.deploy(); 错误信息:(有乱码的...没留下截图.. ...
- Activiti工作流的定义部署和执行
工作流引擎 个人觉得直接理解工作流引擎概念有点难度,我们可以先通过了解工作流引擎的职责再反过来理解工作流引擎,工作流引擎一般都做两件事情: 1.定义流程,也就是给我们提供某种规范来定义规则,以 ...
- activiti--5 -----------------Activiti 工作流 流程各个步骤所涉及到的表
ACT_RE_*: 'RE'表示repository. 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等). ACT_RU_*: 'RU'表示runtime. 这些运行时的表,包含流程实例 ...
- Activiti 部署流程定义及相关的表(classpath部署、zip部署)
package com.mycom.processDefinition; import org.activiti.engine.ProcessEngine; import org.activiti.e ...
- 多数据库下activiti的流程定义缓存问题
我们使用activiti(5.14版本号)作为流程引擎,今天在产品中发现一个问题,某流程的审批记录中, 活动实例表中记录的活动名称(ACT_HI_ACTINST表的ACT_NAME)居然是该流程中不存 ...
- 三、activiti工作流-流程设计工具
首先在diagrams下面新建一个文件夹 然后在这个文件夹下new一个Activiti Diagram new好后出现bpmn文件, 可以通过右键以xml方式打开bpmn文件查看源码 双击打开文件然后 ...
随机推荐
- Python:每日一题008
题目: 判断101-200之间有多少个素数,并输出所有素数. 程序分析: 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 个人思路及代码: li ...
- 4-1 requests库的安装
1. 一切安装从简就行了直接打开cmd命令窗口输入 pip install requests 把复杂的问题简单化,我这个已经安装好了.会提示已经安装. 2.打开cmd 输入python 这个会提示 ...
- 推荐一款Notepad++主题Dracula
https://draculatheme.com/notepad-plus-plus/ Activating theme Go to %AppData%\Notepad++\themes Place ...
- matplotlib中color可用的颜色
http://stackoverflow.com/questions/22408237/named-colors-in-matplotlib 参考网址给出了matplotlib中color可用的颜色: ...
- 图解HTTP第七章
确保 Web 安全的HTTPS 1>HTTP 的缺点 通信使用明文可能会被窃听: [1]TCP/IP 是可能被窃听的网络 [2]加密处理防止被窃听: *通信的加密:通过和 SSL(Secure ...
- 今天我给你们推荐一本书《Linux就该这么学》!!!
本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...
- 浅谈React数据流管理
引言:为什么数据流管理如此重要?react的核心思想就是:UI=render(data),data就是我们说的数据流,render是react提供的纯函数,所以用户界面的展示完全取决于数据层.这篇文章 ...
- LOJ-10095(缩点的特殊使用)
题目链接:传送门 思路: 缩点求最值,但是有一点行不通,如果被选中的点才能缩点,否则缩点没有意义: 所以就先缩选中的点,然后从小到大统计没有缩点的点,就是NO: 如果找最小值,就是一个环里的最小值,然 ...
- 即时消息Toast和对话框
public static Toast makeText(Context context, CharSequence text, int duration) protected void onDest ...
- HTTP一、HTTP介绍与套接字
目录 一.套接字 1.HTTP与Apache 2.应用层协议:HTTP 3.套接字(IP+协议端口的组合) 4.套接字图示 5.套接字相关知识点 二.HTTP 一.套接字 1. ...