用途:在嵌入的 Domo 仪表板或卡片加载后,由宿主页面动态施加运行时过滤器。与服务端程序化过滤器(写入嵌入令牌)不同,客户端过滤即时生效、无需重新获取令牌,适合 UI 驱动的筛选、钻取响应、跨多个嵌入同步过滤条件,以及向 App Studio 应用传递上下文。服务端过滤请参考 cap-de-programmatic-filters。
主要能力:通过 MessagePort(JSON-RPC 2.0)双向通信。宿主可发送 /v1/filters/apply 应用或清除过滤器、/v1/appData/apply 向 App Studio 应用发送数据;Domo 会回传 /v1/onDrill(钻取)、/v1/onFiltersChange(过滤变化)、/v1/onAppReady、/v1/onAppData、/v1/onFrameSizeChange 等事件。过滤器对象使用 column、operand、values,可选 dataType、dataSourceId;支持的 operand 包括 IN、NOT_IN、EQUALS、NOT_EQUALS、GREATER_THAN、GREATER_THAN_EQUALS_TO、LESS_THAN、LESS_THAN_EQUALS_TO、BETWEEN、CONTAINS。
使用方式:先在应用根部尽早初始化全局 message 监听,捕获 iframe 握手并保存 referenceId 对应的端口;在 Domo 后台 Admin > Network Security > Embed Authorized Domains 添加宿主域名(自定义应用另加 Custom Apps Authorized Domains);必须使用基于令牌的认证嵌入,公开嵌入 URL 不会发起握手。之后通过已存端口发送 RPC 命令,可按 referenceId 定向或广播到所有嵌入。App Studio 配合 overrideFilters=true 时需先监听 /v1/onAppReady 再发送过滤器,且至少发送一次(可为空数组 [])。无 JS 的替代方案是 URL 上的 pfilters 参数,但会触发 iframe 刷新且可见可改。
限制:客户端过滤与 pfilters 仅供体验优化,用户可见可改,不构成安全边界,数据隔离需用服务端程序化过滤。注意客户端用 operand 而服务端用 operator;在握手完成前调用会静默失败,需排队或等待就绪事件;referenceId 由 iframe 分配,不可控;GREATER_THAN_EQUALS_TO 有时拼写为 GREAT_THAN_EQUALS_TO;客户端不支持 SQL 过滤器。分类标识:other-ai-tools。