Manuel d'exemples > Détermination du message et du numéro de l'erreur

Détermination du message et du numéro de l'erreur

Objectif : En cas d'erreur, le texte du message et le numéro correspondants doivent être demandés et transmis par e-mail.

Objets utilisés : tout objet activable

Scripts utilisés : ACTIVATE_UC_OBJECT, GET_MSG_TXT, :ON_ERROR, PRINT, SEND_MAIL, SYS_ACT_ME_NAME, SYS_ACT_ME_NR, SYS_LAST_ERR_INS, SYS_LAST_ERR_NR, UC_CRLF, XML_CLOSE, XML_GET_NODE_TEXT et XML_OPEN


Exemple

Si un Script rencontre une erreur au cours du traitement, un message comportant le texte et le numéro correspondant est émis. Vous avez la possibilité d'accéder à ces informations afin de pouvoir utiliser chaque valeur par la suite. Il est donc possible de définir des réactions précises à des erreurs survenues.

Tâche

L'exemple suivant illustre la manière dont l'ensemble du message d'erreur apparaît et est transféré à un destinataire par e-mail.

Le point de départ est l'activation d'un objet nommé "GS.FIN". Comme le nom est utilisé à plusieurs endroits, il permet de définir une Variable de Script pour chacun d'entre eux. S'il est impossible d'activer l'objet, la fonction de Script ACTIVATE_UC_OBJECT renvoie la valeur 0. Dans ce cas, les informations relatives à la dernière erreur survenue peuvent être transmises.

Pour cela, utilisez le Script suivant :

Les valeurs peuvent par exemple être envoyées à un destinataire par e-mail pour l'avertir. Comme les responsabilités sont souvent réparties entre plusieurs personnes au sein d'un système AE, l'enregistrement d'un interlocuteur présente un avantage. Il peut être spécifié pour chaque objet dans l'onglet Documentation. Utilisez pour cela les modèles d'objet, afin d'entrer cette information et d'autres encore. Si un objet est créé à l'aide d'un modèle, ce dernier reprend le contenu défini précédemment.

L'illustration suivante montre un onglet Documentation structuré. Celui-ci présente l'avantage de pouvoir être lu avec des Scripts spéciaux (XML*).

La fonction de Script XML_GET_NODE_TEXT vous permet d'indiquer l'interlocuteur. Celui-ci sert de destinataire de l'e-mail qui peut être envoyé avec SEND_MAIL. L'e-mail contient le nom de l'objet à démarrer, celui de la Tâche contenant la tentative d'activation et le RunID de celle-ci.

Conseil sur :ON_ERROR :

Pour chaque Script, y compris ACTIVATE_UC_OBJECT, vous pouvez déterminer vous-même si le traitement du Script s'interrompt en cas d'erreur. Dans cet exemple, ":ON_ERROR RESUME" est indiqué pour pouvoir analyser l'erreur survenue. Pour ":ON_ERROR ABEND", le Script serait interrompu par ACTIVATE_UC_OBJECT dans la ligne.

Le Script suivant présente chaque étape du processus expliqué précédemment :

!Une Alerte doit être envoyée par e-mail,
!si l'objet ne peut être activé.


:
SET &obj_à_démarrer# ='GS.FIN' 

:
ON_ERRORRESUME
:
SET &démarrage# = ACTIVATE_UC_OBJECT(&obj_à_démarrer#)


:
IF &démarrage# = 0

:  
SET &erreur_nr# = SYS_LAST_ERR_NR()
:  
SET &erreur_var# = SYS_LAST_ERR_INS()
:  
SET &message# = GET_MSG_TXT(&erreur_nr#,&erreur_var#)
:  
PRINT '&message#'

!Trouver l'interlocuteur

:  
SET &docuxml# = XML_OPEN(,'@description')
:  
SET &contact# = XML_GET_NODE_TEXT(&docuxml#)
:  
XML_CLOSE

:  
SET &nom_obj# = SYS_ACT_ME_NAME()
:  
SET &runid_obj# = SYS_ACT_ME_NR()

!Saut de ligne

:  
SET &à#= UC_CRLF()

:  
SET &ret_mail# = SEND_MAIL('&contact#@automic.at',,'La Tâche &obj_à_démarrer# n'a pas pu être démarrée','NOM: &nom_obj# / RunID : &runid_obj#&à#&à# MESSAGE : &message#')

:
ENDIF

Pour pouvoir envoyer l'e-mail, la connexion e-mail d'un Agent doit être active!