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,
Ntro
va 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
waitsFor
de 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
waitsFor
déjà disponible ne sera pas affiché- dans
PremierAffichage
, leswaitsFor
àVueRacine
etVueFileAttente
ne sont pas affichés - ces
waitsFor
sont 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