注:流程定义不可修改,可通过每一次启动最新版本的流程定义来达到修改的目的
/**
* 查询最新版本的流程定义,可利用map集合的key相同则覆盖值的特性
*
* Map<String, ProcessDefinition>
* map的key,流程定义的key
* map的value,流程定义本身对象
*/
public void testGetHigestVersion(){
Map<String, ProcessDefinition> map=new LinkedHashMap<String, ProcessDefinition>();
//根据版本升序查询
List<ProcessDefinition> pList=processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.orderByProcessDefinitionVersion().asc()
.list();
if(pList!=null&&pList.size()>0){
for (ProcessDefinition processDefinition : pList) {
map.put(processDefinition.getKey(), processDefinition);
}
}
Set<String> set=map.keySet();
Iterator<String> it=set.iterator();
while(it.hasNext()){
String key=it.next();
ProcessDefinition p=map.get(key);
System.out.println("流程定义的key:"+key);
System.out.println("流程定义的最高版本:"+p.getVersion());
}
}
/**
* 删除指定的key的所有的流程定义
*/
public void testDeleteAllProcDefByKey(){
String processDefinitionKey="helloWorld";
//通过key找到所有的流程定义
List<ProcessDefinition> pList=processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.processDefinitionKey(processDefinitionKey)
.list();
//貌似这样也可以获取一个流程定义的最新版本
System.out.println(processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.processDefinitionKey(processDefinitionKey)
.latestVersion());
if(pList!=null&&pList.size()>0){
for (ProcessDefinition processDefinition : pList) {
String deploymentId=processDefinition.getDeploymentId();
processEngine.getRepositoryService().deleteDeployment(deploymentId,true);
}
}
}