用途:在 iii 引擎中为状态变化注册自动触发的反应函数。当某个 scope 内的键值状态发生 set、update 或 delete 时,触发器会发出变更事件并调用已注册的处理函数,适合构建响应式副作用逻辑。
主要能力:state 触发器在受监视 scope 内值变化时触发;处理函数接收 { new_value, old_value, key, event_type } 描述变更;可用 condition_function_id 作为条件门控,仅当条件函数返回真值时才执行;同一 scope 可被多个反应独立监视;反应在 state::set、state::update、state::delete 操作时触发。
使用方式:使用 registerFunction 定义反应处理函数,用 registerTrigger({ type: 'state' }) 监视 scope,配置项为 config: { scope, key, condition_function_id },其中 scope 用于过滤域(如 orders、user-profiles),key 可缩小到单个键,condition_function_id 为可选条件门。处理函数中可比较 payload.new_value 与 payload.old_value,用 payload.event_type 区分 set、update、delete;也可通过 trigger({ function_id: 'state::set', payload }) 写入派生状态,从而在一个 scope 的处理中触发另一 scope 的反应形成链式反应。参考实现见 references/state-reactions.js,另有 Python 与 Rust 版本。
适用场景:需要在状态变更时自动执行副作用、按条件过滤反应、或跨 scope 链式联动时使用。
限制:需在 iii-config.yaml 中启用 iii-state,状态触发器才会触发;若只是直接读写状态而不需要反应,应使用 iii-state-management;若需要跨触发器类型共享的条件逻辑,应使用 iii-trigger-conditions;不应将其作为无关任务的通用回退方案,应用示例前需先确认环境与安全约束。