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); } }