用途:在 iii 引擎中为触发器增加条件门控,类似中间件守卫或事件过滤器。条件函数在处理器之前被调用,返回 true 时处理器正常执行,返回 false 时静默跳过,不报错也不重试。
主要能力:条件函数是注册后返回布尔值的函数,接收与处理器相同的事件数据;通过触发器配置中的 condition_function_id 附加到任意触发器类型,包括 http、durable:subscriber、cron、state、stream、subscribe。
使用方式:先用 registerFunction 注册条件函数(如 conditions::is-high-value)和处理器函数,再用 registerTrigger 绑定,例如 registerTrigger({ type: 'state', function_id: 'orders::notify-high-value', config: { scope: 'orders', key: 'status', condition_function_id: 'conditions::is-high-value' } })。建议条件函数 ID 使用 conditions:: 前缀便于组织。参考实现见 references/trigger-conditions.js,另有 Python 与 Rust 版本。
适用场景:阈值检查、角色校验、功能开关等业务规则;HTTP 触发器做鉴权守卫,durable:subscriber 做消息过滤。
限制与注意:条件函数每次触发都会运行,应保持轻量快速;建议把多条业务规则合并到一个条件函数中,而不是链式串联条件;条件函数内部可调用 trigger() 检查状态或其他函数。注册函数与触发器的一般用法参见 iii-functions-and-triggers,状态变更触发参见 iii-state-reactions,调用模式参见 iii-trigger-actions。应用示例前需先确认环境与安全约束。