课程章节介绍
同学们,我们来看这个叫 CredyChunkingDeliverable 的示例,它很好地展示了如何把 Cursor 和 Deliverable 这两种模式结合起来,处理大批量的数据。
首先,在它的构造函数里,会直接创建一个 Cursor。这个 Cursor 就像是我们手里的一根指针,它可以指向查询结果里的某一条记录,方便我们一段一段地往后取数据。
接下来,在 execute 方法中,每次都会从这个 Cursor 里获取 200 条记录。拿到这 200 条以后,就按批处理的方式把它们处理掉。处理完之后,程序会检查一下:指针后面是不是还有更多记录?如果还有,它就会自动安排一个新的 Deliverable 作业,让这个新作业继续去处理下一批 200 条。这样就实现了链式处理,直到所有数据都被处理完。
另外,示例里还有一个限制检查的部分,教我们怎么监控指针的使用状况。我们可以用到两个方法:一个是 Limits.getApexCursors,它能告诉我们当前上下文里已经用了多少个指针;另一个是 OrgLimits.getMap,通过它我们可以拿到各种每日限制。这里需要特别关注两个限制:DailyApexCursorScale 和 DailyApexCursorRowsScale。不管你用的是标准指针,还是翻页指针,这两个限制都是共享计数的,也就是说它们会合在一起计算你每天能用的指针数量和能取出的行数。掌握这些,就能避免因为超限而导致作业失败了。
这样讲,应该就清楚了吧。
关键词
Apex
Salesforce
Developer Guide