30 octobre 2012

Chargement du PRDB par HOST TABLES sous HRv9

Avec HRv9 le programme BEB utilise des HOST TABLES pour charger les tables du PRDB par paquet de 100 à 500 lignes (ce fonctionnement est rétro-portable sous HRv7 via un "kit" éditeur - c'est alors un programme BFB qui remplace le BEB HRv7).

Le principe des HOST TABLES est décrit dans la documentation ORACLE. Je vois en revanche peu de possibilité pour utiliser cette fonctionnalité avec HR Access - car la plupart des mises à jour sont réalisées via les opérateurs de mouvement.

  • Exemple de déclaration de tableau (extrait de BEB / BFB) :

 01 HTB-CLZX0F PIC S9(4)                    COMP.                
 01 HTB-CLZX0F-MAX VALUE 0100  PIC S9(4)    COMP.                
 01 HTB-ZX0F.                                                    
  02 HTB-ZX0F-NUDOSS OCCURS  0100 PIC S9(9) COMP.                
  02 HTB-ZX0F-SOCDOS OCCURS  0100 PIC X(003).                    
  02 HTB-ZX0F-PGPDOS OCCURS  0100 PIC S9(9) COMP.                
  02 HTB-ZX0F-NULIGN OCCURS  0100 PIC S9(08) PACKED-DECIMAL.     
  02 HTB-ZX0F-CODLAN OCCURS  0100 PIC X(002).                    
  02 HTB-ZX0F-TYPADD OCCURS  0100 PIC X(003).                    
  02 HTB-ZX0F-MODTAD OCCURS  0100 PIC X(003).                    
  02 HTB-ZX0F-REPTAD OCCURS  0100 PIC X(003).                    
  02 HTB-ZX0F-LIBTAD OCCURS  0100 PIC X(045).                    
  02 HTB-ZX0F-DATDEB OCCURS  0100 PIC X(10).                     
  02 HTB-ZX0F-DATFIN OCCURS  0100 PIC X(10).                     
  02 HTB-ZX0F-TEMADD OCCURS  0100 PIC X(001).                     


  • Exemple d'alimentation du tableau :

 F9YDGZX0F.  IF    A-CDSTDO = "ZX"                               
           AND   A-CDSEGI = "0F"                                 
           NEXT SENTENCE ELSE GO TO F9YDGZX0F-FN.                
    ADD   +1  TO  HTB-CLZX0F.                                    
        MOVE  H-NUDOSS TO      HTB-ZX0F-NUDOSS    (HTB-CLZX0F).  
        MOVE  H-SOCDOS TO      HTB-ZX0F-SOCDOS    (HTB-CLZX0F).  
        MOVE  H-PGPDOS TO      HTB-ZX0F-PGPDOS    (HTB-CLZX0F).  
        MOVE  H-NULIGN TO      HTB-ZX0F-NULIGN    (HTB-CLZX0F).  
        MOVE  A-ZX0F-CODLAN  TO                                  
              HTB-ZX0F-CODLAN(HTB-CLZX0F).                       
        MOVE  A-ZX0F-TYPADD  TO                                  
              HTB-ZX0F-TYPADD(HTB-CLZX0F).                        

...

  • Exemple d'insertion en base :

          IF  S-CDSTDO = "ZX" AND S-CDSEGI = "0F"                
         AND HTB-CLZX0F > ZERO                                   
 

         EXEC SQL FOR :HTB-CLZX0F                                
                   INSERT INTO          ZX0F                     
        (NUDOSS, SOCDOS, PGPDOS, NULIGN, CODLAN, TYPADD,         
          MODTAD, REPTAD, LIBTAD,                                
              DATDEB                                    ,        
              DATFIN                                    ,        
          TEMADD, MODPAY, CDPAYS, REPPAY, LIBPAY, CDPOST,        
          ZONADA, ZONADB, ZONADC, ZONADD, ZONADE, ZONADF,        
          ZONADG, ZONADH, ZONADI, ZONADJ, IDGPRG, SOCCLE,        
          MATRIC, NUDOSP, IDSITU, PERPAI, USAGEP, NUMTRT,        
          NUMBUL,                                                
              TIMEST                                    )        
          VALUES                                                 
          (                                                      
          :HTB-ZX0F-NUDOSS     ,                                 
          :HTB-ZX0F-SOCDOS     ,                                 
          :HTB-ZX0F-PGPDOS     ,                                 
          :HTB-ZX0F-NULIGN     ,                                 
          :HTB-ZX0F-CODLAN     ,                                 
...                                                                 
          :HTB-ZX0F-IDSITU     ,                                 
          :HTB-ZX0F-PERPAI     ,                                 
          :HTB-ZX0F-USAGEP     ,                                 
          :HTB-ZX0F-NUMTRT     ,                                 
          :HTB-ZX0F-NUMBUL     ,                                 
          :HTB-ZX0F-TIMEST                                       
          )                                                      
          END-EXEC                                                



Le nombre d’occurrences traité par paquet est paramétrable via le fichier $PARM/TYBPPRBZ. Ici par exemple on charge par défaut par paquet de 100 lignes - mais par 500 pour ZX5C et ZX8K :
PB17*HZX  0100
PB17*HZX5C0500
PB17*HZX8K0500


Dans RBZ et ROA on trouve la prise en compte de ce fichier :
#RADICAUX
echo "PB17RDFD01TO_DATE(" > $PB
echo "PB17RDFD02)" >> $PB
echo "PB17RDFD03TO_CHAR(" >> $PB
echo "PB17RDFD04,'YYYY-MM-DD'" >> $PB
echo "PB17RDFD05 " >> $PB
echo "PB17RDFD06 " >> $PB
echo "PB17RDFD07 " >> $PB
echo "PB17RDFD08 " >> $PB
if [ -s $PARM/TYBPPRBZ   ] ; then
cat $PARM/TYBPPRBZ >> $PB
fi


Bizarrement ce fichier TYBPPRBZ est livré avec le kit HRv7 mais pas dans la HRv9 standard ...

25 octobre 2012

cHTMeLe ... ou comment vous initier avec vos enfants au HTML5 !

Vous me pardonnerez ce "Hors sujet" : Si vous souhaitez vous mettre (vous ou vos enfants) au HTML5, il FAUT que vous jetiez un œil sur ce jeu de plateau (2 à 5 joueurs, à partir de 8 ans), téléchargeable gratuitement ... Merci Nicolas pour ce lien ! Merci aux créateurs de cHTMeLe pour leur joyeuse inventivité !




15 octobre 2012

Erreurs d'un script Linux à cause d'un format [dos]

Sous Linux, à l'exécution, un de mes scripts a un comportement bizarre.
Il commence par deux lignes blanches, et si je tente une exécution avec trace j'obtiens ceci :

ksh -x ScriptBizarre.sh
+
: not found
+
: not found

...

Si je l'édite sous "vi" ("vim" sous Linux) ... rien de spécial.
Je finis par remarquer que "vim" m'indique à l'ouverture du fichier :

ScriptBizarre.sh 29L, 547C [dos]

Effectivement, j'avais édité ce script sur mon poste puis je l'avais transféré par FTP sur le serveur. Chaque ligne se termine donc par un "^M" (caractère de fin de ligne Windows) que "vim" masque en faisant une conversion automatique à l'affichage.Si je force l'affichage des caractères spéciaux avec la commande "cat" j'obtiens en effet :

cat -A ScriptBizarre.sh
^M$
^M$

...

Pour convertir le fichier du format DOS au format UNIX :
  • l'éditer et indiquez que vous souhaitez un format Unix en tapant :set fileformat=unix puis sauvegardez,
  • ou utilisez la commande dos2unix ScriptBizarre.sh

A lire ... http://vim.wikia.com/wiki/File_format

12 octobre 2012

Supprimer l'alimentation des journaux **LG10

Sur un de mes environnements HRv7 où le domaine "Formation" est en production depuis moins de un an, l'administrateur Oracle m'alerte :

  • la structure ZE occupe 5,56 Go dont 5,50 Go pour la table ZELG10,
  • la structure ZD occupe 8,3 Go dont 7,9 Go pour la table ZDLG10,
  • la structure ZY occupe 13,5 Go dont 11 Go pour la table ZYLG10.


Ceci est dû aux témoins de journalisation positionnés (pour la plupart en standard) dans le produit. Si certaines traces sont utiles (suivi, interfaces), pensez à automatiser le nettoyage des données obsolètes (WHERE TILG10 > SYSDATE - n). Dans le cas contraire, je vous préconise de désactiver rapidement cette fonction.

Pour supprimer l'alimentation de ces journaux, vous pouvez utiliser HRD Studio et modifier les objets Processus et Informations, puis sous HRWeb décocher les logs des dossiers de demandes ZO. Pour aller plus vite, par SQL vous pouvez procéder comme suit :

  • supprimer les témoins de journalisation LG10 pour les Processus. La mise a jour est dynamique et ne nécessite pas de regénération,
update AP20 set TELG10='0' where TELG10<>'0';

  • Supprimer les témoins de journalisation des Informations. Ce dernier témoin nécessite une regénération des processus de qualification "Gestion de Dossiers". Vous pouvez faire cela au fil de l'eau, ou en masse, puis les livrer ...
update DI40 set TIMODI=SYSDATE, TIMODG=SYSDATE, TYACCR='0' where TYACCR<> '0';

  • Supprimer le témoin de journalisation des demandes ZO NRB de mise a jour batch,
update ZO25 set TELG10 = '0' where TELG10 <> '0' and NUDOSS in (select NUDOSS from ZO00 where CDPHAS='NRB' and TISOUM='0001-01-01');

10 octobre 2012

Objets de conception de l'arborescence HRaSpace v9

Dans l'objectif d'éclairer sur les liens entre objets de conception de l'arborescence, et sur le modèle de ce qui avait été fait par un collègue en v7 ... Ci joint un graphique permettant de mettre en correspondance un libellé aperçu en naviguant avec celui d'un libellé d'objet sous HR Studio.

Je suis moyennement satisfait de mon analyse, car le lien entre le code Action et le Noeud (3) n'est pas direct (je l'obtiens par références croisées) et n'est pas bijectif (ici les références croisées indiquent deux noeuds - il semble qu'il faille prendre le "premier" noeud ?) ...

