场景中的变量与数据
一个场景有三套机制用来让数据流动。它们相互补充,而知道该选哪一套能省去大量无谓的连线。
1. 连线上的令牌
Section titled “1. 连线上的令牌”这是主要机制:一个节点产出一个值,它沿着连线传送,中途可能被一个 选择器重新塑形,然后到达下一个节点的输入。
它既显式又易读:数据流就是这张图。
凡是局部性的事情都用它 —— 某次调用的结果被下一次调用消费。
2. 运行变量
Section titled “2. 运行变量”一个命名的空间,专属于本次执行:
- 设置变量写入一个值;
- 获取变量把它读回来;
variable类型的值可以在任意字段中即时读取它;{{nom}}在模板中读取它(Transform template、Map);vars对象在代码动作中读取它;- 添加到列表和从列表移除可以直接写入源变量。
在执行期间,一个运行变量会覆盖环境:使用 {{token}} 的请求会取到场景写入的令牌,
而不是环境中的那个。
凡是对整次执行而言全局的东西都用它:一个令牌、一个关联标识符、一个计数器 —— 这比在整张图里拉一条连线要好。
3. 参数与输出
Section titled “3. 参数与输出”-
Input / Param 节点声明一个或多个命名参数,每个都有自己的类型。它只发出 一个对象
{ name: value, … }。这些值的来源按顺序是:启动时(界面或 MCP)、命令行(
--param name=value), 或者当场景到达该节点而没有可用值时发起的一次交互式询问。 -
Output / Return 节点向调用方暴露一个命名的结果。被 运行场景动作调用的场景 会把它的输出呈现在调用方的
output:<name>端口上。
正是这一点使得组合成为可能:一个返回令牌的“登录”场景,可以被其他场景复用。
请求类动作有一个 env 端口:把一个环境连到它上面(environment 类型的值,或者一个环境名称),
就会在该环境中执行这次调用。
这就是让同一个场景先跑 staging 再跑 production 而无需复制任何东西的办法 ——
把环境作为场景的一个参数传入即可。
无界面模式下的解析
Section titled “无界面模式下的解析”所有带类型的值在界面中和无界面时的解析方式完全一致:自定义列表、枚举、环境预览。 在界面里能跑通的场景,在 CI 里也能跑通。
一个有歧义的环境名称(两个同名环境)会引发一个明确的错误:这时请改用标识符。
命令行参数的类型转换
Section titled “命令行参数的类型转换”--param 接收的是文本;Restorm 会按参数的声明类型来转换它:
| 声明类型 | 您传入的内容 |
|---|---|
| 数值 | --param Seuil=42 |
| Boolean | --param Actif=true(也接受 1、yes、on) |
| Date math | 一个日期,或一个 epoch 时间戳 |
| 列表 | 一段 JSON:--param Ids='[1,2,3]' |
| 枚举 | 该值,并会对照允许的集合进行校验 |
| 自定义列表 | 标签,会被转换成值(Rouge → FF0000) |
| 环境 | 一个环境名称或标识符 |
| 其余 | 原始字符串 |
无法完成的转换会让启动失败并给出清晰的提示,而不是带着一个错误的值继续执行。