如何将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
相关产品推荐
相关产品推荐

