24 juin 2013

Automatiser les traitements HR avec RBB

Depuis HRv5 l’utilisateur peut demander l’« Activation » de demandes Opération. Toutefois l'ensemble des fonctionnalités n'est vraiment présent qu'avec HRv7. Les détails ci dessous ...

Seul manque encore l'automatisation des lancement chaque minute. Peut être que le serveur de Query - qui prend déjà en charge l'envoi des mails - se verra-t-il dans le futur attribuer cette tâche ?

L'interface Web

Au niveau de la demande Opération, l’utilisateur peut préciser une fréquence et une date de première exécution du traitement batch.



L’activation (par soumission de la demande) provoque:
  • Le déclenchement du script OPER, 
  • Le programme BOB va « archiver » le script habillé de la chaîne à exécuter dans l’information ZO2S du dossier de demande
  • Et « verrouiller » la demande opération qui n'est alors plus modifiable.


L’utilisateur peut consulter la liste des traitements « activés » voire en déprogrammer

 
 
L’exécution du traitement est déléguée à l’exploitant qui doit exécuter la chaîne RBB à fréquence régulière.

La chaîne RBB

La chaîne (script subbb) soumet TOUS les traitements dont la date d’activation dépasse la date système,

Pour lister les traitements en attente, passez par l'interface ou exécutez la requête suivante :
SELECT NUDOSS, TEDMAC, TIDMAC FROM ZO00         
WHERE  TEDMAC <> 'N' AND    TESOUD =  '1' 
ORDER BY TIDMAC,TEDMAC


Les étapes de la soumission sont les suivantes :
  • subbb lance RBB (chaîne générée avec un processus Opération),
  • Le programme BOD en boucle :
  1. Ecrit pour la première demande trouvée la chaîne stockée en ZO2S dans $TMP/T120JS."$nupro"
  2. Lance OPE2 (via XSNDJOB et job)
  3. OPE2 exécute la chaîne définitive en arrière plan,
  4. BOD reprend la main. En cas d’activation « périodique » il recalcule et met à jour automatiquement la date de la prochaine exécution dans la demande ZO
  5. puis passe à la demande suivante.

Pour que tout fonctionne de manière transparente il est nécessaire d'automatiser l'exécution régulière de la chaîne RBB (par exemple par crontab). Au vu du fonctionnement standard, la fréquence d'exécution doit être la minute.

Si vous souhaitez les espacer plus (10 ou 30 minutes par exemple), je pense préférable de modifier OPE2 pour que les traitements se déclenchent en avant plan (ce qui évite la concurrence de traitements incompatibles ou dépendants) :

nohup ksh $TMP/JS."$NUMJOB" > $TMP/"$JOBLOG" 2>&1 &
CODE_RETOUR=$?
PID=$!


devient alors

ksh $TMP/JS."$NUMJOB" > $TMP/"$JOBLOG" 2>&1
CODE_RETOUR=$?
PID=$$


A noter : La chaîne RBB est compatible avec les enchaînements NRC.

14 juin 2013

Afficher une différence de dates en "heures minutes secondes" avec DAY TO SECOND (Oracle)


Christophe m'a indiqué cette fonction Oracle.
Elle permet d'afficher une différence de dates au format heures-minutes-secondes :

Exemple avec ce SELECT qui liste les traitements batch exécutés ce jour par ordre de durée d'exécution décroissante :

select CDPHAS,IDREQU,CDELMT,TIMDEB,TIMFIN,CDRET,(TIMFIN - TIMDEB) DAY TO SECOND(0) DELTA from ZO00,ZO2C where ZO00.NUDOSS=ZO2C.NUDOSS and FLGJOB='1' and CDRET <> ' ' and TIMFIN > trunc(SYSDATE) order by 7 desc ;

CDP IDREQU             CDELMT   TIMDEB              TIMFIN              CD DELTA
--- ------------------ -------- ------------------- ------------------- -- ----------------------------------------
NRB DIGIX                       2013-06-11-01.00.41 2013-06-11-01.06.26 01 +00 00:05:45
K2W DIGIX                       2013-06-11-12.07.52 2013-06-11-12.13.00 04 +00 00:05:00

NJ6 DIGIX                       2013-06-11-11.00.55 2013-06-11-11.02.45 01 +00 00:01:50

13 juin 2013

*GE01BMQ-00000000-BHS-92BJ/Unknown logical table name

Depuis HRv7 la chaîne RBN (création de population batch) ne sais plus accéder aux tables externes au produit et génère une erreur :
 
                                    Phase BN

Sélection SQL de la population :
select NUDOSS from ZY00 A, DIGIX B where A.NUDOSS = B.NUDOSS
 

*-------------------------- STEP120N ---------------------------*
*              Constitution d'une population batch              *
*---------------------------------------------------------------*
...

*GE01BMQ-00000000-BHS-92BJ/Unknown logical table name    /DIGIX


