Graphe de tâches (1) #
Créer un graphe de tâches de base #
- D’abord, il faut ajouter cet
import static
import static ca.ntro.app.tasks.frontend.FrontendTasks.*;
-
Ensuite, on doit recevoir un objet de type
FrontendTasks
en paramètrepublic static void creerTaches(FrontendTasks tasks) { // appeler tasks pour ajouter une tâche }
-
Avec l’objet
tasks
, on peut ajouter un groupe de tâches comme suit:tasks.taskGroup("PremierAffichage") .contains(subTasks -> { // appeler subTasks pour ajouter une sous-tâche // au groupe Initialisation });
-
taskGroup
permet de nommer le groupe de tâches -
contains
permet d’ajouter une sous-tâche
-
-
Pour l’instant, le graphe est comme suit:
- on a un groupe de tâches qui ne contient aucune tâche
-
En utilisant
subTasks
, on peut ajouter une sous-tâchetasks.taskGroup("PremierAffichage") .contains(subTasks -> { subTasks.task("afficherFenetre") .waitsFor(window()) .executes(inputs -> { // appeler inputs pour récupérer des valeurs }); }); }
-
task
permet de nommer la tâche -
waitsFor
indique que la tâche doit s’exécuter après la tâchewindow()
-
executes
permet d’ajouter le comportement de la tâche
-
-
Le graphe de tâche est maintenant commet suit:
-
on a le groupe de tâches
Initialisation
contenant deux tâches-
window
: une tâche par défaut de Ntro -
afficherFenetre
: une tâche de notre application
-
-
on peut lire le graphe comme suit:
- attendre que la fenêtre soit disponible (tâche
window
)- puis afficher la fenêtre (tâche
afficherFenetre
)
- puis afficher la fenêtre (tâche
- attendre que la fenêtre soit disponible (tâche
-
-
Finalement, on utilise
inputs
pour récupérer une valeurtasks.taskGroup("PremierAffichage") .contains(subTasks -> { subTasks.task("afficherFenetre") .waitsFor(window()) .executes(inputs -> { Window window = inputs.get(window()); window.setTitle("Pong"); window.show(); }); }); }
-
inputs.get
permet de récupérer une valeur demandée via unwaitsFor
-
on a
waitsFor(window())
et donc on ainputs.get(window())
-
Définir des méthodes #
-
En réalité, on va utiliser des méthodes dès que possible:
public class PremierAffichage { public static void creerTaches(FrontendTasks tasks) { tasks.taskGroup("PremierAffichage") .contains(subTasks -> { afficherFenetre(subTasks); }); } private static void afficherFenetre(FrontendTasks subTasks) { subTasks.task("afficherFenetre") .waitsFor(window()) .executes(inputs -> { Window window = inputs.get(window()); window.setTitle("Pong"); window.show(); }); } }
- le code est mieux organisé ainsi
Aperçu de la suite #
-
On va aussi ajouter des tâches pour
- réagir à un Événement
- recevoir un Message
- charger une Vue
- créer des Données
- observer un Modèle
- afficher la prochaine image de la partie
-
Par exemple, voici le graphe de tâches du frontal du tutoriel 10
-
On va aussi utiliser une graphe de tâches pour le dorsal
NOTE: pourquoi utiliser des groupes de tâches? #
-
Ce n’est pas obligatoire de définir des groupes de tâche avec
taskGroup
-
Par contre, sans groupes de tâches, le graphe est plus difficle à lire