Future アノテーション
非同期で実行するメソッドを特定するには Future アノテーションを使用します。Future を指定すると、Salesforce に使用可能なリソースが存在するときにこのメソッドが実行されます。
たとえば、外部サービスへの非同期の Web サービスコールアウトを実行するときに Future アノテーションを使用できます。このアノテーションを使用しない場合、Web サービスコールアウトは Apex スクリプトを実行している同じスレッドから実行され、コールアウトが完了するまで他の処理は実行されません (同期処理)。
Future アノテーションのあるメソッドは静的メソッドである必要があり、void 型のみを返します。指定するパラメーターはプリミティブデータ型、プリミティブデータ型の配列、プリミティブデータ型のコレクションである必要があります。Future アノテーションのあるメソッドは、sObject またはオブジェクトを引数として取ることはできません。
クラスのメソッドを非同期に実行するには、Future アノテーションのあるメソッドを定義します。次に例を示します。
1global class MyFutureClass {
2
3 @Future
4 static void myMethod(String a, Integer i) {
5 System.debug('Method called with: ' + a + ' and ' + i);
6 // Perform long-running code
7 }
8}Future メソッドでコールアウトを許可するには、(callout=true) を指定します。デフォルトは (callout=false) です。このデフォルトでは、メソッドはコールアウトを実行できません。
次のスニペットでは、メソッドがコールアウトを実行するように指定する方法を示します。
1@Future (callout=true)
2 public static void doCalloutFromFuture() {
3 //Add code to perform callout
4}