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

如何将Salesforce Flow变量正确传入对应作用域的Apex类

问题原因
  • 核心错误:你已经定义了带@InvocableVariable注解的Flow入参承载类FlowInputs,但@InvocableMethod标注的方法入参错误使用了List<String>,没有关联到你声明的FlowInputs类,因此Flow无法识别你定义的4个输入字段,才会抛出「输入参数不存在」的报错。
  • 附加隐藏问题:原代码中outList未初始化就调用add()方法,运行时会直接抛出空指针异常。
修正后的代码
global class MyApexClass
{
    // 存储请求体字段,后续用于序列化为JSON
    public class Body {
        public String address;
        public String companywebsite;
        public String companyname;
        public String opportunityid;
    }
    // 存储Flow传入的参数
    public class FlowInputs {
        @InvocableVariable public String Address;
        @InvocableVariable public String CompanyWebsite;
        @InvocableVariable public String CompanyName;
        @InvocableVariable public String OppId;
    }
    // 修正入参为FlowInputs类型的列表,匹配Flow批量执行逻辑
    @InvocableMethod(label='xxxx' description='xxxxx')
    public static List<String> sendToWebService(List<FlowInputs> flowData){
        List<String> outList = new List<String>();

        for (FlowInputs input : flowData){
            // 按你的业务逻辑提取参数存入列表
            outList.add(input.Address);
            outList.add(input.CompanyWebsite);
            outList.add(input.CompanyName);
            outList.add(input.OppId);
        }
        
        SendToAPI(outList);
        return outList;
    }

    // 发送POST请求逻辑保持不变
    webservice static void SendToAPI(List<String> accountData){
        Http m_http = new Http();
        HttpRequest req = new HttpRequest();
        // 原有请求逻辑无需修改
        .........
    }
}
后续操作步骤
  • 保存修改后的Apex类,确认无编译报错
  • 回到Flow编辑页,删除原有的Apex操作元素,重新添加一次该Apex动作,此时Flow会自动读取最新的入参配置,显示Address、CompanyWebsite、CompanyName、OppId四个可绑定的输入项
  • 重新绑定Flow中对应的Opportunity字段到四个输入参数,保存后调试即可正常传参

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:54:05