1.源码地址:https://github.com/heidaodageshiwo/springbootactivity
有时候我们一个流程定义不需要的,包括所有版本,这时候我们在用户界面上一个一个删除太麻烦;
所有有时候我们又这样的需求,一下子把所有Key相同的流程定义全部删除;
我们的思路是这样的;
第一步:根据Key获取所有的流程定义;
第二步:遍历集合,获取每个流程定义的流程部署Id
第三步:我们根据流程部署Id即可删除所有的流程定义;
代码:
/**
* 删除流程定义
*/
@RequestMapping("/procdef_delete_suoyoubanben")
/**
* 删除所有Key相同的流程定义
* @throws Exception
*/
public void deleteByKey()throws Exception{
List<ProcessDefinition> pdList=repositoryService // 获取service类
.createProcessDefinitionQuery() // 创建流程定义查询
.processDefinitionKey("MySecondProcess") // 根据Key查询
.list();
for(ProcessDefinition pd:pdList){ // 遍历集合 获取流程定义的每个部署Id,根据这个id来删除所有流程定义
repositoryService
.deleteDeployment(pd.getDeploymentId(), true);
}
}
查询流程实例状态
在开发中,我们有时候需要查看下某个流程实例的状态,运行中 Or 执行结束 ?
这时候我们可以用流程实例Id去运行时执行表去查,假如能查到数据,说明流程实例还是运行,假如没查到,就说明这个流程实例已经运行结束了;
@Autowired
RuntimeService runtimeService;
@RequestMapping("/execution_list")
/**
* 查询流程状态(正在执行 or 已经执行结束)
*/
public String processState(){
ProcessInstance pi=runtimeService // 获取运行时Service
.createProcessInstanceQuery() // 创建流程实例查询
.processInstanceId("17505") // 用流程实例ID查询
.singleResult();
if(pi!=null){
System.out.println("流程正在执行!");
}else{
System.out.println("流程已经执行结束!");
}
return "processState";
}