旧节点
有几种节点仍能运行,但不再出现在节点工具箱里。你只会在打开旧版本保存的流程时遇到它们。
本页的存在,是为了让你在工具箱里找不到的节点永远不再是谜。
用途
解释每个退役节点曾经做什么、 什么取代了它,以及遇到一个时该怎么办。
何时需要本页
- 你打开旧流程,看到工具箱里没有的节点类型。
- 流程校验通过并运行,但你加不出同类节点。
- 你在现代化一个旧流程。
退役的节点类型
| 旧节点 | 状态 | 替代 |
|---|---|---|
Loop (classic) — logic.loop | 能运行;不在工具箱 | Loop + Loop End 区域标记 |
Parallel — control.parallelStart | 作为惰性直通运行 | Monitor Scope |
Parallel End — control.parallelEnd | 作为惰性直通运行 | Monitor Scope |
Parallel Block — control.parallel | 能运行;不在工具箱 | Monitor Scope |
Loop End — control.loopEnd | 非旧节点——随 Loop 自动创建 | — |
control.loopEnd 不在工具箱里,是因为你添加 Loop 时它会被自动创建。每个 Loop 都需要配对的 Loop End,编辑器管理这对。它是产品正常、现行的一部分。
Loop (classic)
最初的循环节点,把迭代路由暴露为真实端口——enter、exit、limitExceeded——由你自己接线。
它被 Loop / Loop End 区域模型取代:你画一条普通的节点主体链,编译器生成进入、重复与退出路由。这一改动消除了产品里最常见的创作错误:接错的回边。
如果你有一个
它仍能运行。要现代化,用 Loop 区域替换:
- 加一个 Loop 节点,设相同的 mode、max iterations、condition 与 counter 变量。
- 从 Loop 到 Loop End 接主体链。
- 把原先跟在
exit后的东西接到 Loop End 之后的节点。 - 删掉 classic 节点。
Parallel、Parallel End、Parallel Block
Parallel 家族对一张共享截图运行多个叶分支并合并结果。
它在 Observer Scope 重设计中被移除,Monitor Scope 是它的替代,针对它真正被用于的场景:在其他工作进行时守望某个东西。
加载时发生什么
规范的 Parallel 区域在每条加载路径上被自动拆开——标记被移除、内部链被拼接穿过,流程继续运行、内部串行执行。
无法迁移的区域仍能校验,并把标记作为惰性直通运行,内部串行执行。无论哪条路,结果都一致。
即便它仍现行时,一个会话也是一次执行一个节点。真正的并发来自在多个实例上运行流程,或来自 Flow Queue——不来自某个节点。
若你继承了用 Parallel 的流程并指望它比串行快——它并不快。
它曾携带的分支约束
作参考:只有单步叶节点类型能做并行分支——各检测节点,以及 Click、Swipe、Zoom、Key Press、Input Text、Wait。控制/逻辑/循环/并行节点被排除,因为它们需要多个运行时步骤。
一个区域最多 16 个分支。
已停用的设置
有些设置退役了,但其节点仍现行:
| 设置 | 节点 | 状态 |
|---|---|---|
Wait after click(waitAfterMs) | Click | 运行时忽略;从编辑器移除。接一个 Wait |
Strength (px)(strengthPx) | Zoom | 仅从旧流程接受。新流程用分辨率无关的 Zoom factor |
| start / end 点 | Swipe | 旧模型;依赖分辨率。优先方向+距离,或区域模式 |
固定点(point) | Click | 旧;编辑器迁移到 Click Region |
| Scope / matched-item 变量 | Memory Match | 被容忍并忽略;下次保存时消失 |
这些都被容忍,好让旧流程继续校验并运行。它们都不应出现在新工作中。
最佳实践
- 别刻意创作旧节点,即便负载仍能校验。
- 顺手编辑时就现代化。 在流程里顺手转换一个 classic Loop 只要几分钟;专门的迁移项目要好几天。
- 打开后重新保存旧流程——几个已停用的设置会在保存时消失。
- 别指望 Parallel 快。 并发来自实例,不来自节点。
- 现代化后测试。 把转换后的流程放回计划前用 Test Flow。
性能笔记
- 旧 Parallel 标记作为惰性直通运行——成本近乎零,收益也近乎零。
- classic Loop 与 Loop 区域运行表现相同;差别是创作安全,不是速度。
- 被忽略的设置运行时零成本。
内存笔记
- 拆开 Parallel 区域发生在加载时、内存图上。你保存的流程直到你保存才改变。
- 被忽略的参数在保存的流程里占位,直到下次保存移除它们。
常见错误
| 错误 | 后果 | 修复 |
|---|---|---|
| 在工具箱找 Loop End | 它自动创建 | 添加一个 Loop |
| 指望 Parallel 并发运行 | 它从不并发 | 用多实例或队列 |
依赖 waitAfterMs | 被忽略 | 加 Wait 节点 |
| 认定旧流程坏了 | 它仍能运行 | 方便时现代化 |
| 把旧模式复制进新流程 | 带进退役概念 | 用现行节点 |
故障排查
我流程里某个节点不在工具箱。 查上表。它要么退役了,要么像 Loop End 那样自动创建。
我含 Parallel 的旧流程运行得跟以前不一样。 区域被拆开、内部串行运行——本来它以前也实际如此。
我记得的某个设置从 Properties 面板消失了。 查已停用设置表。它在存储里被容忍,但不再显示。
更新后旧流程校验失败。 查运行日志里的具体错误。多数旧结构是刻意容忍的;真正的失败通常指向缺失素材或不支持的节点类型,而非某个旧设置。
FAQ
旧节点会停止工作吗? 移除 Parallel 标记类型是有计划的清理。方便时现代化,不必着急。
应用会自动重写我的流程吗? Parallel 区域在加载时于内存里拆开。你保存的流程只在你保存时改变。
Loop End 是旧节点吗? 不是。它随 Loop 自动创建。
还能添加 Parallel 节点吗? 从工具箱不能。
相关页面
- 节点参考——现行节点集
- Loop——现行循环模型
- Monitor Scope——取代 Parallel 的东西
- 执行模型——为何一个会话一次一个节点