- 首先需要通过任务ID查询出对应的执行对象ID(execution ID),可以通过以下方法实现:
String taskId = "xxx";
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String executionId = task.getExecutionId();
- 确定需要取消的并行任务的子流程ID,可以借助execution ID来实现:
String subProcessId = "subProcessId"; // 需要取消的子流程ID
List executions = runtimeService.createExecutionQuery()
.parentId(executionId) // 指定需要取消的并行任务的父执行对象ID作为查询条件
.list();
for (Execution execution : executions) {
if (subProcessId.equals(execution.getActivityId())) {
// 将子流程对应的执行对象设置为结束状态
runtimeService.deleteProcessInstance(execution.getProcessInstanceId(), "cancel reason");
break;
}
}
- 最后在取消子流程的执行对象后,需要将并行任务的执行对象设置为结束状态:
taskService.complete(taskId); // 完成任务,设置执行对象结束状态。