Graphe de tâches (2) #
Éviter dépendances cycliques #
-
Qu’est-ce qui se passe si on écrit la tâche suivante?
tasks.task(create(VueRacine.class)) .waitsFor(created(VueRacine.class)) .executesAndReturnsValue(inputs -> { VueRacine vueRacine = inputs.get(created(VueRacine.class)); return vueRacine; }); -
Dans le graphe, on voit qu’on a créé une dépendance cyclique
- avant d’exécuter
VueRacine, il faut terminerVueRacine… oups!
- avant d’exécuter
-
Comme c’est impossible à exécuter,
Ntrova donner un message d’erreur[FATAL] cyclic dependancy for task VueRacine Please correct graph.
Il faut écrire tous les waitsFor d’une tâche
#
-
Une tâche doit spécifier tous ses
waitsForde façon explicitesubTasks.task("choisirPremiereVue") // doit déclarer CHAQUE dépendence .waitsFor(created(VueRacine.class)) .waitsFor(created(VueFileAttente.class)) .executes(inputs -> { // inputs.get appelé UNIQUEMENT sur une dépendance déclarée VueRacine vueRacine = inputs.get(created(VueRacine.class)); VueFileAttente vueFileAttente = inputs.get(created(VueFileAttente.class)); vueRacine.afficherSousVue(vueFileAttente); });
Main les waitsFor ne sont pas tous affichés
#
-
Avec les groupes de tâches, un
waitsFordéjà disponible ne sera pas affiché
- dans
PremierAffichage, leswaitsForàVueRacineetVueFileAttentene sont pas affichés - ces
waitsForsont déjà compris dans la dépendance àCreerVues
- dans
-
Le graphe de tâche tel qu’affiché est donc un résumé, un aperçu, des tâches du programme
- la vraie définition des tâches est dans le code