Salesforce Flow调用Apex可调用方法失败,调试正常求助
问题修复指南
代码语法错误修正
你的Apex类存在两个关键错误,导致Flow无法正常调用:
- Invocable方法必须为静态方法:Salesforce规定
@InvocableMethod修饰的方法必须是static,否则外部组件(如Flow)无法访问。 - 返回类型写法非法:
void<String>是错误语法,无返回值时直接写void即可。
同时SOQL中匹配集合应使用IN而非=(虽然Salesforce会兼容,但IN更符合规范)。
修复后的完整代码:
public without sharing class trac_GuidestarOrgUpdateBatch { @InvocableMethod(Label='批量更新组织' Description='更新从Guidestar返回的组织列表' Category='Account') public static void getBulkOrganisations(List<String> searchKeywords){ // 查询匹配EIN的账户 List<Account> searchAccounts = [SELECT EIN__c, Primary_Issue_Area__c FROM Account WHERE EIN__c IN :searchKeywords]; List<Account> updateAccounts = new List<Account>(); for (Account acct : searchAccounts) { acct.Primary_Issue_Area__c = 'New test'; updateAccounts.add(acct); } Database.update(updateAccounts, false); } }
Flow调用验证步骤
- 重新部署修正后的Apex类
- 在Flow中重新选择该Invocable方法,确认参数映射正确(确保传递的是字符串类型的EIN字段列表,与方法参数类型匹配)
- 测试时确认传递的EIN值在Account对象中存在,避免因无匹配记录导致无更新效果
调试技巧
若修复后仍无反应,可添加调试日志排查:
// 在方法开头添加 System.debug('传入的EIN列表:' + searchKeywords); System.debug('查询到的账户数量:' + searchAccounts.size());
通过Setup的调试日志功能查看执行记录,确认参数是否正确传递、是否查询到目标数据。
内容的提问来源于stack exchange,提问作者Daniel Zhou
相关产品推荐
相关产品推荐

