No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
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}
9future メソッドでコールアウトを許可するには、(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 メソッドは使用できません。