部署对象和流程定义相关的表:
SELECT * from ACT_RE_DEPLOYMENT WHERE ID_ in (45001, 47501); #部署对象表
SELECT * FROM ACT_RE_PROCDEF WHERE DEPLOYMENT_ID_ in (45001, 47501); #流程定义表
SELECT * FROM ACT_GE_BYTEARRAY WHERE DEPLOYMENT_ID_ in (45001, 47501); #资源文件表
SELECT * FROM ACT_GE_PROPERTY; #主键生成策略表
package com;
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.stream.Collectors;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.apache.commons.io.FileUtils;
/**
* @author 黑子
* @Date 2018/2/23 15:53
*/
public class ProcessDefinitionManager {
private static final String PROCESS_DEPLOY_ID = "42501";
public static void main(String[] args) {
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
deploymentProcessDefinition(engine);
//findProcessDefinition(engine);
//removeProcessDefinition(engine);
//lastVersionProcessDefinition(engine);
}
// 添加部署流程定义:类路径下/zip都可以部署
private static void deploymentProcessDefinition(ProcessEngine engine) {
Deployment deployment = engine.getRepositoryService().createDeployment().name("流程定义")
.addClasspathResource("diagrams/practice.bpmn").deploy();
System.out.println("部署ID: " + deployment.getId());
System.out.println("部署名称: " + deployment.getName());
}
// 查询流程定义
private static void findProcessDefinition(ProcessEngine engine) {
List<ProcessDefinition> processDefinitions = engine.getRepositoryService()
.createProcessDefinitionQuery()//创建一个流程定义查询
.deploymentId(PROCESS_DEPLOY_ID)
//.processDefinitionId("process_2:1:37504")
//.processDefinitionKey("process_2")//返回的是结合
//.processDefinitionNameLike("")//模糊查询
//.count()结果数量
//.orderByProcessDefinitionId().desc()//排序
//.singleResult()//返回一个结果
.list();//返回一个集合
//.listPage(firstResult, maxResults)分页查询
}
// 删除流程定义
private static void removeProcessDefinition(ProcessEngine engine) {
engine.getRepositoryService()
//.deleteDeployment("37501");//非级联删除:只能删除未启动的流程,否则抛异常
.deleteDeployment(PROCESS_DEPLOY_ID, true);//级联删除:无论流程是否启动,都能删除
System.out.println("删除成功!");
}
// 查看流程图
private static void viewPic(ProcessEngine engine) throws IOException {
*//*将生成的图片放到文件夹下*//*
List<String> resourceNames = engine.getRepositoryService()
// 获取资源文件名称
.getDeploymentResourceNames(PROCESS_DEPLOY_ID).stream().filter(v -> {
v.endsWith(".png")
}).collect(Collectors.<String>toList());
InputStream inputStream = engine.getRepositoryService().getResourceAsStream(PROCESS_DEPLOY_ID,
resourceNames.get(0));
File file = new File("d:/resource.png");
FileUtils.copyInputStreamToFile(inputStream, file);
}
// 查询最新版本的流程定义
public static void lastVersionProcessDefinition(ProcessEngine engine){
List<ProcessDefinition> definitions = engine.getRepositoryService().createProcessDefinitionQuery()
.orderByProcessDefinitionVersion().asc().list();
Map<String, ProcessDefinition> map = new LinkedHashMap<String, ProcessDefinition>();
if(definitions != null && !definitions.isEmpty()){
for(ProcessDefinition def : definitions){
map.put(def.getKey(), def);
}
}
List<ProcessDefinition> list = new ArrayList<ProcessDefinition>(map.values());
System.out.println(list);
}
// 删除key下面的所有的流程定义
public static void deleteProcessDefinitionsByKey(ProcessEngine engine){
String ProcessDefinitionsByKey = "process_2";
List<ProcessDefinition> definitions = engine.getRepositoryService()
.createProcessDefinitionQuery()
.processDefinitionKey(ProcessDefinitionsByKey)
.list();
for(ProcessDefinition definition : definitions){
engine.getRepositoryService().deleteDeployment(definition.getDeploymentId(), true);
}
}
}