确定性计算规则

next 运行时会在校验和宿主操作之前计算派生字段。表单文档不能执行 JavaScript。

{
  "id": "derive-total",
  "target": "total",
  "kind": "computed",
  "expression": {
    "op": "add",
    "left": { "op": "field", "path": "subtotal" },
    "right": { "op": "field", "path": "tax" }
  }
}

编译器会拒绝重复目标、非值节点、未声明字段路径和依赖环。编译成功的计划会保存稳定的拓扑顺序,以及编译时使用的表达式操作上限。

evaluateComputedRules 返回不可变的派生值、稳定错误和执行轨迹。轨迹状态包括 setremovedunchangederrorskipped。某条规则失败时,它及其下游结果都会被移除,宿主不会提交上一次留下的旧值。

React、Vue 和 Web Component 都把计算目标渲染为只读控件。工作流节点经过 revision 与 digest 校验后,派生值才会交给宿主。

重复字段中的计算规则需要声明 scope: "row",路径可写成 orders.*.lines.*.quantity。规则可以读取全局字段、外层行和当前行;跨到同级其他行或更深层级会编译失败。每个实际行都有独立的执行轨迹、错误传播和增量缓存。校验、可见性和启用规则也使用这套行作用域。

支持的运算、轨迹隐私和失败语义见完整计算规则协议