Annotation Future

Utilisez l'annotation future pour identifier les méthodes qui sont exécutées de façon asynchrone. Lorsque vous spécifiez future, la méthode est exécutée lorsque Salesforce a des ressources disponibles.

Par exemple, vous pouvez utiliser l'annotation future lors d'un appel de service Web asynchrone vers un service externe. Sans l'annotation, l'appel de service Web est effectué à partir du même fil qui exécute le code Apex, et aucun traitement supplémentaire n'est effectué jusqu'à la fin de l'appel (traitement synchrone).

Les méthodes avec l'annotation future doivent être des méthodes statiques et peuvent renvoyer uniquement un type void.

Pour effectuer une méthode dans une classe exécutée de façon asynchrone, définissez la méthode avec l'annotation future. Par exemple :

global class MyFutureClass {



  @future 

  static void myMethod(String a, Integer i) {

    System.debug('Method called with: ' + a + ' and ' + i);

    //do callout, other long running code

  }

}

L'extrait suivant montre comment spécifier qu'une méthode exécute un appel :

  @future (callout=true)

  public static void doCalloutFromFuture() {

   //Add code to perform callout

}

Vous pouvez spécifier (callout=false) pour empêcher une méthode d'effectuer des appels.

Pour tester des méthodes définies avec l'annotation future, appelez la classe contenant la méthode dans un bloc de code startTest, stopTest. Tous les appels asynchrones effectués après la méthode startTest sont collectés par le système. Lors de l'exécution de stopTest, tous les processus asynchrones sont exécutés de façon synchrone.

Les méthodes avec l'annotation future présentent les limitations suivantes :

Notez que toute méthode qui utilise l'annotation future requiert une attention particulière, car elle n'est pas nécessairement exécutée dans l'ordre dans lequel elle est appelée.

Vous ne pouvez pas appeler une méthode annotée avec future à partir d'une méthode qui contient également l'annotation future. Vous ne pouvez pas non plus appeler un déclencheur à partir d'une méthode annotée qui appelle une autre méthode annotée.

Les méthodes getContent et getContentAsPDFPageReference ne peuvent pas être utilisées dans des méthodes avec l'annotation future.

Pour plus d'informations sur les appels, reportez-vous à Invocation d'appels en utilisant le langage Apex.

© Copyright 2000–2013 salesforce.com, inc. Tous droits réservés.
Diverses marques de commerce appartenant à leur détenteur respectif.