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

Future アノテーション

非同期で実行するメソッドを特定するには future アノテーションを使用します。future を指定すると、Salesforce に使用可能なリソースが存在するときにこのメソッドが実行されます。

たとえば、外部サービスへの非同期の Web サービスコールアウトを実行するときに future アノテーションを使用できます。このアノテーションを使用しない場合、Web サービスコールアウトは Apex スクリプトを実行している同じスレッドから実行され、コールアウトが完了するまで他の処理は実行されません (同期処理)。

future アノテーションのあるメソッドは静的メソッドである必要があり、void 型のみを返します。指定するパラメータはプリミティブデータ型、プリミティブデータ型の配列、プリミティブデータ型のコレクションである必要があります。future アノテーションのあるメソッドは、sObject またはオブジェクトを引数として取ることはできません。

クラスのメソッドを非同期に実行するには、future アノテーションのあるメソッドを定義します。次に例を示します。

1swfobject.registerObject("clippy.codeblock-0", "9");global 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}
9

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 アノテーションのあるメソッドからコールすることはできません。また、アノテーションのある別のメソッドをコールするアノテーションのあるメソッドからトリガをコールすることはできません。
  • future アノテーションのあるメソッドでは、getContent および getContentAsPDF PageReference メソッドは使用できません。