在 Salesforce 中,异步处理是应对 governor 限制、提升系统性能和用户体验的关键机制,主要用于处理耗时操作、大批量数据处理或不需要实时完成的任务。以下是 Salesforce 中主要的异步处理方式及其特点:
1. Batch Apex(批处理)
核心用途:处理大批量数据(如批量更新、删除、同步外部系统数据),支持单次处理数万甚至数百万条记录。
工作原理:
- 将数据分成多个批次(默认每批 200 条,可自定义)
- 每批次独立执行,单独计算 governor 限制
- 异步在后台运行,不阻塞用户操作
代码示例:
// 批量更新账户的行业字段
public class AccountBatchProcessor implements Database.Batchable<SObject> {
// 1. 定义查询范围
public Database.QueryLocator start(Database.BatchableContext bc) {
return Database.getQueryLocator([SELECT Id, Industry FROM Account WHERE Industry = 'IT']);
}
// 2. 处理每批次数据
public void execute(Database.BatchableContext bc, List<SObject> scope) {
List<Account> accountsToUpdate = new List<Account>();
for (SObject obj : scope) {
Account acc = (Account)obj;
acc.Industry = 'Technology'; // 将"IT"统一改为"Technology"
accountsToUpdate.add(acc);
}
update accountsToUpdate; // 每批次内部的DML操作
}
// 3. 处理完成后执行(如发送通知)
public void finish(Database.BatchableContext bc) {
AsyncApexJob job = [SELECT Id, Status, NumberOfErrors FROM AsyncApexJob WHERE Id = :bc.getJobId()];
System.debug('批处理完成:状态=' + job.Status + ',错误数=' + job.NumberOfErrors);
}
}
// 执行批处理(匿名窗口)
AccountBatchProcessor batch = new AccountBatchProcessor();
Database.executeBatch(batch, 100); // 每批次处理100条记录
优点:支持超大规模数据处理;每批次独立计算 governor 限制;可实现复杂业务逻辑。
缺点:启动后无法暂停;不适合实时性要求高的场景;start 和 finish<

最低0.47元/天 解锁文章
39

被折叠的 条评论
为什么被折叠?



