No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
Newer Version Available
Queueable インターフェース
名前空間
使用方法
Apex を非同期ジョブとして実行するには、Queueable インターフェースを実装し、execute メソッドの実装に処理ロジックを追加します。
Queueable インターフェースを実装するには、最初に implements キーワードでクラスを次のように宣言する必要があります。
1public class MyQueueableClass implements Queueable {次に、クラスで次のメソッドの実装を提供する必要があります。
1public void execute(QueueableContext context) {
2 // Your code here
3}クラスとメソッドの実装は、public または global として宣言する必要があります。
クラスを非同期実行するために送信するには、Queueable インターフェースのクラス実装のインスタンスを次のように渡して System.enqueueJob をコールします。
1ID jobID = System.enqueueJob(new MyQueueableClass());Queueable メソッド
Queueable のメソッドは次のとおりです。
execute(QueueableContext)
署名
public void execute(QueueableContext context)
パラメータ
- context
- 型: QueueableContext
- ジョブ ID が含まれます。
戻り値
型: Void
Queueable の実装例
これは、Queueable インターフェースの実装例です。この例の execute メソッドは、新規取引先を挿入します。
1swfobject.registerObject("clippy.codeblock-3", "9");public class AsyncExecutionExample implements Queueable {
2 public void execute(QueueableContext context) {
3 Account a = new Account(Name='Acme',Phone='(415) 555-1212');
4 insert a;
5 }
6}このクラスをジョブとしてキューに追加するには、次のメソッドをコールします。
1swfobject.registerObject("clippy.codeblock-4", "9");ID jobID = System.enqueueJob(new AsyncExecutionExample());キュー可能クラスを実行のために送信すると、ジョブはキューに追加され、システムリソースが使用可能になると処理されます。ジョブの状況は、プログラムで AsyncApexJob をクエリするか、ユーザインターフェースの [設定] で をクリックすることで監視できます。
送信したジョブに関する情報をクエリするには、System.enqueue メソッドが返したジョブ ID で絞り込んで AsyncApexJob に対する SOQL クエリを実行します。次の例では、前の例で取得された jobID 変数を使用します。
1AsyncApexJob jobInfo = [SELECT Status,NumberOfErrors FROM AsyncApexJob WHERE Id=:jobID];future ジョブと同様、キュー可能ジョブはバッチを処理しません。そのため、処理されたバッチ数と合計バッチ数は常に 0 です。
次の例では、テストでキュー可能ジョブの実行を検証する方法を示します。ジョブは、Test.startTest と Test.stopTest の間のブロックでキューに送信されます。これは、ジョブが必ず Test.stopTest ブロックステートメントの後に実行されるようにし、その後で実行結果を検証するためです。
1swfobject.registerObject("clippy.codeblock-6", "9");@isTest
2public class AsyncExecutionExampleTest {
3 static testmethod void test1() {
4 // startTest/stopTest block to force async processes
5 // to run in the test.
6 Test.startTest();
7 ID jobID = System.enqueueJob(new AsyncExecutionExample());
8 Test.stopTest();
9
10 // Validate that the job has run
11 AsyncApexJob jobInfo =
12 [SELECT Status,NumberOfErrors FROM AsyncApexJob WHERE Id=:jobID];
13 System.assertEquals('Completed', jobInfo.Status);
14 System.assertEquals(0, jobInfo.NumberOfErrors);
15 }
16}