

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# AWS Flow Framework Concepts de base : listes de tâches et exécution des tâches
<a name="awsflow-basics-task-lists"></a>

 Amazon SWF gère les tâches liées au flux de travail et aux activités en les publiant dans des listes nominatives. Amazon SWF gère au moins deux listes de tâches, l'une pour les travailleurs du flux de travail et l'autre pour les travailleurs des activités.

**Note**  
Vous pouvez spécifier autant de listes de tâches que nécessaire, différents exécuteurs pouvant être affectés à chaque liste. Le nombre de listes de tâches est illimité. En règle générale, vous spécifiez la liste des tâches d'un exécuteur dans l'application hôte de ce dernier lorsque vous créez l'objet exécuteur.

L'extrait suivant tiré de l'application hôte `HelloWorldWorkflow` crée un nouvel exécuteur d'activité et l'affecte à la liste de tâches des activités `HelloWorldList`.

```
public class GreeterWorker  {
    public static void main(String[] args) throws Exception {
    ...
    String domain = " helloWorldExamples";
    String taskListToPoll = "HelloWorldList";

    ActivityWorker aw = new ActivityWorker(service, domain, taskListToPoll);
    aw.addActivitiesImplementation(new GreeterActivitiesImpl());
    aw.start();
    ...
  }
}
```

Par défaut, Amazon SWF planifie les tâches du travailleur dans la `HelloWorldList` liste. L'exécuteur recherche ensuite les tâches dans cette liste. Vous pouvez affecter n'importe quel nom à une liste de tâches. Vous pouvez même utiliser le même nom pour les listes de flux de travail et d'activités. En interne, Amazon SWF place les noms des flux de travail et des listes de tâches d'activité dans différents espaces de noms, de sorte que les deux listes seront distinctes.

Si vous ne spécifiez pas de liste de tâches, une liste par défaut est spécifiée lorsque le travailleur enregistre le type auprès d'Amazon SWF. AWS Flow Framework Pour de plus amples informations, veuillez consulter [Enregistrement des types de flux de travail et d'activité](features.registration.md). 

Il est parfois utile de faire exécuter certaines tâches par un exécuteur ou un groupe d'exécuteurs. Par exemple, un flux de travail de traitement d'image peut utiliser une activité pour télécharger une image et une autre pour traiter l'image. Il est plus efficace d'exécuter les deux tâches sur le même système et d'éviter la surcharge liée au transfert de fichiers volumineux sur le réseau. 

Pour prendre en charge ce type de scénario, vous pouvez spécifier explicitement une liste de tâches lorsque vous appelez une méthode de client d'activité en utilisant une surcharge qui inclut un paramètre `schedulingOptions`. Vous spécifiez la liste des tâches en transmettant à la méthode un `ActivitySchedulingOptions` objet configuré de manière appropriée.

Supposons, par exemple, que l'activité `say` de l'application `HelloWorldWorkflow` soit hébergée par un exécuteur d'activité autre que `getName` et `getGreeting`. L'exemple suivant montre comment s'assurer que `say` utilise la même liste de tâches que `getName` et `getGreeting`, même si elles ont été affectées à l'origine à des listes différentes.

```
public class GreeterWorkflowImpl implements GreeterWorkflow {
  private GreeterActivitiesClient operations1 = new GreeterActivitiesClientImpl1(); //getGreeting and getName
  private GreeterActivitiesClient operations2 = new GreeterActivitiesClientImpl2(); //say
  @Override
  public void greet() {
    Promise<String> name = operations1.getName();
    Promise<String> greeting = operations1.getGreeting(name);
    runSay(greeting);
  }
  @Asynchronous
  private void runSay(Promise<String> greeting){
    String taskList = operations1.getSchedulingOptions().getTaskList();
    ActivitySchedulingOptions schedulingOptions = new ActivitySchedulingOptions();
    schedulingOptions.setTaskList(taskList);
    operations2.say(greeting, schedulingOptions);
  }
}
```

La méthode asynchrone `runSay` obtient la liste de tâches `getGreeting` à partir de son objet client. Ensuite, elle crée et configure un objet `ActivitySchedulingOptions` qui vérifie que `say` interroge la même liste de tâches que `getGreeting`.

**Note**  
Lorsque vous transmettez un paramètre `schedulingOptions` à une méthode de client d'activité, il remplace la liste de tâches d'origine uniquement pour l'exécution de l'activité en question. Si vous appelez à nouveau la méthode client des activités sans spécifier de liste de tâches, Amazon SWF affecte la tâche à la liste d'origine et le responsable de l'activité interrogera cette liste. 