flowable根据已办并行节点中的一个任务节点ID获取另外一个或者几个任务节点的ID
时间: 2025-07-06 13:53:00 浏览: 12
### 如何在 Flowable 中通过已知的任务节点 ID 获取同一并行节点下的其他任务节点 ID
为了实现这一目标,可以利用 Flowable 提供的 API 接口来查询执行实例以及任务的相关信息。具体来说,可以通过以下方式完成:
#### 查询同一流程实例内的所有活动执行对象
首先,需要根据给定的任务节点 ID 找到对应的 `Execution` 对象,进而获取整个流程实例的信息。由于并行网关会创建多个分支路径上的子执行实例,因此这些子执行实例都属于同一个父级执行实例。
```java
// 使用 TaskService 和 RuntimeService 来查找相关信息
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String executionId = task.getExecutionId();
List<Execution> executions = runtimeService.createExecutionQuery()
.executionId(executionId)
.list();
```
#### 查找兄弟执行实例及其对应的任务列表
一旦获得了当前任务所属的执行实例之后,就可以继续向上追溯至共同的父亲执行实例,并从中检索出所有的子执行实例。最终遍历每一个子执行实例以收集它们所关联的任务节点 ID[^1]。
```java
// 获得父级 Execution 实体
Execution parentExec = runtimeService.createExecutionQuery()
.executionId(executionId)
.superExecutionId(executionId)
.singleResult();
if (parentExec != null){
List<String> siblingExecutionIds = new ArrayList<>();
// 收集所有兄弟 Execution 的 Ids
for (Execution exec : runtimeService.createExecutionQuery()
.parentId(parentExec.getId())
.list()){
siblingExecutionIds.add(exec.getId());
}
// 根据 Execution IDs 获取相应的 Tasks
List<Task> tasksInParallelGateway = taskService.createTaskQuery()
.executionIdIn(siblingExecutionIds.toArray(new String[0]))
.list();
}
```
上述方法能够有效地在一个复杂的 BPMN 流程定义中找到由相同并行网关启动的所有并发任务节点,并返回除指定输入外的所有其它任务节点 ID 列表[^2]。
阅读全文
相关推荐

















