Skip to content

Commit 58fecbc

Browse files
authored
Merge pull request #135 from codingapi/dev
Dev
2 parents 08f1689 + 33ebf2d commit 58fecbc

20 files changed

Lines changed: 448 additions & 18 deletions
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# processNodes 接口返回数据异常
2+
3+
> 编码: 107562 | 日期: 2026-05-14 | 严重度: S2 | 状态: 待确认
4+
5+
## 现象描述
6+
7+
processNodes 接口返回的数据并没有按照一个确定的流程路径来返回,而是返回了所有的流程节点。当遇到条件分支时,应该默认走其他情况,但目前由于可能包含多条条件分支,所以都默认走其他情况导致返回数据不符合预期。
8+
9+
## 关键信息
10+
11+
- **可能关联的模块**
12+
- flow-engine-starter-api(REST API 层)- 提供 `/api/cmd/record/processNodes` 接口
13+
- flow-engine-framework(节点引擎)- 包含节点执行、分支过滤逻辑
14+
- FlowProcessNodeService(处理流程节点信息的服务)
15+
16+
- **受影响的功能**
17+
- 流程节点信息获取
18+
- 条件分支节点的路径过滤
19+
- processNodes 接口的数据返回结果
20+
21+
- **初步判断**
22+
问题可能出现在节点的 `filterBranches()` 方法或 FlowProcessNodeService 的分支过滤逻辑中。当遇到条件分支时,应该根据条件脚本执行结果选择匹配的分支,但当前实现可能没有正确处理多条件分支的过滤,导致返回了所有节点而不是遵循特定的流程路径。
23+
24+
## 期望行为
25+
26+
processNodes 接口应该返回从当前节点开始、按照确定的流程路径(基于条件分支的默认分支或其他逻辑)逐步推进的节点列表,而不是返回所有可能的节点。当遇到条件分支时,应该:
27+
28+
1. 根据条件分支的条件脚本执行结果选择匹配的分支
29+
2. 如果条件不匹配,则默认走其他(else)分支
30+
3. 最终返回按照这一确定路径所包含的所有节点
31+
32+
## 备注
33+
34+
{待人工补充}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# processNodes 接口分支节点排序异常
2+
3+
> 编码: 116393 | 日期: 2026-05-14 | 严重度: S2 | 状态: 待确认
4+
5+
## 现象描述
6+
7+
`processNodes` 接口返回的节点列表中,并行分支节点(`ParallelBranchNode`)、人工分支节点(`ManualBranchNode`)、包容分支节点(`InclusiveBranchNode` / `InclusiveElseBranchNode`)等分支类节点出现在了结束节点(`EndNode`)之后,未按流程图中的节点定义顺序排序,导致前端展示的流程路径不直观。
8+
9+
## 关键信息
10+
11+
- **可能关联的模块**
12+
- flow-engine-starter-api(REST API 层)- 提供 `/api/cmd/record/processNodes` 接口
13+
- flow-engine-framework(节点引擎)- `FlowProcessNodeService``NextNodeLoader`
14+
15+
- **可能关联的节点类型**
16+
- `ParallelNode` / `ParallelBranchNode`(并行分支)
17+
- `ManualNode` / `ManualBranchNode`(人工分支)
18+
- `InclusiveNode` / `InclusiveBranchNode` / `InclusiveElseBranchNode`(包容分支)
19+
20+
- **受影响的功能**
21+
- `processNodes` 接口的节点返回顺序
22+
- 流程预览中分支节点位置展示
23+
24+
- **初步判断**
25+
问题可能在 `FlowProcessNodeService.NextNodeLoader.fetchNextNode()``flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowProcessNodeService.java:170-192`)的递归遍历逻辑中。当前实现是深度优先递归,将每个节点 add 到一个共享 `nodeList`,分支控制节点的子分支可能在递归回溯阶段才被加入,导致顺序晚于 End 节点。需要确认递归顺序与节点 `order` 字段的关系,或在遍历完成后按节点定义顺序重新排序输出。
26+
27+
## 期望行为
28+
29+
`processNodes` 接口返回的节点列表应按照流程图中的节点定义顺序排序(即按 Start → 各业务节点 → 各分支控制节点 → End 的顺序),分支节点应出现在它实际所在的流程位置,而不是 End 节点之后。
30+
31+
## 备注
32+
33+
{待人工补充}

docs/components/flow-engine-framework_FlowScriptContext.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ description: Groovy 脚本运行时的 $bind 上下文对象,为脚本提供
2222
<dependency>
2323
<groupId>com.codingapi.flow</groupId>
2424
<artifactId>flow-engine-framework</artifactId>
25-
<version>0.0.30</version>
25+
<version>0.0.31</version>
2626
</dependency>
2727
```
2828

docs/components/flow-engine-framework_GatewayContext.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ GatewayContext 是框架内部获取流程操作人(IFlowOperator)数据的
2222
<dependency>
2323
<groupId>com.codingapi.flow</groupId>
2424
<artifactId>flow-engine-framework</artifactId>
25-
<version>0.0.30</version>
25+
<version>0.0.31</version>
2626
</dependency>
2727
```
2828

docs/components/flow-engine-framework_GroovyScriptBind.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ GroovyScriptBind 是脚本编写者在流程 Groovy 脚本中通过 `$bind` 变
2222
<dependency>
2323
<groupId>com.codingapi.flow</groupId>
2424
<artifactId>flow-engine-framework</artifactId>
25-
<version>0.0.30</version>
25+
<version>0.0.31</version>
2626
</dependency>
2727
```
2828

docs/components/flow-engine-framework_GroovyScriptRequest.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ GroovyScriptRequest 是流程 Groovy 脚本中 `request` 参数的实际类型
2222
<dependency>
2323
<groupId>com.codingapi.flow</groupId>
2424
<artifactId>flow-engine-framework</artifactId>
25-
<version>0.0.30</version>
25+
<version>0.0.31</version>
2626
</dependency>
2727
```
2828

docs/components/flow-engine-framework_GroovyWorkflowRequest.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ GroovyWorkflowRequest 用于工作流级别(非会话级别)的脚本场景
2222
<dependency>
2323
<groupId>com.codingapi.flow</groupId>
2424
<artifactId>flow-engine-framework</artifactId>
25-
<version>0.0.30</version>
25+
<version>0.0.31</version>
2626
</dependency>
2727
```
2828

docs/components/flow-engine-framework_IFlowOperator.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ IFlowOperator 是流程引擎中对参与流程的用户(审批人、创建者
2222
<dependency>
2323
<groupId>com.codingapi.flow</groupId>
2424
<artifactId>flow-engine-framework</artifactId>
25-
<version>0.0.30</version>
25+
<version>0.0.31</version>
2626
</dependency>
2727
```
2828

docs/components/flow-engine-framework_RepositoryHolderContext.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ RepositoryHolderContext 是流程引擎运行时的基础设施注册中心。
2222
<dependency>
2323
<groupId>com.codingapi.flow</groupId>
2424
<artifactId>flow-engine-framework</artifactId>
25-
<version>0.0.30</version>
25+
<version>0.0.31</version>
2626
</dependency>
2727
```
2828

docs/components/flow-engine-framework_ScriptRegistryContext.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ ScriptRegistryContext 是流程引擎中所有默认 Groovy 脚本的注册中
2222
<dependency>
2323
<groupId>com.codingapi.flow</groupId>
2424
<artifactId>flow-engine-framework</artifactId>
25-
<version>0.0.30</version>
25+
<version>0.0.31</version>
2626
</dependency>
2727
```
2828

0 commit comments

Comments
 (0)