流程定义查询
package com.buyiner.activiti;
import java.io.File;
import java.io.InputStream;
import java.util.List;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
/**
* 流程定义查询
* @author Administrator
*
*/
public class ProcessDefinitionTest {
//创建流程引擎对象
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**
* 1.发布一个流程
* 会在三张表中产生数据
* act_ge_bytearray 2条
* act_re_deployment 1条
* act_re_procdef 1条
* @throws Exception
*/
@Test
public void deployProcess() throws Exception {
//创建仓服务
RepositoryService repositoryService = processEngine.getRepositoryService();
//创建一个发布流程
DeploymentBuilder builder = repositoryService.createDeployment();
//添加流程配置信息
builder.name("请假流程信息")
.addClasspathResource("bpmn/hellworld3.bpmn")//设置流程规则文件
.addClasspathResource("bpmn/hellworld3.png");//设置流程规则图片
//发布流程
builder.deploy();
}
/**
* 2.查看流程定义
* id:{key}:{verson}:{随机数}
* name:process节点的name相同
* key:process节点的key相同
* version:如果是第一次发布。默认为1。
* 如果是key相同的流程,会在当前最高版本上加1
* @throws Exception
*/
@Test
public void queryProcessDefinition() throws Exception {
RepositoryService repositoryService = processEngine.getRepositoryService();
ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
List<ProcessDefinition> list =
query
.processDefinitionKey("myProcess")
//.processDefinitionId(arg0)
//.orderByDeploymentId()
//.listPage(arg0, arg1)
.list();
for(ProcessDefinition pd:list){
System.out.println("id="+pd.getId()+"--name="+pd.getName()+"---key="+pd.getKey()+"---version="+pd.getVersion());
}
}
/**
* 3.流程定义删除
*
*
* @throws Exception
*/
@Test
public void deleteProcessDefinition() throws Exception {
RepositoryService repositoryService = processEngine.getRepositoryService();
String deploymentId = "2501";
//普通删除 可以删除没有任何关联数据的流程规则,如果当前有一个流程正在执行,则无法删除,删除失败
repositoryService.deleteDeployment(deploymentId );
//级联删除 可以删除关联流程的所有相关信息,相对暴力,只提供给管理员使用
repositoryService.deleteDeployment(deploymentId, true);
}
/**
* 4.查看流程图(获取上传图的输入流)
*
* @throws Exception
*/
@Test
public void viewImages() throws Exception {
RepositoryService repositoryService = processEngine.getRepositoryService();
String deploymentId = "5001";
//通过部署id查出所有的资源
List<String> list = repositoryService.getDeploymentResourceNames(deploymentId);
String imageName = "";
for(String str:list){
if(str.endsWith(".png")){
System.out.println(str);
imageName = str;
}
}
if(imageName!=null){
InputStream imInputStream = repositoryService.getResourceAsStream(deploymentId,imageName);
FileUtils.copyInputStreamToFile(imInputStream, new File("d://111.png"));
}
}
}