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 ...

Détail de la soumission


La chaîne RJ2 exécute :
  1. BOB : comme dans le script OPER, ce programme crée un version habillée de la chaîne dans $TMP/W120JS."$nupro" à partir de celle présente dans prod/shl.  Il y place des cartes paramètre avec le NUDOSS de la demande, le code du processus, le rôle et sa valeur.
  2. BOZ : celui ci active la demande Opération (ZO1S-TESOUD) et mémorise ne NUDOSS et le Timestamp de soumission de la demande dans $TMP/W140PO.$nupro
  3. La chaine habillée
  4. BOZ : recupère le code retour de la chaîne dans le dossier de travail pour l'émettre en fin d'exécution (les codes retour peuvent valoir 0 4 8 ... 99). Sauf cas particulier un code retour Unix inférieur ou égal à 4 vaut pour "Fin normale" - sinon c'est une "Fin anormale".
AS800BOZ-BBAO0034-Code retour 01 pour la chaine AS0FSNRA (dossier 000000000008028/ZO2C) (FZO2C94)

Sérialiser des traitements



Le paramètre TEXSER permet d'utiliser la commande $SIGACS/bin/XSERIALISE. Le programme BOB insère la commande dans la chaîne à lancer. Ainsi deux traitements utilisant le même verrou seront exécutés en série. Toutefois dans la version dont je dispose il y a plusieurs problèmes :
  • Il est nécessaire de créer le répertoire $SIGACS/EXPLOIT,
  • Dans la chaîne RJ2 il faut changer $SIGACS/BIN/XSERIALIZE en $SIGACS/bin/XSERIALIZE,
  • Le 3eme paramètre CDELMT sert de nom au fichier servant de verrou ! Remplacez $3 par $4 pour utiliser le paramètre TEXSER à la place,
  •  Pour que la commande XSERIALIZE fonctionne il faut que le fichier $SIGACS/EXPLOIT/<TEXSER> ait été préalablement créé : la chaîne ne le fait pas...
Pour avoir des informations sur un fichier verrou :
$SIGACS/bin/XSERIALIZE STATUS $SIGACS/EXPLOIT/<TEXSER>

Pour libérer un fichier verrou :
$SIGACS/bin/XSERIALIZE FREE   $SIGACS/EXPLOIT/<TEXSER>

Pour le détruire :
$SIGACS/bin/XSERIALIZE REMOVE $SIGACS/EXPLOIT/<TEXSER>

Shell pouvant servir de lanceur


sub
 

