上一环节A是多人审批通过到了多人审批的环节B,多人用的多实例并行,现在在环节B多人驳回到上一步,环节A多人代办接受到,请问这个驳回如何实现。activiti小白,求大佬指教。
节点跳转代码示例:
/**
* 跳转至指定活动节点
* @param processId 流程Id
* @param targetTaskDefinitionKey 目标节点任务的id
*/
public void jump(String processId,String targetTaskDefinitionKey){
//获取当前节点任务
TaskEntity currentTask = (TaskEntity) taskService.createTaskQuery()
.processInstanceId(processId).singleResult();
jump(processId,currentTask,targetTaskDefinitionKey);
}
/**
* @param currentTaskEntity 当前任务节点
* @param targetTaskDefinitionKey 目标任务节点(在模型定义里面的节点任务Id)
*/
private void jump(String processInstanceId,final TaskEntity currentTaskEntity, String targetTaskDefinitionKey){
ProcessInstance processInstance=runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
TaskEntity taskEntity=(TaskEntity) taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
//获取流程定义
ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(processInstance.getProcessDefinitionId());
//当前正在执行任务的节点
ActivityImpl currentActivity = (ActivityImpl)processDefinitionEntity.findActivity(processInstance.getActivityId());
//跳转的目标节点
ActivityImpl targetActivity = (ActivityImpl) processDefinitionEntity.findActivity(targetTaskDefinitionKey);
((RuntimeServiceImpl)runtimeService).getCommandExecutor()
.execute(new Command<java.lang.Void>() {
public Void execute(CommandContext commandContext) {
ExecutionEntity executionEntity = (ExecutionEntity) runtimeService
.createExecutionQuery().executionId(currentTaskEntity.getExecutionId()).singleResult();
executionEntity.setActivity(currentActivity);
executionEntity.setEventSource(currentActivity);
//根据executionId 获取Task
Iterator<TaskEntity> localIterator = Context.getCommandContext().getTaskEntityManager().findTasksByExecutionId(taskEntity.getExecutionId()).iterator();
while (localIterator.hasNext()) {
TaskEntity taskEntity = (TaskEntity) localIterator.next();
//删除任务
Context.getCommandContext().getTaskEntityManager().deleteTask(taskEntity, "跳转节点", true);
}
executionEntity.executeActivity(targetActivity); //设置任务 执行对象
return null;
}
});
}