选择变量、配方、Query、RecordStore 或 i18n
何时用
当你准备保存状态、维护工艺参数、连接 MES、显示表格数据或制作多语言运行页,但不确定该用哪种能力时,使用本指南。
开始前
先回答四个问题:
- 数据来自当前 app、现场设备,还是外部系统?
- 应用停止或设备断电后是否必须保留?
- 它是一个小值、一整套参数,还是多行记录?
- 谁负责修改它:工程师、运行页操作员,还是外部系统?
步骤
第一步:选择能力
| 需求 | 选择 | 典型例子 |
|---|---|---|
| 运行期间共享一个小值 | App 变量 | 当前工单号、设备状态 |
| 重启后仍保留一个小值 | Saved 变量 | 标定值、累计计数、阈值 |
| 按产品型号切换一整套固定字段 | Recipe | 温度、压力、时间组成的产品配方 |
| 调用 app 外的服务或数据库 | Query | 查询 MES 工单、向 ERP 报工 |
| 在设备端维护多行结构化数据 | RecordStore | 点位表、批次表、轻量参数表 |
| 让同一运行页切换语言 | i18n | 按钮、标题、报警文案 |
不要为了方便把所有数据都放进变量。大量历史数据、复杂查询或跨设备共享数据应交给外部系统,再通过 Query 访问。
第二步:从正确入口配置
变量
- 打开编辑器 Settings → 变量。
- 新增变量,填写名称、类型、默认值和所需作用域。
- 保存后,在 Page 或 Graph 中读取和写入。
- 分别验证首次启动值、运行中修改和重新启动后的值。
配方
- 先在 Object Tree 添加唯一的
RecipeManager对象。 - 打开 Settings → 配方定义字段。
- 新增不同产品的配方,填写每个字段值并保存。
- 在测试页或流程中切换配方,确认所有字段作为一组生效。
Query
- 打开 Settings → 查询。
- 新增 Query,明确外部端点、调用方式、输入参数和预期输出。
- 保存后先用测试数据验证失败、超时和异常响应,再接入 Page 或 Graph。
- 涉及写入外部系统时,使用测试环境完成一次可追溯的端到端验证。
RecordStore
- 在 Object Tree 添加
RecordStore对象。 - 在右侧 Properties 中定义字段和数据保存方式。
- 通过对象方法在 Page 或 Graph 中读取、添加、更新和删除行。
- 用空表、正常数据和异常数据各验证一次。
i18n
- 打开 Settings → 国际化,添加所需语言并设置默认语言。
- 为用户可见文案建立稳定的 key,并填写每种语言的翻译。
- 在 widget 文本属性中使用翻译选择入口绑定 key。
- 切换运行页语言,检查长文案、缺失翻译和默认语言回退。
成功表现
- 停止或重启 app 后,临时值与需保留值的行为符合预期。
- 切换 Recipe 时,整套字段一致更新,不会混用两个产品的参数。
- Query 的正常、失败和超时路径都给出明确结果。
- RecordStore 的字段与页面表格一致,增删改查后数据没有错列。
- 切换语言后,运行页没有裸 key、空白文案或明显截断。
常见问题
该用 Saved 变量还是 Recipe?
少量彼此独立的长期参数用 Saved 变量;一组需要命名、切换和整体应用的参数用 Recipe。
该用 RecordStore 还是 Query?
当前设备上的轻量多行数据用 RecordStore;外部数据库、大量历史、复杂检索或多设备共享用 Query。
配方页提示缺少 RecipeManager
先在 Object Tree 添加 RecipeManager。每个 app 只需要一个。
i18n 保存了但页面仍显示旧文案
确认 widget 已绑定翻译 key,而不是仍使用固定文本;再检查当前语言和默认语言是否存在该 key。
AI 可以怎么帮
让 AI 先做选择,不要一开始就让它创建文件:
我需要保存产品型号、温度、压力、当前工单号和最近 50 条批次结果。先按生命周期和数据形状说明每项应使用 Variable、Recipe、Query 还是 RecordStore。等我确认后再修改,并列出验收用例。
AI 还可以生成翻译初稿、Query 输入输出草案和测试数据,但应基于你确认的业务字段。
必须人工确认
- 哪些数据必须断电保留,以及允许保留多长时间。
- 配方单位、范围、默认值和下发设备前的审批规则。
- Query 的真实端点、认证方式、写入副作用和失败补偿。
- RecordStore 是否已经超出单机轻量数据的适用范围。
- 所有操作员可见翻译,尤其是报警、确认和安全相关文案。