为什么我需要为 Queueable Apex 的每条记录设置 parentId

Why i need to set the parentId for each record for Queueable Apex

希望你在这些时候一切顺利,下面是一个常见的场景,可以获取一组 sObject 记录,执行一些处理,例如调用外部 REST 端点或执行一些计算,然后更新它们在数据库中异步。 .以下代码获取 Account 记录的集合,为每条记录设置 parentId,然后更新数据库中的记录。

我的问题是:-

A) Why i need to set the parentId for each record for Queueable Apex?

B) Why i cant use public identifier (mind you i know differences between public and private identifier :)) but why here we used private in Queueable Apex and then we have to set the values?

public class UpdateParentAccount implements Queueable {

private List<Account> accounts;
private ID parent;

public UpdateParentAccount(List<Account> records, ID id) {
    this.accounts = records;
    this.parent = id;
}
public void execute(QueueableContext context) {
    for (Account account : accounts) {
      account.parentId = parent;
      // perform other processing or callout
    }
    update accounts;
   }

}

来源:- https://trailhead.salesforce.com/en/content/learn/modules/asynchronous_apex/async_apex_queueable

父 ID 的设置是可以异步完成的任务示例。这是一个选择不当的示例,因为相同的任务 可以 在没有 Queuable 的情况下同步完成。 (如果有很多帐户记录正在更新,那么将此任务移动到异步可能是个好主意)。

Public 与私有 - 将字段设为私有是将数据封装在 class 中的最佳做法。它用于将结构化数据对象的值或状态隐藏在 class 中,从而防止直接访问它们。在 Queuable 的情况下,这有点像实用程序 class,它将在非常特定的上下文中使用,因此您可以创建变量 public 并删除构造函数。