ObjectStack 在所有需要计算或布尔判断的场景统一使用 CEL(Google Common Expression Language)。本技能是编写公式、条件、谓词与动态种子元数据时的权威参考。
用途:定义 formula 字段表达式;编写字段级条件规则 visibleWhen、readonlyWhen、requiredWhen;编写校验规则的 when、Hook 的 condition、SharingRule 的 condition、Flow 决策表达式,以及种子记录的动态值。
主要能力:谓词与公式为裸 CEL,不要用 {} 包裹字段引用({} 是 map 字面量,属解析错误),如写 record.rating >= 4。表达式统一封装为 { dialect, source },注册方言有 cel、cron、template;js 方言已废弃。标准库函数按类别提供:日期(now、today、daysFromNow、daysAgo、daysBetween、addDays、addMonths、date、datetime、isoDate、isoDatetime)、数字(abs、round、floor、ceil、min、max)、字符串(upper、lower、trim、contains、startsWith、endsWith、matches、joinNonEmpty)、集合与空值(isBlank、isEmpty、coalesce、len),另有 has、size、int、string、bool、double、timestamp、duration 等内建。
必要用法:可空字符串参与拼接必须用 coalesce(..., ''),否则 null + string 会抛重载错误;除法需守护除数;校验规则中可空字段做排序或算术前必须显式 != null / == null / !isBlank 判断,has() 不算空值检查;插入事件不能用 previous,否则写入失败而非静默跳过;动态种子值用 cel 包裹,避免 new Date() 以通过确定性门槛。
限制:不存在日期算术,end - start、date + n 不可用,应改用 daysBetween、addDays、addMonths;不存在的函数会导致 os build 失败。公式字段是虚拟字段,不支持 where、orderBy、searchableFields 查询。表单视图 visibleWhen 仅客户端且默认放行,不能用于访问控制。资料未提供定价与平台信息。