この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

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}

future メソッドに関する考慮事項

  • Future アノテーションを使用するすべてのメソッドは、メソッドがコールされた順番に実行されるとは限らないため、特別な考慮が必要です。
  • Future アノテーションのあるメソッドは、Visualforce コントローラーの getMethodName または setMethodName メソッド内でも、コンストラクター内でも使用できません。
  • Future アノテーションのあるメソッドを、同じく Future アノテーションのあるメソッドからコールすることはできません。また、アノテーションのある別のメソッドをコールするアノテーションのあるメソッドからトリガーをコールすることはできません。