Idem pour les pré-sélections SQL dans les chaînes fonctionnelles - par exemple avec NRA :
*-------------------------- STEP120N ---------------------------*
*                 Pré-sélection des populations                 *
*---------------------------------------------------------------*
...

AS800BOV-BBAD0036-BOV (9P/HS) ERREUR DANS MODULE BHS : CODE RETOUR 99  - Unknown logical table name / DIGIX


BMP puis BMQ (respectivement BOV) font appel à BHS qui consulte BHH...
Et dans le squelette de BHH on constate que le nom des tables est contrôlé par rapport à une liste "en dur".

S'il faut accéder à une tables externe ... il ne reste plus qu'à la nommer (soit directement - soit via un synonyme) comme une information ou une table d'objet (ex : YY99 ou AP00) !

12 juin 2013

Automatiser les traitements HR avec RJ2

Depuis HRv7.1 HR Access offre en standard une chaine de soumission des demandes Opération : la chaîne RJ2 (dite "Lanceur universel"). Ce qui permet :
  • D'exécuter un traitement à partir du système Unix,
  • Sans avoir a renseigner de fichier paramètres,
  • Tous les paramètres étant dans la demande ZO.
 L'objet principal de cette chaîne est de permettre l'interfaçage de HRAccess avec un ordonnanceur.

Prérequis :
  • Avoir paramétré la/les demande(s) "Opération" à utiliser,
  • Et comme le rappelle le Guide Technique - avoir généré les exécutables associés !

Ligne de commande Unix :
sh ${PSHL}/${RDOPER}RJ2 "${JSCRI}" "${IDREQU}" "${CDELMT}" "${TEXSER}" "${ROLMSB}" "${ROLVSB}"

avec :
  • RDOPER le radical d'un de vos processus Opération (AS800, FP800 ou autre).
  • JSCRI le nom de la chaîne (AS0FSNRA, FP800NBX, AS800NPQ ...)
  • IDREQU le code de la demande Opération (à blanc pour les templates Query)
  • CDELMT le code du query (en cas de template Query, à blanc sinon)
  • TEXSER nom du verrou pour sérialisation - ne pas dépasser 25 caractères (carte PA4S)
  • ROLMSB modèle de rôle à appliquer
  • ROLVSB valeur de rôle à appliquer
A noter :
  • La RJ2 n'est présente que sur les systèmes Unix et Linux,
  • Seules les chaînes accessibles par Opération / l'Assistant de Gestion sont éligibles,
  • La chaîne n'est pas compatible avec les "enchaînements" NRC,
  • Une analyse des logs reste nécessaire car les codes retours sont parfois imparfaits - ou ne peuvent prendre en compte des appréciations d'ordre fonctionnel (des rejets dans une NRB sont-ils bloquants ? et une "population vide" ?),
  • Second point capital : une gestion des mises à jour des paramètres des demandes Opération est à mettre en place. Car certains doivent évoluer - soit en fonction de la date système - soit du cycle de paie ...

17 mai 2013

Script awk pour convertir le compte rendu RBM / NRB standard en csv

Les comptes rendus des chaînes RBM et NRB ont souvent quelques longueurs ... Ci joint un script awk d'un collègue pour extraire les erreurs et convertir le listing de la mise a jour batch au format CSV. Merci à lui.

