flowable通过ChangeActivityStateBuilder 驳回到起点
在flowable中,可以通过ChangeActivityStateBuilder将一个任务驳回到其所在流程的起点。具体步骤如下:
- 获取当前任务的Execution对象:
Execution execution = runtimeService.createExecutionQuery().executionId(task.getExecutionId()).singleResult();
- 获取流程的起点Activity对象:
Activity startEvent = processDefinitionEntity.findActivity("startEventId");
- 构建ChangeActivityStateBuilder对象:
ChangeActivityStateBuilder builder = runtimeService.createChangeActivityStateBuilder()
.processInstanceId(execution.getProcessInstanceId())
.moveSingleActivityIdToActivityIds(task.getTaskDefinitionKey(), Collections.singletonList(startEvent.getId()));
- 执行驳回操作:
builder.changeState();
注意,驳回操作会将当前任务及其之后的所有任务都删除,流程会回到起点重新开始。因此,在执行驳回操作前,需要确保该任务之后的任务均已完成或被删除。
完整代码示例:
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
Execution execution = runtimeService.createExecutionQuery().executionId(task.getExecutionId()).singleResult();
ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(task.getProcessDefinitionId());
Activity startEvent = processDefinitionEntity.findActivity("startEventId");
ChangeActivityStateBuilder builder = runtimeService.createChangeActivityStateBuilder()
.processInstanceId(execution.getProcessInstanceId())
.moveSingleActivityIdToActivityIds(task.getTaskDefinitionKey(), Collections.singletonList(startEvent.getId()));
builder.changeState();
``
原文地址: https://www.cveoy.top/t/topic/e3eJ 著作权归作者所有。请勿转载和采集!