flowable 用java api怎么实现回退
时间: 2023-05-30 09:08:03 浏览: 225
Flowable中文文档(v 6.4.2)
Flowable 通过在流程实例中记录历史记录和执行路径来支持回退。使用 Java API 实现回退的步骤如下:
1. 获取当前流程实例的历史记录。可以通过以下代码实现:
```java
List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(processInstanceId)
.orderByHistoricActivityInstanceStartTime()
.asc()
.list();
```
2. 根据历史记录获取当前执行的任务。
```java
String currentTaskId = null;
for (HistoricActivityInstance historicActivityInstance : historicActivityInstances) {
if (historicActivityInstance.getEndTime() == null) {
currentTaskId = historicActivityInstance.getTaskId();
break;
}
}
```
3. 获取当前任务的执行路径。
```java
List<Execution> executions = runtimeService.createExecutionQuery()
.activityId(currentTaskId)
.list();
if (executions.size() == 1) {
List<String> executionPath = runtimeService.getActiveActivityIds(executions.get(0).getId());
}
```
4. 根据执行路径回退流程。
```java
runtimeService.createProcessInstanceModification(processInstanceId)
.cancelActivityIds(executionPath)
.startBeforeActivity(currentTaskId)
.execute();
```
以上是使用 Java API 实现回退的基本步骤。但需要注意的是,回退可能会导致数据不一致,因此在回退之前需要进行适当的数据验证和处理。
阅读全文