tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Future Annotationによる非同期処理

Future Annotationによる非同期処理についてです。Apexクラスで非同期処理を実行したい場合はメソッドの上で「@future」を宣言します。


Future Annotation
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_annotation_future.htm


サンプルソースです。

上記サンプルでこんな画面が表示されます。
f:id:tyoshikawa1106:20130712213327p:plain

ボタンをクリックすると非同期処理が実行されます。
実行時のログはこんな感じです。
f:id:tyoshikawa1106:20130712213526p:plain

取引先の登録も行われます。
f:id:tyoshikawa1106:20130712213708p:plain

注意

  • 非同期処理のテストクラスを作成するときはTest.stopTest();の後に System.assertEqualsで検証します。Test.stopTest();の後なら非同期処理完了後の正常な結果を取得して検証できます。
  • 一度のトランザクションで実行できるFuture Annotationは10回までとなります。
  • 引数で渡すパラメータは、プリミティブデータ型、プリミティブデータ型の配列、またはプリミティブデータ型のコレクションでなければなりません。
  • 引数にsObjects型を指定することはできません。
  • コールアウト処理を行う場合は@future (callout=true)を付ける必要があります。