A noter : le compte rendu de BMM (RBM950IZ ou NRB322IZ.$nupro) liste les dossiers dont la mise a jour est en erreur. Pour avoir un bilan complet il ne faut pas oublier :
  • Le compte rendu de BMI (RBM150IZ ou NRB150IZ.$nupro) qui liste les bordereaux rejetés (informations non gérées par le processus, formats invalides),
  • Le compte rendu de BME (RBM212IZ ou NRB212IZ.$nupro) qui liste les dossiers à recycler (dossiers dont les contrôles ont été passés mais dont la mise a jour a été "rollbackée" avec celle d'un dossier en erreur) ou l'identifiant du dernier dossier traité (en cas d'arrêt brutal du programme),
  • Le log qui va lister les erreurs SQL graves sources d'un rollback (table absente, tablespace plein, clef en double ...),
A conpléter par le fait :
  • Que le contenu du compte rendu de BMM peut être filtré par les cartes paramètre PA87/PA88 de la demande ZO,
  • Que ce compte rendu peut ne pas être produit en cas d'incident sur la chaîne (kill, macro-processus déphasées, disque plein ...).

On mesure ici la simplicité de l'exploitation de cette chaîne ...

16 mai 2013

Echec du transfert par Filezilla de fichiers contenant des caractères accentués

Sur un serveur AIX les transferts SFTP par Filezilla ne passaient pas si le nom des fichiers contenaient un caractère accentué.




Cela se gère au niveau du serveur. Il faut déclarer dans le .profile du compte Unix les variables de localisation :
  • export LC_TYPE=fr_FR.ISO8859-1
  • export LC_COLLATE=fr_FR.ISO8859-1
Mais si l'administrateur a paramétré le sftp pour être en mode "exclusif" (Match user ... ForceCommand internal-sftp ChrootDirectory /home/...), le .profile n'est pas exécuté.  

Toutefois Loic m'a trouvé une solution de contournement : paramétrer dans Filezilla pour le site concerné un jeu de caractères personnalisé ISO-8859-1 :




Effectivement, cela permet de récupérer le fichier :






Merci Loic ...






3 mai 2013

Comparaison des objets avec la chaîne NVD

Depuis HRv7 la chaîne NVD permet de faire une comparaison d'objets entre environnements (script de soumission subvd). Pour cela il est au préalable nécessaire d'exporter les objets avec la chaîne RB3 et de renommer les fichiers PSBBC101en PSBBVD01 et PSBBVD02 :

                  Phase VD                    
Nom du fichier de référence [PSBBVD01]:
Titre du fichier de référence [PSBBVD01]: fic1
Nom du fichier à comparer [PSBBVD02]:
Titre du fichier à comparer [PSBBVD02]: fic2
Type de comparaison à effectuer (T/I/B) [I]: ?
    TYPCMP :
    T = Traitements
    I = Informations
    B = Traitements et Informations

Type de comparaison à effectuer (T/I/B) [I]: B
Comparaison sur libellés ? (O/N) [N]: N
PA1DBNFIC1 FIC2

Nom du Compte-Rendu d'exécution : TYBXVD.hradev
       Soumettre le job (Y/N/T) [N] ?          


Pour le groupe de traitements AS (1500 traitements) les exports m'ont pris 6 minutes chacun - le volume de chaque fichier (format fixe) 15 Mo. Le temps de traitement de la comparaison a été de 15 secondes.

Toutefois :
  • Cette chaîne se limite aux processus, traitements et informations (il y a 62 type d'objets sous HRv7 ... on mesure là le volume du "reste à faire") !
  • Le résultat n'est pas inintéressant - mais avoir tronqué la zone affichée à 30 caractères et ne pas mettre en vis a vis les différences du code entre deux traitements ... C'est une déception ...
cat PSBBVDCR
TR;AS000000;IDEM
TR;AS0000RE;IDEM
TR;AS0000SA;DIFF
TR;AS0001MA;DIFF
TR;AS00023A;DIFF
TR;AS0002MA;IDEM
TR;AS0003  ;IDEM
TR;AS0005MA;IDEM


(IDEM : l'objet n'a pas évolué, ADD : l'objet a été créé, REM : l'objet a été supprimé, DIFF : il existe une différence, TRAD : il existe une différence sur un libellé).

cat PSBBVDCT
TY; ENTITY ;TABLE;ITEM;NO;COLUMN;PSBBVD01                      ;PSBBVD02
TR;AS0000SA;TR20;0000SA  ;   ;NATRTU;T                             ;M
TR;AS0001MA;TR20;0001MA  ;   ;NATRTU;T                             ;M
TR;AS00023A;TR3P;TBPBR5BA;052;      ;                              ;ADDED
TR;AS00023A;TR3P;TBPBR5CA;022;      ;                              ;ADDED
TR;AS000FCL;TR20;000FCL  ;   ;NATRTU;T                             ;M
TR;AS000GHA;TR3P;TBP018DA;035;      ;                              ;ADDED
TR;AS000XDL;TR20;000XDL  ;   ;NATRTU;T                             ;M
TR;AS00K1NA;TR3P;TBP016CE;020;      ;                              ;REMOVED
TR;AS00KUTE;TR20;00KUTE  ;   ;NATRTU;T                             ;M
TR;AS00MUTE;TR20;00MUTE  ;   ;NATRTU;T                             ;M
TR;AS00XXNA;TR3P;TBP015EA;107;      ;                              ;ADDED
TR;AS01G2AG;TR3P;TBP064QA;200;      ;                              ;DIFF
TR;AS01G2AG;TR3P;TBP069BA;010;      ;                              ;ADDED
TR;AS01G3A1;TR3P;TBP064UA;045;      ;                              ;ADDED
TR;AS01G3A1;TR3P;TBP069BA;010;      ;                              ;ADDED
TR;AS01G5WE;TR3P;TBP062FA;010;      ;                              ;DIFF
TR;AS01G5WE;TR3P;TBP062MA;052;      ;                              ;REMOVED
TR;AS01L1NK;TR3P;TBP042AA;010;      ;                              ;ADDED
TR;AS01L2NA;TR20;01L2NA  ;   ;NATRTU;T                             ;M
TR;AS01L5SM;TR20;01L5SM  ;   ;NATRTU;T                             ;M
TR;AS01Q0T ;TR20;01Q0T   ;   ;NATRTU;T                             ;M
TR;AS01Q0T ;TR21;F       ;   ;LILONG;BNA: Transfert contrôle et tra;*BNA: Transfert contrôle et tr