Variable(变量)
设置、计算、转换、重置或删除流程变量。
每行说明你要对一个变量做什么:给计数器加数、拼上 OCR 读到的、把文本转成数字、复制值、重置它。你选操作;节点替你写表达式。
变量在某行首次设置它时自动创建。
用途
给流程一份持续整次运行的记忆——计数器、旗标、复制的值、转换后的 OCR 读数。
何时用
- 数迭代、尝试或已处理条目。
- 把 OCR 字符串转成可比较的数字。
- 复制一个值,让它活过产生它的节点。
- 设一个旗标供后面的 If 分支。
- 调试时把值打进运行日志。
何时不用
- 跨运行记住某物——用按实例变量(下文)或 Runtime Memory。
- 向另一个流程传参——用 Sub Flow 的输入映射。
如何运行
定义本节点的两个性质:
全有或全无。 任一行出错则没有行被应用。你绝不会得到半更新的变量集。
各行互不可见。 所有行在任何行存储之前求值,所以第二行读到的是本节点之前的值——不是第一行刚写的。
行 1: count = {{count}} + 1
行 2: total = {{count}} ← 读到旧的 count
若一个赋值必须看到另一个,用两个 Variable 节点。
设置
| 设置 | 类型 | 备注 |
|---|---|---|
| Operation | 选择 | 按 Store a value / Numbers / Text / Convert / Manage 分组 |
| Target | 变量路径 | 本行写哪个变量 |
| Value / expression | string | ≤ 1000 字符 |
| Store as | 选择 | Auto、Text 或 Yes/No |
| If not a number, use | 值 | 数值操作的回退 |
| Ignore surrounding text | boolean | 转数字:取找到的第一个数 |
| Store per instance | boolean | 写进 Instance 作用域而非本次运行 |
| Expire after | integer | 1 秒–1 年;值回到默认 |
操作
| 组 | 操作 | 效果 |
|---|---|---|
| Store | Set to | 存一个值或表达式 |
| Numbers | Add / Subtract | 未设的变量按 0 处理 |
| Numbers | Multiply / Divide | 未设的变量按 1 处理 |
| Text | Append | 拼接文本 |
| Convert | Convert to number | 把文本解析成数,带回退 |
| Manage | Reset | 把变量还原为默认值,并保留它 |
| Manage | Remove | 在本次运行余下时间删除变量 |
| Manage | Show in run log | 打印值,不做改动 |
Reset 不是 Remove。 Reset 恢复声明的默认值并保留变量;Remove 删除它。
Store as
Auto 保持值本来的样子——数字仍是数字、变量保持自身类型、其余成为文本。用 Text 或 Yes/No 强制类型。
屏幕上读来的数字,用 Convert to number,它带回退。
Convert to number——以及你为何需要它
屏幕读数是文本,哪怕它看着像数字。"LEVEL 5" 是字符串;"1167" 也是。
Convert to number 解析它,Ignore surrounding text 取找到的第一个数——"LEVEL 5" 变成 5。
If not a number, use 字段在解析失败时提供回退。清空它则该情况走 Failure,你可以分支。
Store per instance
写进 Instance 作用域:值跨运行与重启存活、该实例上每个流程可见、实例间隔离。见变量与记忆。
Expire after
时间一到值回到变量默认值(最长一年)。关 = 永久。
端口
| 端口 | 走它的时机 | 必接 |
|---|---|---|
| Success | 所有行已应用(输出:赋值数) | 是 |
| Failure | 某行值算不出,或类型与变量不符 | 否 |
| Fatal | 配置错误 | 否——永不被走 |
基础示例
一个重试计数器:
- Operation:Add to it
- Target:
attempts - Value:
1
首次运行自动从 0 开始。
实际示例——数并决定
替代多数循环计数器的双节点惯用法:
在自然边界把 items_done 重置为 0——行程真正结束时——不是循环顶部,否则它永远到不了上限。
高级示例——让 OCR 读数可用
没有转换,{{level}} >= 5 比较字符串,悄悄做错事。
最佳实践
- 每个逻辑步骤一个 Variable 节点。 节点内各行是同时的。
- 计数器默认
0。null + 1不是数。 - 转换总设回退,除非你要 Failure 当分支。
- 调试用 Show in run log,之后删掉。
- 在真实边界重置,不在循环顶部。
- 按含义命名变量——
items_done,不是i。 - 做转换的节点接 Failure。
性能笔记
- 纯计算——无设备交互。几乎免费。
- 全有或全无检查先求值所有行再写,所以多行节点是一遍校验一遍写。相比任何检测节点仍微不足道。
- 按实例写触持久存储。别放进紧循环。
内存笔记
- 流程变量住在运行上下文里,运行终止即释放。
- 按实例变量无限期存盘——给它们刻意的重置路径。
- Remove 在余下运行里释放变量;Reset 保留它在默认值。
常见错误
| 错误 | 后果 | 修复 |
|---|---|---|
| 对 OCR 文本做算术 | 悄悄错或 Failure | 先转数字 |
| 指望第 2 行看到第 1 行 | 它读节点前的值 | 两个 Variable 节点 |
| 指望 Reset 删除 | Reset 恢复默认 | 用 Remove |
| 计数器无默认 | 算术啥也不出 | 默认 0 |
| 循环顶部重置计数 | 永远到不了上限 | 行程边界重置 |
| 运行中改变量类型 | 行走 Failure | 一变量一类型 |
故障排查
没有变量变化且节点走 Failure。 全有或全无:一行坏挡住全部。逐行查值与类型。
计数器永远是 1。
该行在赋值而非累加。用 Add to it,或 {{count}} + 1。
转换持续失败。 文本无可解析数字。开 Ignore surrounding text,或设回退。
按实例的值几天前的旧的。 按实例就是这个意思。在设置流程里显式清除。
FAQ
必须先声明变量吗? 设置它的行会创建它。声明给它类型和默认值,更好。
对未设变量 Add 会怎样?
Add/Subtract 视为 0;Multiply/Divide 视为 1。
{{name}} 与 ${name} 有别吗?
无。
Expire-after 最长? 一年。
相关节点
- If——按你存的分支
- Read Text——值的常见来源
- Runtime Memory——带 TTL 的跨运行记忆
- Sub Flow——向别的流程传值
相关页面
- 变量与记忆——完整的作用域与类型