AWS Flow Framework Concepts de base : listes de tâches et exécution des tâches - AWS Flow Framework pour Java

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

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é.

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.