Salesforce记录触发流更新时因HTTP Callout限制无法运行的问题咨询
Salesforce记录触发流调用外部API的解决方案
方案1:调度路径+动态兼容条件
针对调度路径必须设置入口条件的限制,放弃静态恒成立条件,改用覆盖创建/更新场景的动态条件组:
- 条件组1:
IsNew() = True(匹配记录创建场景) - 条件组2:
ISCHANGED(LastModifiedDate) = True(匹配记录更新场景,因为每次更新必然修改最后修改时间) - 将流的运行模式设为「每次记录更新且满足条件时运行」,这样创建时触发第一个条件组,更新时触发第二个条件组,完全覆盖需求场景。
方案2:平台事件中转(无代码方案)
绕开记录触发流的HTTP调用限制,用平台事件做中间层:
- 创建自定义平台事件(例如
ExternalAPIEvent__e),添加需要传递给外部API的字段; - 新建立即执行的记录触发流,在记录创建/更新时生成该平台事件记录(平台事件操作不属于外部调用,可放在立即路径);
- 再建平台事件触发的流,监听上述事件,在流内执行HTTP调用。
方案3:Apex触发器+@Future注解(代码方案)
如果允许编写Apex代码,可直接规避流的限制:
- 编写记录触发的Apex触发器,在
after insert和after update事件中调用带@future(callout=true)注解的方法; - 在该future方法内执行HTTP Callout,这种方式不受流的异步路径条件限制,支持任意创建/更新场景。
注意事项
- 调度路径的0分钟延迟属于异步执行,需确保外部API支持幂等,避免Salesforce自动重试导致重复调用;
- 平台事件默认保留72小时,足够处理绝大多数异步执行场景。
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

