Queueable インターフェースについて共有します。
特徴
・ジョブの監視可
・2つのジョブの連続的な処理可
使用方法
・ Queueable クラス作成
public class MyQueueableClass implements Queueable {
以下はメソッド
public void execute(QueueableContext context) {
// Your code here
}
・ Queueable クラス呼び出し
ID jobID = System.enqueueJob(new MyQueueableClass());
例
・ Queueable クラス作成
public class AsyncExecutionExample implements Queueable {
public void execute(QueueableContext context) {
Account a = new Account(Name='Acme',Phone='(415) 555-1212');
insert a;
}
}
・ Queueable クラス呼び出し
ID jobID = System.enqueueJob(new AsyncExecutionExample());
・ジョブ監視
AsyncApexJob jobInfo = [SELECT Status,NumberOfErrors FROM AsyncApexJob WHERE Id=:jobID];
・テストクラス
@isTest
public class AsyncExecutionExampleTest {
static testmethod void test1() {
// startTest/stopTest block to force async processes
// to run in the test.
Test.startTest();
System.enqueueJob(new AsyncExecutionExample());
Test.stopTest();
// Validate that the job has run
// by verifying that the record was created.
// This query returns only the account created in test context by the
// Queueable class method.
Account acct = [SELECT Name,Phone FROM Account WHERE Name='Acme' LIMIT 1];
System.assertNotEquals(null, acct);
System.assertEquals('(415) 555-1212', acct.Phone);
}
}