En second lieu, il faut noter que le jeu d'onglets sur les Pages (4) n'apparaît que s'il y a plus d'une page à afficher - ceci en considérant les filtrages effectués par la confidentialité et par la localisation ...

A noter aussi : il est possible (par clic droit sur l'objet "Plan de Site", Fonctions avancées) d'obtenir un export XLS où le lien entre l'Action, le Noeud et la Page seront explicites :





9 octobre 2012

Premier aperçu de Intuitive Query sous HRv9

IntuitiveQuery est un outil accessible depuis HRaSpace qui permet aux responsables et aux experts RH de créer, exécuter et sauvegarder ses rapports (dénommés rapports "Ad Hoc"). L'utilisateur sélectionne ses champs à partir d'objets appelés "perspectives d'assemblage", crées au préalable dans Design Center par les développeurs.

8 octobre 2012

Un bloc note dans l'interface HRaSpace 9

Une bricole amusante : l'utilisateur peut gérer des notes personnelles dans l'interface de HRaSpace v9 :

Les notes sont stockées en table UP10, UP30 avec TYPERS='NOTES' :

SQL> select * from up30 where IDPERS in (select IDPERS from UP10 where TYPERS='NOTES' and USERID='DIGIX');

    IDPERS     NULIGN    ZONVAR
---------- ---------- ---------

-1.125E+09          1  00030017Coder-Version:1.00036Content-Type:text/xml; charset=UTF-80032Content-Transfer-Encoding:base640000005CPD94bWwgdmVyc2lvbj0iMS4wIiA/Pjxub3Rlcz48bm90ZT5DZWNpIGVzdCB1bmUgbm90ZTwvbm90ZT48L25vdGVzPg==

Soit, après décodage :

echo "0000005CPD94bWwgdmVyc2lvbj0iMS4wIiA/Pjxub3Rlcz48bm90ZT5DZWNpIGVzdCB1bmUgbm90ZTwvbm90ZT48L25vdGVzPg==" | perl -MMIME::Base64 -ne 'print decode_base64($_)'
ÓM4ÓNB<?xml version="1.0" ?><notes><note>Ceci est une note</note></notes>

5 octobre 2012

Liste et code des objets depuis HRv2 jusqu'à HRv9

Ci dessous une liste des codes et noms des différents type d'objets de conception HR Access.
  • Ceux apparus avec HRv3 sont en rouge
  • avec HRv3e en jaune
  • avec HRv5 en vert.
  • avec HRv7 en bleu 
  • et enfin avec HRv9 en violet.

AM : Arbre de publication
AN : Arbre fonctionnel
AP : Groupe de processus
AR : HRa Scope
AS : Plan de site
AT : Service
BP : Processus Guidé

CA : Code action fonctionnelle HRv5 / contextuelle HRv7
CC : Condition cataloguée
CO : Code confidentialité
CT : Documentation commune
CX : Action fonctionnelle HRv7
DO : Document d'exploration 
EC : Ecran C/S (obsolète)
ET : Etats
EX : Exploration
E0 : Objets générique E0
E1 : Elément graphique
E2 : Document de fusion

E3 : Ressource Web
E4 : Objets générique E4
E5 : Objets
générique E5
E6 : Objets
générique E6
E7 : Objets
générique E7
E8 : Objets
générique E8
E9 : Objets
générique E9
FM : Fichiers Micro
FO : Formulaire
FP : Famille procédure C/S (obsolète)

FS : Feuille de style C/S (obsolète)
GB : Groupe de processus guidés
GD : Groupe de perspectives
GE : Groupe d'écrans C/S (obsolète)
GF : Groupe de formulaires
GK : Groupe de collections
GM : Groupe de descriptions données métier
GR : Groupe de requête DXE/TP (obsolète)
GT : Groupe de traitements
GX : Groupe d'exploration
HB : Activités
HD : Perspective
IN : Information
IO : Information ODS
IW : Information WH (déjà présent dans les dernières v3e)
KL : Collection
LI : Lien
LY : Action fonctionnelle localisée
MI : Description de données métier
NA : Assistant de Navigation
NN : Noeud
NS : Etape de l'Assistant
OD : Outbound process
OG : Groupe d'Outbound process

PA : Profil application (obsolète)
PE : Profil navigation (obsolète)
PI : Profil de information (obsolète)
PO : Profil action (obsolète)
PP : Profil population (obsolète)
PR : Profil requête (obsolète)
PC : Procédure C/S (obsolète)
PH : Plate-forme physique
PJ : Projet
PL : Plate-forme logique
PM : Paramètre
PS : Processus
PW : Serveur Web (obsolète)
QD : Query DataModel (inutilisé)
QG : Groupe de requêtes HRQuery
QL : Mise en page spécialisée HRQuery
QP : Population HRQuery
QR : Rapport HRQuery

RO : Rôle (modèle, structure)
RQ : Requête DXE/TP (obsolète)
SD : Structure de données
SG : Script plug-in
SI : Site HRv3e / Topologie système
SO : Structure de données ODS
SP : Sous-projet
ST : Type de dossier
SW : Structure de données WH (déjà présent dans les dernières v3e)
SY : Macro systèmes
TR : Traitement
UC : Utilisateur
WF : Page Web
WG : Groupe de pages Web

WK : Code workflow
WS : Charte graphique Web
ZC : Modèle de mail

A compter des clients HRStudio 7.30.60 (et le kit Tâche pour les HRv7)
AE : Objets "Tâche"

1 octobre 2012

Calculer le nombre de jours (hors WE) dans l'année

Ci joint une fonction DB2 trouvée sur le forum de http://www.tek-tips.com. Elle vous permet de calculer le nombre de jours ouvrables (lundi, mardi ... vendredi - sans considération de jours fériés) entre deux dates.

exemple : script DDL PSBBGJ_BUSINESSDAYS.sql

CREATE FUNCTION business_days (low_date DATE, high_date DATE)
RETURNS INTEGER
BEGIN ATOMIC
   DECLARE bus_days INTEGER DEFAULT 0;
   DECLARE cur_date DATE;
   SET cur_date = low_date;
   WHILE cur_date < high_date DO
      IF DAYOFWEEK(cur_date) IN (2,3,4,5,6) THEN
         SET bus_days = bus_days + 1;
      END IF;
      SET cur_date = cur_date + 1 DAY;
   END WHILE;
   RETURN bus_days;
END!

COMMIT!

création de la fonction :
cat PSBBGJ_BUSINESSDAYS.sql | db2 -vtd\!

utilisation de la fonction :
select HR.business_days(DATE ('2012-01-01'),DATE ('2013-01-01')) from sysibm.sysdummy1
-----------
        261