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);
這樣就實現了流程回退功能。請根據實際需求進行適當修改和調整。