Que le paramètre général Utilisation des fichiers batch soit égal à Oui dans les paramètres du serveur batch.
Que le paramètre EXTBATCH soit égal à Oui. Ce paramètre, qui appartient au groupe SUP, peut être défini au niveau dossier et utilisateur. Il est ainsi possible d’interdire globalement le lancement de requêtes batch de cette façon pour un dossier donné, en accordant si nécessaire une exception à des utilisateurs désignés.
Le lancement d’une requête batch peut être réalisé par le dépôt d’un fichier d’extension .job dans le répertoire dédié à ces fichiers. Ce fichier doit être de type ascii, structuré en ligne terminées par <CR> ou <CR><LF>, chaque ligne définissant la valeur d’un paramètre sous la forme :
PARAMETRE=VALEUR
Certains paramètres sont obligatoires et identifient le contexte d’exécution de la requête. D’autres paramètres dépendent de la requête à lancer ; leur nom correspond au nom des paramètres définis dans l’écran associé au lancement de la requête. Dans certains cas, un tableau de paramètres est défini dans l’écran ; la syntaxe est alors PARAMETRE(indice)=VALEUR, indice étant une valeur numérique.
Afin de faciliter la création d’un tel fichier, il est possible de lancer la requête depuis le progiciel, en cochant la case modèle dans l’écran de lancement des requêtes. Si ceci est fait, un fichier contenant la liste complète des paramètres de lancement et leur valeur sera créé dans le répertoire de lancement. Ce fichier est créé avec le nom de la requête et l’extension .mod.
On trouvera dans le tableau ci-dessous le nom des paramètres obligatoires et leur définition.
PARAMETRE | DEFINITION |
DOSSIER | Le code du dossier sur lequel la requête doit être lancée |
UTIL | Le code de l’utilisateur de connexion au dossier |
PASSE | Le mot de passe crypté de l’utilisateur |
GRP | Le groupe de requêtes (si un groupe est lancé) |
TACHE | La requête (si une requête est lancée) |
DATE | La date de lancement (au format AAAAMMJJ) |
HEURE | L’heure de lancement (au format HHMM) |
Il est à noter que les valeurs du paramètre sont données sans séparateur d’aucune sorte, et qu’il est possible de mettre des lignes de commentaires préfixées par le caractère #. Ainsi, on pourra mettre dans le fichier de requêtes :
# Paramètres obligatoires
DOSSIER=DEMO
DATE=20020614
…
# Paramètres complémentaires
PARAM(1)=TEST
PARAM(2)=ABC
Le serveur batch inspecte à intervalles réguliers le contenu du répertoire dédié aux fichiers de requête. Lors de l’inspection, il lit les fichiers présents dans le répertoire en les prenant dans l’ordre de classement ascii. Ainsi, il est conseillé de nommer ces fichiers avec une racine fixe et un numéro séquentiel sur une longueur fixe. On pourrait par exemple les nommer REQ000001.req, REQ0000002.req…
Lors du traitement de chaque fichier, des fichiers sont créés successivement dans les différents répertoires définis par les paramètres du serveur batch. Ces fichiers sont définis ci-dessous :
ETAPE DE TRAITEMENT | FICHIERS MIS A JOUR |
Dépose d’une demande de traitement batch | Création du fichier xxxxx.job par un processus externe, dans le répertoire dédié. |
Le serveur batch prend en compte la demande et met à jour sa table de requêtes à lancer | Le fichier xxxxx.job est renommé en xxxxx.req (et déplacé si les répertoires ne sont pas les mêmes) |
Le serveur détecte une erreur dans le fichier de paramètres (mot de passe incorrect, code tâche inconnu…) | Le fichier xxxxx.job est renommé en xxxxx.old (et déplacé si les répertoires ne sont pas les mêmes). Un fichier xxxxx.sta est créé dans le répertoire dédié. Il contient un code d’erreur permettant de savoir que le fichier d’entrée était incorrect (cf. format du fichier ci-dessous). |
La requête est en cours d’exécution, le serveur batch l’ayant lancé | Le fichier xxxxx.req est renommé en xxxxx.old (et déplacé si les répertoires ne sont pas les mêmes). Un fichier nommé xxxxx.run est créé dans le répertoire dédié. |
La requête est terminée (correctement ou avec une erreur) | Le fichier xxxxx.run est effacé, et un fichier xxxxx.sta est créé dans le répertoire dédié : ce fichier contient un statut de retour (cf. format du fichier ci dessous). |
Dépose d’une demande d’interruption de requête batch (en attente de lancement ou déjà lancée) | Création du fichier xxxxx.kil par un processus externe dans le répertoire dédié |
Prise en compte de la demande d’interruption (si la requête n’est pas encore lancée) | Le fichier xxxxx.req (ou le fichier xxxxx.job s’il n’avait pas encore été pris en compte) est renommé en xxxxx.old. Le fichier xxxxx.sta est créé dans le répertoire dédié. Il contient un code erreur permettant de savoir que la requête a été interrompue sans avoir été lancée. Le fichier xxxxx.kilest effacé. |
Prise en compte de la demande d’interruption (si la requête est déjà lancée et pas encore terminée) | La requête est interrompue par killadx, puis le fichier xxxxx.sta est créé dans le répertoire dédié, avec un code erreur permettant de savoir que la requête a été interrompue. Les fichiers xxxxx.kilet xxxxx.runsont effacés. |
Compte tenu des priorités d’exécution ou de l’arrêt du serveur batch, la requête n’a pas pu être lancée dans les délais prévus (requête hors délai) | La requête n’est pas lancée, mais le fichier xxxxx.req (le fichier xxxxx.job le cas échéant) est renommé en xxxx.oldet déplacé si nécessaire. Un fichier xxxxx.sta est créé dans le répertoire dédié. Il contient un code erreur permettant de savoir que la requête n’a pas pu être lancée. |
Il est à noter que le fait qu’un fichier xxxxx.run existe ne signifie pas nécessairement que la requête en question tourne. En effet, si le serveur batch a été arrêté sans que les requêtes qui tournaient encore n’aient été arrêtées, les fichiers xxxxx.run correspondants existeront toujours même lorsque la requête aura terminé son traitement. Dans ce cas, le fichier xxxxx.sta ne sera pas non plus créé. Par contre, lorsque le serveur batch sera à nouveau lancé, le fichier xxxxx.run sera effacé, un fichier xxxxx.stacontenant un statut particulier étant alors créé.
Le nombre de requêtes batch en cours de traitement ne peut donc pas forcément se déduire du nombre de fichiers xxxxx.run présents dans le répertoire dédié.
Ces fichiers sont des fichiers ascii, codés en ascii 8 bits, présents dans différents répertoires, selon le paramétrage :
La structure de la ligne unique contenue dans les fichiers .run et .sta est la suivante :
Le schéma exact est le suivant :
No statut | No requête | Date et heure début | Date et heure fin | Code dossier | Code utilisateur | Code de la tâche | Message en clair | Fin de ligne |
NNNNN | NNNNNNNN | AAAAMMJJHHMMSS | AAAAMMJJHHMMSS | DDDDDDDDDD | UUUUU | TTTTTTTTTT | XXXXXXXXXXXXXXXXXX | <CR> |
5 chiffres | (8 chiffres) | (14 chiffres) | (14 chiffres) | (10 caractères) | (5 caractères) | (10 caractères) | (80 caractères) | (1 ou 2 octets) |
La zone message permet d’expliciter le code erreur si nécessaire. Elle est stockée en longueur fixe sur 80 caractères (le message étant complété par des espaces si nécessaire).
Le numéro de requête est stocké sur 8 caractères, préfixé par des zéros si nécessaire. Ce numéro permet de connaître le nom du fichier de trace généré à l’exécution de la requête. En effet, ce fichier s’appelle RQTNNNNNNNN.tra (NNNNNNNN étant le numéro de requête sur 8 caractères). On le trouve dans le sous-répertoire TRA du dossier SERVX3. Il est à noter que ce numéro peut être nul dans certains cas d’erreur, lorsque aucune requête n’a pu être lancée.
Le code de la tâche correspond à la tâche ou à l’enchaînement de tâches lancé, tel qu’il est connu dans la table des tâches ou des enchaînements.
Le code statut, sur 5 caractères numériques, permet de connaître le résultat de l’exécution. Le premier chiffre détermine le résultat globale de l’exécution, les chiffres suivants donnant des informations complémentaires. Lorsque la requête s’est terminée sans erreur et sans avertissement, on a un code erreur égal à 00000. Le détail des codes est donné ci-dessous :
Valeur du code erreur sur 5 chiffres | Message en clair | |||
Premier chiffre | Signification | Complément | Signification |
|
0 | Fin normale de traitement | 0000 | Sans avertissement | REQUETE TERMINEE |
NNNN | Avec NNNNavertissements dans la trace (9999 si 9999 ou plus) | REQUETE TERMINEE AVEC AVERTISSEMENTS | ||
1
| Fin de traitement sur erreur
| 0000 | Erreur non spécifiée (par exemple si GOK=-1 et pas d’informations supplémentaires) | REQUETE TERMINEE AVEC ERREUR INCONNUE |
1NNN | Erreur no NNNNdu moteur adonix (message M) | FIN SUR ERREUR ADONIX : M | ||
2000 | Erreur de verrouillage (GOK=0) | ERREUR DE VERROUILLAGE | ||
3NNN | Erreur logique de traitement avec : NNN =valeur variable GERRBATCH, | REQUETE TERMINEE AVEC ERREUR M | ||
Note importantes :
| ||||
2
| Traitement non lancé
| 1000 | La tâche a été programmée à une heure donnée, mais n’a pas pu être lancée dans les délais prévus. | DELAI DEPASSE |
2000 | Tâche inexistante | TTTTACHE INEXISTANTE | ||
3000 | Habilitation (non spécifié) | TRAITEMENT NON LANCE CAR PROBLEME D’HABILITATION NON SPECIFIE | ||
3100 | Habilitation (utilisateur U inconnu) | UTILISATEUR UINCONNU | ||
3200 | Habilitation (mot de passe incorrect pour utilisateur U) | MOT DE PASSE INCORRECT POUR L’UTILISATEUR U | ||
3300 | Habilitation (refus par point d’entrée) | TRAITEMENT NON LANCE CAR DROITS REFUSES PAR POINT D’ENTREE | ||
3400 | Habilitation (niveau N de la tâche interdit à l’utilisateur Uinsuffisant) | NIVEAU D’ACCES NNON AUTORISE A L’UTILISATEUR U | ||
3500 | Habilitation (fonction Fnon autorisée à l’utilisateur U) | F FONCTION NON AUTORISEE A l’UTILISATEUR U | ||
4NNN | Passage en mode mono impossible (NNNutilisateurs en cours) | PASSAGE EN MODE MONO IMPOSSIBLE CAR NNNUTILISATEURS CONNECTES | ||
5000 | Traitement Tinexistant | TRAITEMENT TINEXISTANT | ||
3 | Arrêt du traitement | 0000 | Arrêt du traitement, raison inconnue (par exemple si un processus autre que le serveur batch a tué la requête) | REQUETE INTERROMPUE (RAISON INCONNUE) |
1000 | Par fichier d’extension .kil, contenant le message M | REQUETE INTERROMPUE PAR U POUR LE MOTIF M | ||
Note : dans le cas d’un kill par fichier, le code utilisateur peut être vide. En effet, le système essaie de retrouver, à partir de l’identifié de l’utilisateur ayant créé le fichier, si un code utilisateur adonix correspond ou pas. Cette recherche peut ne pas fonctionner selon les systèmes d’exploitation utilisés. | ||||
2000 | Par la gestion des tâches et l’utilisateur U: le message saisi est M | REQUETE INTERROMPUE PAR U POUR LE MOTIF M | ||
3000 | Par le serveur batch car time-out | TRAITEMENT INTERROMPU PAR LE SERVEUR RAISON=DEPASSEMENT DU TEMPS ACCORDE |
Il est à noter que, dans le cadre de la modélisation des tâches batch (modèle GTRAITE), l’utilisateur dispose des variables suivantes, accessibles dans des tâches spécifiques, ou dans des tâches standard par le biais de points d’entrée :
Sauf erreur de cohérence au lancement, les tâches batch standard du progiciel considèrent dans tous les cas que les erreurs rencontrées sont bénignes et mettent simplement à jour la trace en incrémentant GERRTRACE. Ceci signifie que toute erreur grave devant interrompre le traitement doit être traitée de façon spécifique, par le biais de points d'entrée, en donnant à GERRBATCH une valeur supérieure à 100.
Ce fichier, présent dans le sous-répertoire TRA du répertoire SERVX3, contient la trace du serveur. La structure des lignes est conforme à celle d’un fichier de trace classique (en-tête normalisé, et statuts numériques sur 5 caractères). Chaque ligne est composée d’un texte éventuellement préfixé par un numéro (ce numéro est lui-même précédé par le caractère < si on considère qu’il s’agit d’une erreur, par = s’il s’agit d’un avertissement).
Les numéros de statuts suivants existent (ils sont préfixés par 4 et 5 pour des raisons de continuité de numérotation avec les statuts précédents). Il est à remarquer que les statuts commençant par 4 sont des statuts graves qui ne devraient pas survenir dans une exploitation normale (problèmes de mise à jour, de gestion des tâches, de verrouillage du serveur batch), et peuvent venir soit de problèmes système, soit d’une mauvaise installation, soit encore de spécifiques. Les statuts commençant par 5 sont, quant à eux, des statuts normaux de l’activité du serveur batch :
ERREURS GRAVES DE COHERENCE DU SERVEUR | ||
Statut | Explication | Texte |
41000 | Désynchronisation tâche | ERREUR DESYNCHRONISATION TACHE |
42000 | Problème d’accès à la table des tâches | ERREUR D’ACCES A LA TABLE DES TACHES |
43000 | Numéro de requête inexistant | ERREUR REQUETE INEXISTANTE |
44000 | Problèmes d’accès à la table des paramètres batch |
|
MESSAGES D’EXPLOITATION NORMAUX DU SERVEUR | ||
50000 | Démarrage du serveur | DEMARRAGE SERVEUR BATCH |
51000 | Activation requête (process id P) | ACTIVATION REQUETE PID=P |
52NNN | Erreur adonix NNNau démarrage serveur (message d’erreur = M) | ERREUR AU DEMARRAGE DU SERVEUR M |
53000 | Erreur autre au démarrage du serveur | ERREUR INDETERMINEE AU DEMARRAGE DU SERVEUR |
54000 | Lancement serveur alors qu’il est déjà actif | LE SERVEUR EST DEJA ACTIF |
55000 | Désactivation serveur |
|
Ces fichiers, présent dans le sous-répertoire TRA du répertoire SERVX3, contiennent la trace associée à la requête elle-même. La structure des lignes est conforme à celle d’un fichier de trace classique (en-tête normalisé, et statuts numériques sur 5 caractères). Chaque ligne est composée d’un texte éventuellement préfixé par un numéro (ce numéro est lui-même précédé par le caractère < si on considère qu’il s’agit d’une erreur ou d’un avertissement). Ces fichiers peuvent être lus directement depuis le gestionnaire de requêtes par le biais d’un clic droit / Lecture trace.
Passée la ligne d’en-tête, la première ligne d’un tel fichier se présente sous la forme d’une ligne au format suivant (elle intègre le statut Activation requêtedéfini ci-dessus) :
=51000 NNNNNNNNJJ/MM/AA hh :mm :ss Activation requête (51000)
(NNNNNNNNreprésentant ici le numéro de tâche)
Les lignes de trace classique de la tâche suivent cette première ligne (si le traitement en question n’est pas lancé en batch, ces lignes seraient écrites dans un fichier de trace classique FNNNNN.tra dans le répertoire TRA du dossier de lancement). Puis, sauf dans le cas où la tâche a été arrêtée brutalement (par un killadx, par exemple), on trouvera une ligne finale de structure identique, mais dont le numéro est conforme au statut de fin correcte (00000) ou d’erreur (1NNNN)décrit ci-dessus.