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

在Salesforce自动转换Lead的Apex类中设置AccountID与ContactID

解决Salesforce Flow调用Apex转换Lead到已有Account/Contact的参数传递问题

原代码的核心问题是错误地尝试直接访问Flow实例获取变量,Invocable方法的正确做法是通过自定义输入参数类接收Flow传递的值,而非直接引用Flow interview对象。以下是修正后的实现步骤:

1. 修正Apex类代码

创建包含所需字段的输入参数类,让Flow可以直接传递Lead ID、目标Account ID和Contact ID:

public class AutoConvertLeads {
    // 自定义输入参数类,对应Flow要传递的变量
    public class ConvertRequest {
        @InvocableVariable(required=true)
        public Id leadId; // 要转换的Lead ID
        @InvocableVariable(required=true)
        public Id targetAccountId; // Flow中的varAccountID
        @InvocableVariable(required=true)
        public Id targetContactId; // Flow中的目标Contact ID
    }

    @InvocableMethod(label='自动转换Lead到已有Account和Contact' description='将指定Lead转换到已存在的Account和Contact')
    public static void convertLeads(List<ConvertRequest> requests) {
        // 获取默认的转换状态
        LeadStatus convertedStatus = [SELECT MasterLabel FROM LeadStatus WHERE IsConverted = true LIMIT 1];
        List<Database.LeadConvert> convertList = new List<Database.LeadConvert>();

        for(ConvertRequest req : requests) {
            Database.LeadConvert leadConvert = new Database.LeadConvert();
            leadConvert.setLeadId(req.leadId);
            leadConvert.setConvertedStatus(convertedStatus.MasterLabel);
            leadConvert.setDoNotCreateOpportunity(true); // 不需要创建Opportunity
            leadConvert.setAccountId(req.targetAccountId); // 绑定Flow传入的Account ID
            leadConvert.setContactId(req.targetContactId); // 绑定Flow传入的Contact ID
            convertList.add(leadConvert);
        }

        if(!convertList.isEmpty()) {
            Database.convertLead(convertList);
        }
    }
}

2. Flow中的配置步骤

  • 在Flow里添加「调用Apex」动作,选择上述AutoConvertLeads类的convertLeads方法
  • 在动作的「设置输入值」环节,分别映射:
    • Lead Id:选择Flow中要转换的Lead记录ID(比如当前触发的Lead变量)
    • Target Account Id:选择Flow中存储目标Account ID的变量varAccountID
    • Target Contact Id:选择Flow中存储目标Contact ID的变量

关键修正点说明

  • 原代码中setContactId(currentlead)是错误的,currentlead是Lead的ID,必须传入已有的Contact ID
  • 移除了错误的Flow.interview.Flow_template_gallery引用,Invocable方法不能直接依赖特定Flow实例,通过输入参数传递变量是标准做法
  • 用自定义参数类接收多值,符合Salesforce Invocable方法的最佳实践

内容的提问来源于stack exchange,提问作者kennywutankman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:45:37