推广上线

把实例切换到 enforce,以及已知限制

  1. 推广上线
  2. 限制
  3. 向导表单

推广上线

enforce 是默认值。如果实例上有通过 REST 运行表单的脚本或其他系统, 请分步骤切换,在拒绝任何运行之前先观察日志:

  1. 为整个实例设置 LAUNCH_VALIDATION=log (如果是升级,在升级之前设置)。
  2. 在此模式下运行一段时间并审查日志: would refuse 警告表示违反规则的 运行; extravars differ 警告表示某些表单在服务器上的计算结果 不同(时间戳、外部数据)。针对每个表单判断这是否 重要。
  3. 把这些表单切换为 launchValidation: enforce 。发送无效值或 编造 extravars 的调用方现在会收到 422 以及原因。
  4. 当每个表单都按预期工作后,为整个实例移除 LAUNCH_VALIDATION (或将其设为 enforce )。

限制

运行验证目前还不能覆盖所有情况:

  • 向导表单不能带修改重新运行,并且在 7.0 之前运行的向导作业 不能在 enforce 下重新运行(它没有保存各步骤的值)。MCP 服务器 不能运行向导表单。
  • 浏览器中的占位符解析仍然使用其自己的一份服务器代码副本;在 极少数边缘情况下( __undefined__ 、表达式中的引号),两者对某个 占位符的解析结果可能不同。 log 能揭示这类差异。
  • runLocal 表达式在浏览器中运行于浏览器的 JavaScript 引擎,在服务器上则运行于 沙箱;同样的代码产生同样的结果,除非它依赖于 浏览器的时区或语言区域。

向导表单

向导会逐个步骤检查:浏览器发送 每个步骤的值,服务器则用每个步骤自己的子表单检查用户将要提交的每个步骤。

  • 如果某个步骤是 optional 且用户跳过了它,或者其 when 为 false,则该步骤不计入。
  • 步骤通过 $(__parent__.<step>.<field>) 读取前面的步骤,使用的是经过检查的值。
  • 错误会以 <step>.<field> 的形式指出步骤和字段。
  • 在 enforce 下,extravars 在服务器上构建,每个步骤位于其 defaultModel 之下。
  • 向导中不支持文件字段。