我对 Apex 开发非常陌生,我正在尝试从 Salesforce 流中批量传递记录中的字符串列表,但无法让 Apex 脚本工作。如果我尝试从外部流调用,代码将不会运行。但是,如果我从可调用方法中调试代码块,它就会运行...有人能够提供一些见解吗?
public without sharing class trac_GuidestarOrgUpdateBatch {
@InvocableMethod(Label='Update Bulk Organisations' Description='Updates list of orgs returned from guidestar.' Category='Account')
public void<String> getBulkOrganisations(List<String> searchKeywords){
//Get search list
List<Account> search = [SELECT EIN__c, Primary_Issue_Area__c FROM Account WHERE EIN__c =: searchKeywords];
//Initialize account list to update
List<Account> accountList = new List<Account>();
for (Account acct : search) {
acct.Primary_Issue_Area__c = 'New test';
accountList.add(acct);
}
Database.update(accountList,false);
}
你确定它不执行吗?打开开发人员控制台(或“设置”->“调试日志”并开始自己跟踪),执行屏幕流程,查看是否生成了包含您的代码的日志。 检查应该找到的帐户,查看值是否已更改(或者该值是否已经是“新测试” - 上次修改日期、上次修改者已更改)
我看到的最大问题是
Database.update(accountList,false);
。
要么做一个正常的
update accountList;
(你可能会注意到它会抛出错误)。或者您可以处理 Database.update
返回的内容并执行...某些操作(为每个无法更新的帐户创建一个任务?)。像https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_database_saveresult.htm