Ousret / hermes

Automates programmables à réaction aux échanges électroniques depuis une boîte IMAP4

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

@Dsniss

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

@Dsniss

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

@Dsniss

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é'

Merci pour ton aide @Ousret

@Dsniss

@Ousret

C'est bon j'ai trouvé. il me suffisait de créer une action permettant de gérer l'échec
Donc la demande peut être clos

Sorry et bonne journée

@Dsniss