1.用Queueable Apex控制过程
2015年冬季发布的Queueable Apex本质上是future的超集。
利用了future方法的简单性和Batch Apex的强大功能,将它们混合在一起,形成了Queueable Apex。
它为您提供了一个平台为您序列化的类结构,一个没有start和finish方法的简化接口,甚至允许您使用的不仅仅是原始参数!
它由一个简单的System.enqueueJob()方法调用,该方法返回一个可以监视的作业ID。
Queueable Apex允许您提交作业进行异步处理,类似于未来的方法,并具有以下其他好处:
非基本类型:可排队类可以包含非基本数据类型的成员变量,例如Sobject或自定义Apex类型。
作业执行时可以访问这些对象。
监视:当您通过调用System.enqueueJob方法提交作业时,该方法返回AsyncApexJob记录的ID。
您可以通过Apex Jobs页面中的Salesforce用户界面,或通过从AsyncApexJob查询记录,以编程方式使用此ID来标识作业并监视其进度。
链接作业:通过从正在运行的作业启动第二个作业,可以将一个作业链接到另一个作业。如果需要进行一些顺序处理,链接作业非常有用。
2.Queueable VS Future
因为可排队方法在功能上等同于未来的方法,所以大多数时候您可能希望使用可排队方法而不是未来的方法。
然而,这并不一定意味着您现在就应该回去重构所有未来的方法。
使用未来方法而不是排队的另一个原因是,有时同步执行功能,有时异步执行功能。
以这种方式重构方法要比转换为可排队类容易得多。
当您发现现有代码的一部分需要移动到异步执行时,这非常方便。
您只需创建一个类似的未来方法,将同步方法包装为:
@future
static void myFutureMethod(List<String> params) {
// call synchronous method
mySyncMethod(par