Forums - Adopte un VTP - Comment autoriser un scénario à un autre.

Mots-clés : 

  • This topic has 25 réponses, 4 participants, and was last updated il y a 4 weeks by . This post has been viewed 5117 times
  • Anonyme  | Posté le 4 juin 2020 à 12 h 02 min

    Variable en sortie de scénario
    Sortie

    Variable en entrée du scénario suivant
    Entrée

    Anonyme  | Posté le 4 juin 2020 à 12 h 08 min

    Supposons aussi que je veuille vérifier 3 variables
    est ce bien cela ?
    Les 3 variables vérifiées

    En fait l’accès au dernier scénario fait appelle à la vérification des 3 variables, mais ça ne fonctionne pas.

    Yannick Audéoud  | Posté le 5 juin 2020 à 15 h 02 min

    Bonjour,

    Merci pour ces informations complémentaires.

    J’ai plusieurs remarques.
    N’ayant pas le graphe complet, je ne peux pas vous certifier que l’erreur s’y trouve, mais ce sont déjà de bonnes pistes.

    Dans votre image « Sortie », vous sauvegardez une variable PRESTAINC01 à true.
    Tout va bien jusque-là.

    sortie

    Dans votre image « Entrée », vous chargez (entre autres) les variables PRESTAINC01 et SCOREINCAP.

    entree

    Remarque 1 : dans le cas d’un bloc Variables en mode « Charger », la valeur dans la colonne de droite sert à spécifier la valeur que doit prendre la variable chargée s’il n’y a rien à charger ; c’est-à-dire si la variable n’a jamais été sauvegardée au préalable. Vous ne devriez donc pas écrire les 2 dernières lignes ainsi, mais plutôt avec un 0 dans la partie droite.
    En effet, en indiquant dans la partie droite le même nom que dans la partie gauche, vous demandez au bloc de charger la variable de gauche, et s’il ne la trouve pas… d’utiliser la même variable. Sauf que celle-ci n’existe pas, justement car elle ne peut pas être trouvée.
    Dans votre cas, je suppose que la valeur par défaut devrait être false pour PRESTAINC01 et 0 pour SCOREINCAP.
    Si le premier scénario est toujours joué avant celui-ci, ce n’est probablement pas la source de l’erreur, mais c’est en tout cas une source d’erreur potentielle dans d’autres circonstances.

    Vous utilisez ensuite un bloc Conditions :

    conditions

    Remarque 2 : vous vérifiez si la variable PRESTAINV01 est true.
    Ne vouliez-vous plutôt écrire PRESTAINC01 ? Avec un C plutôt qu’un V.

    Remarque 3 : vous testez 2 fois d’affilé si PRESTAINV01 est true.
    Ce n’est pas nécessaire, car cela vérifie 2 fois la même chose.

    Remarque 4 : votre manière d’écrire cette condition est effectivement valide, mais elle peut être simplifiée. Lorsque vous souhaitez vérifier qu’une variable est true (un flag donc), vous pouvez simplement écrire la variable elle-même, sans écrire == true, puis qu’une condition est elle-même un flag.

    En combinant les remarques 3 et 4, vous pourriez-donc écrire votre condition de la manière suivante :
    PRESTAINV01 and PRESTADC01

    En ajoutant la remarque 2 (si la remarque est bien justifiée), la condition devient :
    PRESTAINC01 and PRESTADC01

    Remarque 5 : Quel est le bloc Conditions qui déclenche l’erreur de l’un de vos précédents messages ?
    Cette erreur :
    erreur

    Ce n’est visiblement pas le bloc Conditions de votre image « Les 3 variables vérifiées », car il ne contient pas la variable PRESTAINC01. C’est donc un autre bloc ?

    Remarque 6 : Enfin, je peux vous conseiller d’écrire vos variables en suivant la norme Camel case, c’est-à-dire tout en minuscules et en mettant en majuscule la première lettre de chaque mot.
    Cette méthode très répandue (nom de marques, informatique, etc.) permet d’améliorer la lisibilité d’un ensemble de mots lorsqu’il ne peut pas y avoir de ponctuation ou d’espaces (comme c’est le cas pour les noms de variables), en ayant tout de même un marqueur visuel (la majuscule) permettant de séparer les mots lors d’une lecture rapide.
    Vous pourriez avoir des variables PensionClassB ou ScoreIncap par exemple.
    Il s’agit d’une bonne pratique que nous prévoyons de partager dans la documentation de Virtual Training Suite prochainement.

    Bien cordialement,
    Yannick

    Anonyme  | Posté le 8 juin 2020 à 13 h 33 min

    Bonjour Yannick

    J’avoue que j’ai relu plusieurs fois votre retour mais que je sèche un peu.
    de plus les images que vous avez mis n’apparaissent pas, à moins que ce soir les miennes
    Stéphane

    Anonyme  | Posté le 8 juin 2020 à 14 h 01 min

    On va faire simple
    J’ai un graph (scénario) qui doit être fait impérativement on va l’appeler GRAPH01
    Fin de ce graph je vais mettre une variable écrite de la manière suivante :
    VARIABLE SORTIE GRAPH01

    Au début du GRAPH suivant

    ENTRÉE GRAPH 02

    Comment écrire la CONDITION alors ?
    Stéphane

    Yannick Audéoud  | Posté le 8 juin 2020 à 18 h 26 min

    Bonjour,

    Ce sont effectivement vos 4 dernières images que j’avais réutilisées dans mon message.
    Effectivement il semble qu’elles ne s’affichaient pas correctement sur tous les navigateurs. Je l’ai ai ré-uploadées toutes les 4 autre part ; est-ce que ça corrige le problème de votre côté ?

    Si je reprends à partir de votre tout dernier message :

    1. Concernant votre image « VARIABLE SORTIE GRAPH01 »

    Le champ de droite ne peut pas être correct. Cette assignation de valeur n’a pas de sens en l’état.
    En effet, ce que vous écrivez ici signifie :
    « Dans la variable GRAPH01, je mets true si GRAPH01 est true »
    C’est un raisonnement circulaire :
    – Si GRAPH01 est true, ça ne va rien changer
    – Si GRAPH01 n’a pas encore de valeur (ce qui est probablement le cas à ce moment là), ça va provoquer une erreur.

    Vous devriez juste écrire :

    save

    2. Concernant votre image « ENTRÉE GRAPH 02 »

    Puisque GRAPH01 est censé être un flag (true ou false), il n’est pas correct d’écrire 0 dans la partie droite.
    La valeur par défaut doit être cohérente avec le type de la variable à charger.
    Dans votre cas, il me semble que la valeur par défaut que vous souhaitez est false. Ainsi, si le premier scénario n’a jamais été joué, et donc que la variable GRAPH01 n’a jamais été sauvegardée, au lancement du 2e scénario, GRAPH01 se chargé avec la valeur false.

    Voici comment vous pouvez écrire le premier bloc du 2e scénario :
    load

    3. Pour le bloc Conditions

    Comme GRAPH01 est un flag (true ou false), et qu’une Condition doit être un flag, vous pouvez directement écrire GRAPH01 en tant que Condition. C’est-à-dire :

    condition

    Bien cordialement,
    Yannick

    Anonyme  | Posté le 8 juin 2020 à 18 h 55 min

    Enfin j’ai compris désolé mais mon cerveau bouillonne 😀
    Merci Yannick

    Anonyme  | Posté le 9 juin 2020 à 14 h 55 min

    Bonjour Yannick

    J’ai parlé trop vite !!! ???

    En fait au lancement du programme cela fonctionne, tant que la variable de fin n’a pas été validée et sauvegardée,
    il est impossible de passer au 2ème ou 3ème graph (scénario) si l’on a pas fait les précédents.

    Manque de chance comme je suis en plein test avec le support, j’ai donc relancé plusieurs fois le module (l’expérience) pour des essais, et là c’est la désillusion !

    La variable chargée doit restée en mémoire sur le PC car je peux désormais refaire les graps dans l’ordre que je veux sans restrictions aucune ??????
    Je désespère
    Stéph@ne

    Yannick Audéoud  | Posté le 9 juin 2020 à 17 h 51 min

    Bonjour,

    Le but est-il bien justement qu’une fois le Scénario 1 terminé, le Scénario 2 soit accessible en permanence ?
    Quel comportement souhaitez obtenir précisément ?

    De ce que j’ai compris vous souhaitez que :
    – Une fois que le Scénario 1 a été terminé, le Scénario 2 est accessible
    – Une fois que le Scénario 2 a été terminé, le Scénario 3 est accessible
    – Etc.
    – Lorsque le module est quitté complètement, puis relancé, les scénarios débloqués restent débloqués et peuvent être accédés dans n’importe quel ordre.

    Est-ce bien cela ?
    Auquel cas, qu’est-ce qui ne fonctionne pas comme prévu exactement ?

    Cordialement,
    Yannick

    Anonyme  | Posté le 9 juin 2020 à 18 h 19 min

    Yannick

    Vous avez bien compris, mais par contre une fois le module quitté tout repart à zéro.
    Il ne doit rien rester en mémoire.
    Chaque fois que le module est terminé et refait on repart à zéro 😉
    Stéph@ne