跳转到内容

场景中的变量与数据

一个场景有三套机制用来让数据流动。它们相互补充,而知道该选哪一套能省去大量无谓的连线。

这是主要机制:一个节点产出一个值,它沿着连线传送,中途可能被一个 选择器重新塑形,然后到达下一个节点的输入。

它既显式又易读:数据流就是这张图。

凡是局部性的事情都用它 —— 某次调用的结果被下一次调用消费。

一个命名的空间,专属于本次执行:

  • 设置变量写入一个值;
  • 获取变量把它读回来;
  • variable 类型的值可以在任意字段中即时读取它;
  • {{nom}} 在模板中读取它(Transform templateMap);
  • vars 对象在代码动作中读取它;
  • 添加到列表从列表移除可以直接写入源变量。

在执行期间,一个运行变量会覆盖环境:使用 {{token}} 的请求会取到场景写入的令牌, 而不是环境中的那个。

凡是对整次执行而言全局的东西都用它:一个令牌、一个关联标识符、一个计数器 —— 这比在整张图里拉一条连线要好。

  • Input / Param 节点声明一个或多个命名参数,每个都有自己的类型。它只发出 一个对象 { name: value, … }

    这些值的来源按顺序是:启动时(界面或 MCP)、命令行(--param name=value), 或者当场景到达该节点而没有可用值时发起的一次交互式询问

  • Output / Return 节点向调用方暴露一个命名的结果。被 运行场景动作调用的场景 会把它的输出呈现在调用方的 output:<name> 端口上。

正是这一点使得组合成为可能:一个返回令牌的“登录”场景,可以被其他场景复用。

请求类动作有一个 env 端口:把一个环境连到它上面(environment 类型的值,或者一个环境名称), 就会在该环境中执行这次调用。

这就是让同一个场景先跑 staging 再跑 production 而无需复制任何东西的办法 —— 把环境作为场景的一个参数传入即可。

所有带类型的值在界面中和无界面时的解析方式完全一致:自定义列表、枚举、环境预览。 在界面里能跑通的场景,在 CI 里也能跑通。

一个有歧义的环境名称(两个同名环境)会引发一个明确的错误:这时请改用标识符。

--param 接收的是文本;Restorm 会按参数的声明类型来转换它:

声明类型您传入的内容
数值--param Seuil=42
Boolean--param Actif=true(也接受 1yeson
Date math一个日期,或一个 epoch 时间戳
列表一段 JSON:--param Ids='[1,2,3]'
枚举该值,并会对照允许的集合进行校验
自定义列表标签,会被转换成值(RougeFF0000
环境一个环境名称或标识符
其余原始字符串

无法完成的转换会让启动失败并给出清晰的提示,而不是带着一个错误的值继续执行。