HERMES : Action comparaison de deux membres, erreur de type pour les entiers
Dsniss opened this issue · comments
Bonjour @Ousret
J'ai un automate dans lequel j'ai une action d'interrogation ITOP (Requête CORE/GET).
En retour / sortie de la requête il peut arriver n'y avoir aucun résultat et ceci peut être normal dans mon cas. J'obtiens donc le résultat suivant : {"objects": null, "code": 0, "message": "Found: 0"}
Du coup pour le bon fonctionnement de mon automate j'ai besoin de tester que le résultat renvoyé est différent de zéro (différent de "Found: 0").
Quelle action dois-je utiliser et comment procéder ?
j'ai essayé avec "vérifier si une variable est vraie", "construire une variable intermédiaire", "Effectuer une comparaison ..." mais impossible de la faire fonctionner.
Merci pour ton aide
Bonjour @Dsniss
Normalement, par défaut j'irai sur "Effectuer une comparaison" en utilisant l'opérande "!=" différent de.
Qu'est ce que tu as mis dans les paramètres de cette action ? Cela doit fonctionner pourtant.
Bonjour @Ousret
Merci pour tes réponses rapides 👍
Donc après un essai j'ai pris l'opérande "!=" avec comme membre de droite de la comparaison la valeur 0
Voici l'erreur que j'obtiens :
2020-04-09 09:56:42.170 | WARNING | hermes.automate:je_realise:911 - Impossible de comparer un nombre avec un autre type de donnée. ({"objects": null, "co
de": 0, "message": "Found: 0"} AVEC 0)
2020-04-09 09:56:42.172 | WARNING | hermes.automate:_jai_echouee:233 - Échec de l'action 'Vérif si requête précédente renvoie une réponse'
Peut être que le membre de gauche pour la comparaison est à ajuster ?
En sortie de requête je mémorise le résultat dans la variable "REQ_lecture"
En entrée de la comparaison (membre de gauche pour la comparaison) j'indique {{REQ_lecture}}
Ne faut il pas mettre {{REQ_lecture.objects ........} ??? si oui sous quelle forme ?
Merci et très bonne journée à toi
Re :
Essaie {{REQ_lecture.code}}
à gauche ;)
ah punaise c'est mieux mais un warning .... j'ai aussi fait l'essai avec {{REQ_lecture.code|int}} mais c'est pareil
2020-04-09 10:09:03.221 | WARNING | hermes.automate:je_realise:911 - Impossible de comparer un nombre avec un autre type de donnée. (0 AVEC 0)
2020-04-09 10:09:03.222 | WARNING | hermes.automate:_jai_echouee:233 - Échec de l'action 'Vérif si requête précédente renvoie une réponse' sur '[NOTIF_DELA
I_DEPASSE Alerte demandeurs']
parfait. c'est la bonne méthode. je te confirme que ça, c'est un bug 🥇
je le corrigerai en même temps que l'autre. laisse comme ça. ;)
Trop top ton aide .... cool et rapide .... 👍
dès que pour toi c'est ok ... je suis preneur de l'info
Excellente journée @Ousret
Correctif disponible dans la version 1.0.9
Bonjour @Ousret
je viens de faire un essai après avoir installé la dernière version 1.0.9.
Pour rappel j'ai utilisé à gauche ==> {{REQ_lecture.code|int}} puis j'ai testé que la valeur était supérieur à zéro == > 0
Dans mon premier test avec un résultat de requête à zéro je constate dans la LOG une erreur (cf. détail ci-dessous).
2020-04-15 12:34:53.533 | WARNING | hermes.automate:_jai_echouee:233 - Échec de l'action 'Vérif si requête précédente renvoie une réponse' sur '[Notif_delai] verifier les demandes sans reponse'
2020-04-15 12:34:53.534 | INFO | hermes.automate:je_realise:352 - Démarrage de l'action 'Déplacement du mail dans ITOP_4_GIE/ITOP_Notifs' sur '[Notif_delai] verifier les demandes sans reponse'
172.17.25.245 - - [15/Apr/2020 12:34:53] "xxxxxxx HTTP/1.1" 200 -
2020-04-15 12:34:54.028 | INFO | hermes.automate:_jai_reussi:247 - Fin de l'action 'Déplacement du mail dans ITOP_4_GIE/ITOP_Notifs' sur '[Notif_delai] verifier les demandes sans reponse'
2020-04-15 12:34:54.030 | INFO | hermes_ui.moteur.processus:thread:170 - L'automate 'TEST_Alerte_Demandeur_Delai_Chgt_Depasse' vient de traiter avec succès la source '[Notif_delai] verifier les demandes sans reponse'
Exception in thread Thread-111:
Traceback (most recent call last):
File "/home/itop/.local/lib/python3.7/site-packages/SQLAlchemy-1.3.5-py3.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 3282, in one
ret = self.one_or_none()
File "/home/itop/.local/lib/python3.7/site-packages/SQLAlchemy-1.3.5-py3.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 3260, in one_or_none
"Multiple rows were found for one_or_none()"
sqlalchemy.orm.exc.MultipleResultsFound: Multiple rows were found for one_or_none()
During handling of the above exception, another exception occurred:
_Traceback (most recent call last):
File "/usr/local/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.7/threading.py", line 865, in run
self._target(*self.args, **self.kwargs)
File "/home/itop/hermes/hermes_ui/moteur/processus.py", line 294, in thread
action_noeud=db.session.query(ActionNoeud).filter_by(designation=action_lancee.designation, automate_id=model.id).one(),
File "/home/itop/.local/lib/python3.7/site-packages/SQLAlchemy-1.3.5-py3.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 3285, in one
"Multiple rows were found for one()"
sqlalchemy.orm.exc.MultipleResultsFound: Multiple rows were found for one()
Dans mon deuxième test, j'ai fait en sorte que le résultat de ma requête soit supérieur à 0 avec un total de 3 enregistrements trouvés. et là aussi une erreur dans la LOG
_2020-04-15 12:46:11.448 | INFO | hermes.automate:je_realise:352 - Démarrage de l'action 'Vérif si requête précédente renvoie une réponse' sur '[Notif_delai] verifier les demandes sans reponse'
2020-04-15 12:46:11.450 | WARNING | hermes.automate:_jai_echouee:233 - Échec de l'action 'Vérif si requête précédente renvoie une réponse' sur '[Notif_delai] verifier les demandes sans reponse'
2020-04-15 12:46:11.451 | INFO | hermes.automate:je_realise:352 - Démarrage de l'action 'Déplacement du mail dans ITOP_4_GIE/ITOP_Notifs' sur '[Notif_delai] verifier les demandes sans reponse'
172.17.25.245 - - [15/Apr/2020 12:46:11] "GET /admin/service HTTP/1.1" 200 -
2020-04-15 12:46:11.840 | INFO | hermes.automate:_jai_reussi:247 - Fin de l'action 'Déplacement du mail dans ITOP_4_GIE/ITOP_Notifs' sur '[Notif_delai] verifier les demandes sans reponse'
2020-04-15 12:46:11.843 | INFO | hermes_ui.moteur.processus:thread:170 - L'automate '_TEST_Alerte_Demandeur_Delai_Chgt_Depasse' vient de traiter avec succès la source '[Notif_delai] verifier les demandes sans reponse'
Exception in thread Thread-127:
Traceback (most recent call last):
File "/home/itop/.local/lib/python3.7/site-packages/SQLAlchemy-1.3.5-py3.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 3282, in one
ret = self.one_or_none()
File "/home/itop/.local/lib/python3.7/site-packages/SQLAlchemy-1.3.5-py3.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 3260, in one_or_none
"Multiple rows were found for one_or_none()"
sqlalchemy.orm.exc.MultipleResultsFound: Multiple rows were found for one_or_none()
During handling of the above exception, another exception occurred:
_Traceback (most recent call last):
File "/usr/local/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.7/threading.py", line 865, in run
self._target(*self.args, **self.kwargs)
File "/home/itop/hermes/hermes_ui/moteur/processus.py", line 294, in thread
action_noeud=db.session.query(ActionNoeud).filter_by(designation=action_lancee.designation, automate_id=model.id).one(),
File "/home/itop/.local/lib/python3.7/site-packages/SQLAlchemy-1.3.5-py3.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 3285, in one
"Multiple rows were found for one()"
sqlalchemy.orm.exc.MultipleResultsFound: Multiple rows were found for one()
Pour info, dans les deux cas ci-dessus dans l'IHM d'Hermes je n'ai pas le résultat dans l'historique d'exécution. il faut que je passe par le fichier LOG
Merci @Ousret et bonne journée
Re :
Une solution est disponible dans la version 1.0.10, il va falloir, exceptionnellement, lancer le script ./upgrade.sh
deux fois. Pour permettre l'installation d'une dépendance supplémentaire.
@Ousret
Après avoir fait un essai avec la solution disponible je n'arrive pas a obtenir le résultat escompté.
Pour rappel en sortie de l'action core/get si le résultat de celle-ci ne renvoie pas d'enregistrement j'obtiens ceci
{'objects': None, 'code': 0, 'message': 'Found: 0'}
La décomposition de ce résultat donne
objects : None
code : 0
message : Found: 0
Ce qui m'intéresse c'est le contenu de "message", donc "Found: 0" et donc de récupérer la partie numérique "0"
j'ai utilisé
à gauche : {{REQ_lecture.message|int}}
l'opérande : >=
à droite : 0
mais j'obtiens le message
2020-04-27 11:19:32.223 | INFO | hermes.automate:lance_toi:147 - Démarrage de l'automate 'KO_Alerte_Demandeurs_Chgt_Delai_Depasse' avec la source '[NOTIF_VRIFDELAI Notif pour
HERMES - Vérif si demandes SUSPENDU avec délai >10 et <15j'.]
2020-04-27 11:19:32.224 | INFO | hermes.automate:je_realise:352 - Démarrage de l'action 'Récup. mail demandeurs dont les tickets "SUSPENDU" sont en attente de réponse depuis
10-15j' sur '[NOTIF_VRIFDELAI Notif pour HERMES - Vérif si demandes SUSPENDU avec délai >10 et <15j']
2020-04-27 11:19:32.326 | INFO | hermes.automate:_jai_reussi:247 - Fin de l'action 'Récup. mail demandeurs dont les tickets "SUSPENDU" sont en attente de réponse depuis 10-15
j' sur '[NOTIF_VRIFDELAI Notif pour HERMES - Vérif si demandes SUSPENDU avec délai >10 et <15j']
2020-04-27 11:19:32.327 | INFO | hermes.automate:je_realise:352 - Démarrage de l'action 'Vérif si requête précédente renvoie une réponse' sur '[NOTIF_VRIFDELAI Notif pour HERM
ES - Vérif si demandes SUSPENDU avec délai >10 et <15j']
2020-04-27 11:19:32.329 | WARNING | hermes.automate:_jai_echouee:233 - Échec de l'action 'Vérif si requête précédente renvoie une réponse' sur '[NOTIF_VRIFDELAI Notif pour HERMESVérif si demandes SUSPENDU avec délai >10 et <15j']
2020-04-27 11:19:32.332 | WARNING | hermes_ui.moteur.processus:thread:176 - L'automate 'KO_Alerte_Demandeurs_Chgt_Delai_Depasse' vient de traiter avec au moins une erreur la sou
rce '[NOTIF_VRIFDELAI Notif pour HERMES - Vérif si demandes SUSPENDU avec délai >10 et <15j']
2020-04-27 11:19:32.334 | INFO | hermes.automate:je_realise:352 - Démarrage de l'action 'Envoyer une notification d'erreur au(x) responsable(s) de l'automate' sur 'Traces de
votre interopérabilité'