流程控制分支仅负责确定性路由,动态对齐依赖前置数据准备与结构设计;需在流程编排期统一转为commentdto、按level分组排序、依insertorder线性拼接,避免运行时模糊匹配或嵌套查询。

重写流程控制分支本身不能直接对齐多源数据——它只是调度逻辑的“开关”,真正实现动态对齐靠的是前置的数据准备与结构设计。关键在于:把对齐责任从“运行时判断”前移到“流程编排期”,让分支只做确定性路由,不做语义匹配。
明确分支节点的职责边界
在多级评论区场景中,分支节点不应承担“识别某条回复属于哪条主评”这类任务。它的合理用途是:
- 根据数据来源标识(如sourceTag == "live_chat")路由到对应清洗模块
- 依据评论层级字段(level == 0 / level == 1)分发至不同排序器
- 按时间戳精度(hasMillisecondPrecision为真/假)选择插值或截断策略
用预处理换掉运行时对齐
所谓“动态对齐”,实际是把复杂逻辑拆解为可预测的静态步骤,并由分支串联执行:
- 先统一转换:所有数据进入工作流后,第一节点强制转成CommentDTO标准对象,补全parentId、insertOrder等对齐所需字段
- 再分组排序:用分支按level切分数据流,各自调用专用排序节点(主评按publishTime升序,回复按replySeq升序)
- 最后线性拼接:排序后的各段数组,交由arraycopy完成物理合并——此时“对齐”已由insertOrder字段固化
避免常见误用陷阱
以下做法会显著降低性能且难以维护:
- 在分支条件里写input.commentText.indexOf("楼中楼") > -1——文本模糊匹配不该出现在路由层
- 用分支反复循环查找parentId匹配的主评位置——这本质是嵌套查询,应改用哈希预建mainId → index映射表
- 让每个新回复都触发一次全量重排序——改为局部插入+偏移量更新,arraycopy仅用于腾位
不复杂但容易忽略:对齐效果取决于预处理阶段字段是否填全、是否按展示顺序预设了insertOrder,而不是分支写得多精巧。