[ ! -f ${PSHL}/AS800RJ2 ] && echo "Chaine AS800RJ2 inexistante !" && exit 1
[ $# -lt 2 ] && echo "Syntaxe : sub JSCRI IDREQU [CDQRY] [TEXSER] [ROLMSB] [ROLVSB]" && exit 1
[ ! -f ${PSHL}/${1}     ] && echo "Chaine ${PSHL}/${1} inexistante !"     && exit 1
[ "${4}" -a ! -f "${SBIN}/EXPLOIT/${4}" ] && touch "${SBIN}/EXPLOIT/${4}"

 ksh ${PSHL}/AS800RJ2 "${1:?Chaine?}" "${2}" "${3}" "${4}" "${5}" "${6}"
[ $? -ge 8 ] && echo "Exécution en erreur !" && exit 1
exit 0



Exemple d'utilisation :

sub AS0FSNRA "A01"


*****************************************************************
*            Chaine RJ2 - Triplet UNO (UNIX/ORACLE)             *
*****************************************************************
JOB : JRJ2                            DATE : 2013/05/31 17:17:12
*-------------------------- STEP120A ---------------------------*
*             Chargement de paramètres dans T120PA              *

*-------------------------- STEP120N ---------------------------*
*                                                               *
*---------------------------------------------------------------*
AS800BOB-BBAD0001---------------------------------------------------------
AS800BOB-BBAD0002-IDENTIFICATION DU PROGRAMME : BOB/7.000/2013-04-02-18.05.20/F/
AS800BOB-BBAD0003-DEBUT DE TRAITEMENT   - HORODATAGE DE DEBUT : 2013-05-31-17.17.12
AS800BOB-BBAD0004-LISTE DES PARAMETRES LUS
AS800BOB-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
AS800BOB-00000000-PA4SNMJOBSAS0FSNRA
AS800BOB-00000000-PA4SIDREQUA01
AS800BOB-00000000-PA4SCDELMT
AS800BOB-00000000-PA4STEXSER
AS800BOB-00000000-PA4SROLMSB
AS800BOB-00000000-PA4SROLVSB
AS800BOB-00000000-PA4SXSZGET/hradev/BIN/XSERIALIZE GET /hradev/EXPLOIT/
AS800BOB-00000000-PA4SXSZFRE/hradev/BIN/XSERIALIZE FREE /hradev/EXPLOIT/
AS800BOB-00000000-PA4S<END>
AS800BOB-BBAO0036-Demande non schedulée (TEDMAC=N)
AS800BOB-BBAD0005-LISTE DES PARAMETRES INTERPRETES ET UTILISES
AS800BOB-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
AS800BOB-00000000-PA4SIDREQUA01
AS800BOB-00000000-PA4SCDELMT
AS800BOB-00000000-PA4STEXSER
AS800BOB-00000000-PA4SROLMSB
AS800BOB-00000000-PA4SROLVSB
AS800BOB-00000000-PA4SXSZGET/hradev/BIN/XSERIALIZE GET /hradev/EXPLOIT/
AS800BOB-00000000-PA4SXSZFRE/hradev/BIN/XSERIALIZE FREE /hradev/EXPLOIT/
AS800BOB-00000000-PA47
AS800BOB-00000000-PA45000002170AS0FS                                       AS0FSNRA
AS800BOB-00000000-PA46                                                      AS0FS
AS800BOB-00000000-PA47
AS800BOB-BBAD0008-STATISTIQUES SUR LES FICHIERS (ENREGISTREMENTS LUS/ECRITS)
AS800BOB-BBAD0009-PA (PA) : 000000000000012
AS800BOB-BBAD0009-JE (JE) : 000000000001221
AS800BOB-BBAD0009-JS (JS) : 000000000001093
AS800BOB-BBAD0010-*** BOB : FIN NORMALE  - HORODATAGE DE FIN   : 2013-05-31-17.17.12  **** CODE RETOUR 00 ******
...

*-------------------------- STEP140N ---------------------------*
*                                                               *
*---------------------------------------------------------------*
AS800BOZ-BBAD0001---------------------------------------------------------
AS800BOZ-BBAD0002-IDENTIFICATION DU PROGRAMME : BOZ/7.000/2013-04-02-18.05.30/F/
AS800BOZ-BBAD0003-DEBUT DE TRAITEMENT   - HORODATAGE DE DEBUT : 2013-05-31-17.17.12
AS800BOZ-BBAD0004-LISTE DES PARAMETRES LUS
AS800BOZ-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
AS800BOZ-00000000-PA4SNMJOBSAS0FSNRA
AS800BOZ-00000000-PA4SIDREQUA01
AS800BOZ-00000000-PA4SCDELMT
AS800BOZ-00000000-PA4STYTRAI1
AS800BOZ-00000000-PA4S<END>
AS800BOZ-BBAD0005-LISTE DES PARAMETRES INTERPRETES ET UTILISES
AS800BOZ-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
AS800BOZ-00000000-PA4SNMJOBSAS0FSNRA
AS800BOZ-00000000-PA4SIDREQUA01
AS800BOZ-00000000-PA4SCDELMT
AS800BOZ-00000000-PA4STYTRAI1
AS800BOZ-00000000-PA4S<END>
AS800BOZ-BBAD0008-STATISTIQUES SUR LES FICHIERS (ENREGISTREMENTS LUS/ECRITS)
AS800BOZ-BBAD0009-PA (PA) : 000000000000005
AS800BOZ-BBAD0009-PI (PI) : 000000000000000
AS800BOZ-BBAD0009-PO (PO) : 000000000000001
AS800BOZ-BBAD0010-*** BOZ : FIN NORMALE  - HORODATAGE DE FIN   : 2013-05-31-17.17.12  **** CODE RETOUR 00 ******

*******************************************************
*                     Shell Execution                 *
*******************************************************

*****************************************************************
*                   Production de mouvements                    *
*****************************************************************

JOB : JNRA                            DATE : 2013/05/31 17:17:12

*-------------------------- STEP050A ---------------------------*
*             Chargement de paramètres dans T050PA              *
*-------------------------- STEP050B ---------------------------*
*             Chargement de paramètres dans T050PB              *
*-------------------------- STEP050N ---------------------------*
*                  Initialisation de la phase                   *
*---------------------------------------------------------------*
AS800BOP-BBAD0001---------------------------------------------------------
AS800BOP-BBAD0002-IDENTIFICATION DU PROGRAMME : BOP/7.000/2013-04-02-18.05.23/F/
AS800BOP-BBAD0003-DEBUT DE TRAITEMENT   - HORODATAGE DE DEBUT : 2013-05-31-17.17.13
AS800BOP-BBAD0004-LISTE DES PARAMETRES LUS
AS800BOP-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
AS800BOP-00000000-PA4S000002170AS0FS
AS800BOP-BBAD0005-LISTE DES PARAMETRES INTERPRETES ET UTILISES
AS800BOP-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
AS800BOP-00000000-PA45000002170AS0FS
AS800BOP-BBAD0004-LISTE DES PARAMETRES LUS
AS800BOP-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
AS800BOP-00000000-CHECK
AS800BOP-00000000-22S3
AS800BOP-00000000-23S3
AS800BOP-00000000-27S3
AS800BOP-00000000-28S3
AS800BOP-BBAD0005-LISTE DES PARAMETRES INTERPRETES ET UTILISES
AS800BOP-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
AS800BOP-00000000-22S3
AS800BOP-00000000-23S3
AS800BOP-00000000-27S3
AS800BOP-00000000-28S3
AS800BOP-BBAO0002-TRAVAIL TRAITE 000000000008031 NRA A01 ALLHRLO
AS800BOP-BBAO0037-Mode schedulé
AS800BOP-BBAD0008-STATISTIQUES SUR LES FICHIERS (ENREGISTREMENTS LUS/ECRITS)
AS800BOP-BBAD0009-NT (NT) : 000000000000001
AS800BOP-BBAD0009-PA (PA) : 000000000000001
AS800BOP-BBAD0009-PB (PB) : 000000000000005
AS800BOP-BBAD0009-SD (S3) : 000000000000002
AS800BOP-BBAD0010-*** BOP : FIN NORMALE  - HORODATAGE DE FIN   : 2013-05-31-17.17.13  **** CODE RETOUR 00 ******
...


JOB : JNRA                            DATE : 2013/05/31 17:17:37


*---------------------------------------------------------------*
*                          Fin du job                           *
*---------------------------------------------------------------*
*-------------------------- STEP180A ---------------------------*
*             Chargement de paramètres dans T180PA              *
*---------------------------------------------------------------*


*-------------------------- STEP180B ---------------------------*
*             Initialisation du fichier vide T180PO             *
*---------------------------------------------------------------*


*-------------------------- STEP180N ---------------------------*
*                                                               *
*---------------------------------------------------------------*
AS800BOZ-BBAD0001---------------------------------------------------------
AS800BOZ-BBAD0002-IDENTIFICATION DU PROGRAMME : BOZ/7.000/2013-04-02-18.05.30/F/
AS800BOZ-BBAD0003-DEBUT DE TRAITEMENT   - HORODATAGE DE DEBUT : 2013-05-31-17.17.37
AS800BOZ-BBAD0004-LISTE DES PARAMETRES LUS
AS800BOZ-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
AS800BOZ-00000000-PA4SNMJOBSAS0FSNRA
AS800BOZ-00000000-PA4SIDREQUA01
AS800BOZ-00000000-PA4SCDELMT
AS800BOZ-00000000-PA4STYTRAI2
AS800BOZ-00000000-PA4S<END>
AS800BOZ-BBAD0005-LISTE DES PARAMETRES INTERPRETES ET UTILISES
AS800BOZ-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
AS800BOZ-00000000-PA4SNMJOBSAS0FSNRA
AS800BOZ-00000000-PA4SIDREQUA01
AS800BOZ-00000000-PA4SCDELMT
AS800BOZ-00000000-PA4STYTRAI2
AS800BOZ-00000000-PA4S<END>
AS800BOZ-BBAO0034-Code retour 01 pour la chaine AS0FSNRA (dossier 000000000008031/ZO2C) (FZO2C94)
AS800BOZ-BBAD0008-STATISTIQUES SUR LES FICHIERS (ENREGISTREMENTS LUS/ECRITS)
AS800BOZ-BBAD0009-PA (PA) : 000000000000005
AS800BOZ-BBAD0009-PI (PI) : 000000000000001
AS800BOZ-BBAD0009-PO (PO) : 000000000000000
AS800BOZ-BBAD0010-*** BOZ : FIN NORMALE  - HORODATAGE DE FIN   : 2013-05-31-17.17.37  **** CODE RETOUR 01 ******
JOB : JRJ2                            DATE : 2013/05/31 17:17:38
*---------------------------------------------------------------*
*                          Fin du job                           *
*---------------------------------------------------------------*
 


13 commentaires:

  1. Bonjour,
    Je suis utilisateur de l'outil HR ACCESS, et je savoir
    s'il est possible de generer des macros pour remplir différents champs sur des champs libres d'un ou plusieur écrans.
    Merci.
    cristif.92@gmail.com

    RépondreSupprimer
    Réponses
    1. Je pense que tu penses à un utilitaire comme "CLIENT VANTAGE".
      Mais il me semble que c'est assez technique.

      PS : je ne vois pas le rapport avec le sujet de l'article ...

      Supprimer
  2. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  3. La RJ2 permet de simplifier l'automatisation.
    Mais dans le cas où on écrit un shell qui enchaine :

    * AS800RJ2 "wwwwwK24" "Toto"
    * AS800RJ2 "xxxxxK3W" "Toto"
    * AS800RJ2 "yyyyyNJ6" "Toto"
    * AS800RJ2 "zzzzzK2U" "Toto"

    Comment récupérer le code retour de la K24 afin de le controler avant d'enchainer avec la K3W ?

    RépondreSupprimer
    Réponses
    1. Le code retour de la chaine est retourné par la RJ2.
      C'est de la programmation script Unix classique ...

      sh AS800RJ2 "wwwwwK24" "Toto"
      if [ $? -gt 4 ]; then exit 1; fi
      sh AS800RJ2 "wwwwwK3W" "Toto"
      if [ $? -gt 4 ]; then exit 1; fi
      ...
      exit 0

      Rappel : un code retour HR inférieur ou égal à 4 vaut pour "Fin normale" sinon c'est une "Fin anormale". Mais dans certains cas il vaut mieux rediriger le log et l'analyser.


      Supprimer
  4. Bonjour Digix,

    Sais-tu s'il existe le pendant de RJ2 sur Windows ?

    Bonne journée,

    RépondreSupprimer
  5. Bonjour Digix,

    Comment récupère t'on le nupro pour trouver l'états dans $LIS?

    Bonne journée

    RépondreSupprimer
    Réponses
    1. Si tu exportes nupro=$$ avant d'exécuter la RJ2 alors la chaine (processus fils de ta session Unix) en héritera - attention si tu exécutes plusieurs traitements car le nupro n'évoluera pas ce qui risque de provoquer des écrasements de fichiers - complète le par exemple avec un horodatage : export nupro=$(date +'%Y%m%d%H%M%S).$$

      Supprimer
    2. Merci

      Je n'avais pas penser à cela.
      Ca marche très bien.

      Supprimer
  6. Bonjour Digix,

    Est-ce que l'on peut lancer une RJ2 avec une NPQ ?
    J'ai l'impression que non car IDREQU est vide et j'ai l'erreur suivante :
    Demande non trouvée dans ZO00 pour NPQ AS800

    Bonne journée

    RépondreSupprimer
  7. J'ai trouvé, il faut rentrer un paramètre de plus et IDREQU doit être vide

    RépondreSupprimer
  8. Bonjour Digix, comment déclencher un "post-traitement" (script par exemple) après la soumission d'une demande opération ?

    RépondreSupprimer
    Réponses
    1. Si tu as soumis ta demande avec RJ2, tu peux enchainer avec un script.
      Si c'est après une soumission via HRaSpace, ta demande va transiter via le script job puis OPER (si c'est une activation suivie d'une RBB c'est via OPE2, et si c'est dans un enchainement NRC ce sera via la NRE ... mais en arrière plan, pas simple dans ce cas).
      Dans le cas de OPER, après le message "OPER End of job" tu peux
      1) rechercher dans $LOG/$JOBLOG le NUDOSS du travail (message BOP-BBAO0002-TRAVAIL TRAITE 000000000123456) puis exécuter un script spécifique en lui passant ce NUDOSS en paramètre.
      2) ce post-traitement pourra faire un SELECT en base pour retrouver CDPHAS, IDREQU et autre.
      3) en fonction des critères qui te sont pertinents, il pourra exécuter un post-traitement spécifique ou un autre.

      Supprimer