flowable 用java api怎么实现回退到指定节点任务
时间: 2024-03-28 12:40:28 浏览: 17
要回退到指定节点任务,可以使用 Flowable 的历史记录查询 API 来获取指定节点的历史任务记录,然后根据这些记录创建一个新的流程实例。具体步骤如下:
1. 使用 Flowable 的历史记录查询 API 查询指定节点的历史任务记录,可以使用 `HistoricTaskInstanceQuery` 来实现,例如:
```java
List<HistoricTaskInstance> historicTaskInstances = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId)
.taskDefinitionKey(taskDefinitionKey)
.list();
```
其中,`processInstanceId` 是要回退的流程实例 ID,`taskDefinitionKey` 是要回退到的节点 ID。
2. 根据这些历史任务记录创建一个新的流程实例,可以使用 `RuntimeService` 的 `createProcessInstanceBuilder` 方法来实现,例如:
```java
ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder()
.processDefinitionKey(processDefinitionKey)
.businessKey(businessKey)
.variables(variables)
.transientVariables(transientVariables)
.tenantId(tenantId)
.processInstanceName(processInstanceName)
.overrideProcessDefinitionVersion(true);
for (HistoricTaskInstance historicTaskInstance : historicTaskInstances) {
processInstanceBuilder = processInstanceBuilder
.transientVariable(historicTaskInstance.getTaskDefinitionKey(), historicTaskInstance.getVariables());
}
ProcessInstance processInstance = processInstanceBuilder.start();
```
其中,`processDefinitionKey` 是流程定义的 key,`businessKey` 是业务主键,`variables` 是流程变量,`transientVariables` 是瞬时变量,`tenantId` 是租户 ID,`processInstanceName` 是流程实例名称,`overrideProcessDefinitionVersion` 用于指定是否覆盖流程定义版本。在循环中,我们将历史任务记录的变量作为瞬时变量添加到新的流程实例中。
3. 如果要继续执行回退后的流程,需要使用 `TaskService` 完成新的任务,例如:
```java
List<Task> tasks = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.list();
for (Task task : tasks) {
taskService.complete(task.getId());
}
```
其中,`processInstance.getId()` 获取新的流程实例 ID,使用 `complete` 方法完成任务。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)