You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过自定义元数据检查Opportunity关联字段的变更情况

用自定义元数据实现Opportunity字段变更检查

步骤1:创建自定义元数据类型

  • 新建自定义元数据类型,API名设为Opportunity_Comparison_Field__mdt
  • 给该元数据类型添加一个文本类型的字段,API名Field_API_Name__c(用于存储需要检查的Opportunity字段API名称,比如StageName、Amount等)
  • 在元数据类型中添加记录,每条记录对应一个需要检查的Opportunity字段

步骤2:改写Apex逻辑

替换原来依赖Field Set的代码,改为查询自定义元数据中的字段列表,再逐一对比新旧记录的字段值:

public static boolean isValuesChanged(List<Opportunity> newOpportunitiesList, Map<Id, Opportunity> oldOpportunityMap) {
    // 查询自定义元数据中配置的需要检查的字段
    List<Opportunity_Comparison_Field__mdt> comparisonFields = [
        SELECT Field_API_Name__c 
        FROM Opportunity_Comparison_Field__mdt
    ];

    // 遍历所有待检查的Opportunity记录
    for (Opportunity oppNew : newOpportunitiesList) {
        Opportunity oppOld = oldOpportunityMap.get(oppNew.Id);
        // 保留原逻辑中的Amount大于0的判断条件
        if (oppNew.Amount <= 0) continue;

        // 遍历自定义元数据配置的字段
        for (Opportunity_Comparison_Field__mdt fieldMeta : comparisonFields) {
            String fieldApiName = fieldMeta.Field_API_Name__c;
            Object newValue = oppNew.get(fieldApiName);
            Object oldValue = oppOld.get(fieldApiName);

            // 处理值对比:注意null的情况,用equals方法适配所有数据类型
            boolean isChanged = false;
            if (newValue == null && oldValue != null) {
                isChanged = true;
            } else if (newValue != null && !newValue.equals(oldValue)) {
                isChanged = true;
            }

            if (isChanged) {
                return true;
            }
        }
    }
    return false;
}

关键改动说明

  1. 数据源替换:从Field Set改为查询自定义元数据记录,无需修改页面布局,直接在元数据中增删字段,灵活性更高
  2. 值对比优化:原代码用!=处理复杂数据类型(如日期、Lookup字段)时可能不准确,改用equals方法并单独处理null值,确保对比逻辑严谨
  3. 逻辑一致性:保留了原代码中Amount > 0的判断条件,以及"只要有一个字段变更就返回true"的核心逻辑

注意事项

  • 确保自定义元数据中的Field_API_Name__c字段值准确对应Opportunity的字段API名(区分大小写)
  • 若有性能顾虑,可以将自定义元数据的查询结果缓存(比如用静态变量或@AuraEnabled(cacheable=true)),避免每次调用都查询数据库

内容的提问来源于stack exchange,提问作者unflagged.destination

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:50:25