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


11 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