前言
camunda 7.18 驳回操作
一、代码
//查找历史结束user task节点
List<HistoricActivityInstance> historicActivityInstances = historyService
.createHistoricActivityInstanceQuery().activityType("userTask")
.processInstanceId(task.getProcessInstanceId())
.finished()
.orderByHistoricActivityInstanceEndTime().asc().list();
if (historicActivityInstances != null && historicActivityInstances.size()>0){
//获取上一节点信息
HistoricActivityInstance activity=new HistoricActivityInstanceEntity();
boolean flag = true;
for (int i=0;i<historicActivityInstances.size();i++){
if(historicActivityInstances.get(i).getActivityId().equals(task.getTaskDefinitionKey())){
if (i-1<0){
//第一用户节点,不可驳回
throw new DataInvalidException("REJECT_FAIL","Rejection failure");
}else {
activity=historicActivityInstances.get(i-1);
}
flag=false;
break;
}
}
if (flag){
activity=historicActivityInstances.get(historicActivityInstances.size()-1);
}
identityService.setAuthenticatedUserId(assignee);
taskService.createComment(taskId,task.getProcessInstanceId(),comment);
runtimeService.createProcessInstanceModification(task.getProcessInstanceId())
.cancelAllForActivity(task.getTaskDefinitionKey())
.startBeforeActivity(activity.getActivityId())
.setAnnotation(taskId)
.execute();
}else {
System.out.println("第一用户节点,驳回失败");
}
缺陷
只能用于简单串行流程