Flowable是一个流程引擎,它提供了一些内置的功能来实现流程回退。
要实现流程回退功能,可以使用以下步骤:
HistoryService
的createHistoricTaskInstanceQuery
方法,通过当前任务的ID查询与之相关的历史任务。List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId)
.orderByTaskCreateTime()
.desc()
.list();
HistoricTaskInstance targetTask = historicTasks.get(targetTaskIndex);
RuntimeService
的createProcessInstanceQuery
方法,查询当前任务所属的流程实例,并基于该实例创建一个新的流程实例。ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
ProcessInstance targetProcessInstance = runtimeService.createProcessInstanceBuilder()
.processDefinitionKey(processInstance.getProcessDefinitionKey())
.variables(processInstance.getProcessVariables())
.start();
TaskService
的complete
方法,完成目标任务,并将其指定给新创建的流程实例。Task targetTask = taskService.createTaskQuery()
.processInstanceId(targetProcessInstance.getId())
.taskDefinitionKey(targetTaskKey)
.singleResult();
taskService.complete(targetTask.getId());
TaskService
的complete
方法,完成当前任务。taskService.complete(currentTaskId);
这样就实现了流程回退功能。请根据实际需求进行适当修改和调整。