如何在Salesforce自定义对象字段增改时触发Apex类?
实现自定义对象字段变更时自动触发Apex类的方案
步骤1:启用Metadata Change Events
- 在Setup中搜索Platform Events,找到
MetadataChangeEvent标准平台事件 - 确认其Publish Behavior设置为
Publish immediately - 若仅需监听特定自定义对象的字段变更,配置Change Data Capture订阅,筛选
CustomField类型的元数据变更,并指定目标对象的API名称
步骤2:编写Apex Trigger监听MetadataChangeEvent
创建Trigger捕获元数据变更事件,判断是否为目标对象的字段新增/修改操作,再调用你已有的Schema发送类:
trigger MetadataChangeTrigger on MetadataChangeEvent (after insert) { // 替换为你的目标自定义对象API名称(例如:MyCustomObject__c) String targetObjectApiName = 'MyCustomObject__c'; for (MetadataChangeEvent event : Trigger.new) { // 仅处理自定义字段的新增/修改事件 if (event.EntityType == 'CustomField' && event.ChangeType != 'DELETE') { String fieldFullName = event.EntityDefinition.QualifiedApiName; String objectApiName = fieldFullName.substringBefore('.'); if (objectApiName == targetObjectApiName) { // 调用你已有的发送Schema的Apex类 YourSchemaSenderClass.sendSchemaToEndpoint(); break; // 避免同一批次重复调用,可按需调整 } } } }
步骤3:验证触发逻辑
- 手动给目标自定义对象新增字段,或修改现有字段属性(如标签、数据类型)
- 检查第三方端点是否收到Schema消息,同时查看Salesforce的Apex Jobs和Debug Logs,确认Trigger与你的类正常执行
注意事项
- 权限配置:确保运行Trigger的自动化用户拥有访问Metadata API、目标自定义对象及调用你Apex类的权限
- 批量处理:若同一批次存在多个字段变更,需添加去重逻辑避免重复发送Schema
- 错误处理:建议在你的
YourSchemaSenderClass中加入异常捕获与重试机制,比如用Queueable Apex异步处理发送,避免阻塞元数据变更操作
内容的提问来源于stack exchange,提问作者user21189041
相关产品推荐
相关产品推荐

