17 décembre 2013

Correspondances entre traitements d'édition de bulletin HRv5 et HRv7

Ci dessous une table de correspondances (rencontrée au hasard d'un projet) entre la V5 et la V7 concernant certains contextes de traitements de paie :


 

HRv5
HRv9

Program/Job Contexts Program/Job Contexts
Initialize at beginning of program DBD/NJ1 TDP350 DB9 TDP350
"

DGD TDP754
"

DC7 TDPA34
Load rule system DBD/NJ1 TDP351 DB9 TDP351
"

DGD TDP755
"

DC7 TDPA35
Modify items in the bank transfer interface DBD/NJ1 TDP352 DGD
Initialize user-dehned variables DBD/NJ1 TDP358 DB9 TDP358
Initialize payroll log holds DBD/NJ1 TDP360 DB9 TDP360
Process payroll log fields DBD/NJ1 TDP362 DB9 TDP362
Delete payslip DBD/NJ1 TDP364 DGD TDP757
End of job DBD/NJ1 TDP366 DB9 TDP366
"

DC8 TDPA53
Modify payslip sort criteria DBD/NJ1 TDP368 DC7 TDPA36
Modify payment sort criteria DBD/NJ1 TDP370 DGD TDP757
Insert sort arguments for payroll logs DBD/NJ1 TDP372 DB9 TDP372
Modify values in the payroll log work field DBD/NJ1 TDP374 DB9 TDP374
Merge payroll items DBD/NJ1 TDP376 DC8 TDPA60





Process parameters DBL/NJ1 TDP530  DC8/NJ6 TDPA40 
Process the payslip issuing date  DBL/NJ1 TDP532  DC8/NJ6 TDPA40 
Initialize all companies DBL/NJ1 TDP534  DC8/NJ6 TDPA41 
Calculate flow control variables  DBL/NJ1 TDP536  DC8/NJ6 TDPA42 
Recovery of the company data  DBL/NJ1 TDP537  DC8/NJ6 TDPA43 
Process item positions on payslip DBL/NJ1 TDP538  DC8/NJ6 TDPA44 
Move items from payslip body to stub DBL/NJ1 TDP539  DC8/NJ6 TDPA45 
Process payslip header lines DBL/NJ1 TDP540 DC8/NJ6 TDPAA6 
Print payslip header using customized spgm  DBL/NJ1 TDP541 DC8/NJ6 TDPA47 
Process payslip stub lines DBL/NJ1 TDP542 DC8/NJ6 TDPA48 
Print payslip stub fines using customized spgm  DBL/NJ1 TDP543 DC8/NJ6 TDPA49 
Process printout of payslip body DBL/NJ1 TDP544 DC8/NJ6 TDPA50 
Process user subreports for payslip DBL/NJ1 TDP545  DC8/NJ6 TDPA59 
Prepare total lines DBL/NJ1 TDP546  DC8/NJ6 TDPA51 
Process lines after totaling  DBL/NJ1 TDP548  DC8/NJ6 TDPA52 
End of job DBL/NJ1 TDP550 DC8/NJ6 TDPA53

25 novembre 2013

The JSP specification requires that an attribute name is preceded by whitespace

Avec la 7.30.40 un problème d'affichage de "Mes demandes" du Self Service a été identifié sur les serveurs Tomcat 7. Aucune demande et notification ne s'affiche et une erreur apparait dans la log :

org.apache.jasper.JasperException: /WEB-INF/view/followup.jsp (line: 248, column: 126) The JSP specification requires that an attribute name is preceded by whitespace at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler
.java:42)


Pour le corriger il faut:
  • Ajouter la ligne suivante dans le fichier tomcat/conf/catalina.properties :
org.apache.jasper.compiler.Parser.STRICT_WHITESPACE=false
  • Redémarrer le serveur web.

22 novembre 2013

Firefox 17 ESR - fichier PDF vide ou fenêtre blanche qui s'ouvre et se ferme en boucle

Firefox 17 ESR intègre un lecteur de PDF interne. Pour faire fonctionner les fusions bureautiques correctement, il faut désactiver ce lecteur PDF interne et réactiver le plug-in acobat.

Pour cela :
  • Dans Firefox allez dans le menu outils/options/application
  • Pour les lignes "Adobe..." choisir "Use adobe acrobat in firefox".
  • Dans Adobe : dans le menu editions/preferences/internet/options du navigateur web, 
  • cocher l'option: Afficher les pdf dans le navigateur

8 novembre 2013

Allocation mémoire des applications Java

Ci dessous un résumé de ce que j'ai glané sur les mécanismes d'allocation mémoire des applications Java. Une des difficulté est d'intégrer les variations du vocabulaire. Ce n'est pas la seule ...

Le Heap

C'est le "tas" de mémoire alloué à chaque processus Java (Dans le cas de HR Access on trouvera un processus Java pour OpenHR, un pour HRQuery, un pour Tomcat). La taille maximale allouable est fonction du système (Sun, Red Hat, Windows ... / 32, 64 bits). Des paramètres de la ligne de commande permettent notamment de préciser pour chaque instance Java une taille de Heap au démarrage et un maximum à ne pas dépasser.

Le Heap est segmenté en plusieurs zones, dites "Générations". Ceci permet de gérer les objets éphémères (iterateurs, variables locales) et de pérenniser des objets persistants :
 
- Zone dite "New" ou "Young Generation" ou "nursery", sous divisée en :
  • Eden (le paradis, là ou sont placés les objets nouvellement créés)
  • Survivor 1 & 2 (les objets survivant aux premiers passages du Garbage Collector - cf plus bas)
  • Virtually reserved (espace libre)
- Zone dite "Old Generation" ou "Tenured", sous divisée en :
  • Tenured (les objets "titularisés")
  • Virtually reserved (espace libre)
Pour être complet, s'ajoute au Heap une zone mémoire dite "Permanent Génération" pour les données de la machine virtuelle elle-même (classes et méthodes). 

http://www.jmdoudoux.fr/java/dej/chap-gestion_memoire.htm
 


Le Garbage Collector

Ou "ramasse miette". C'est le mécanisme de récupération de mémoire. Les "Garbage Collections" (déclenchements du Garbage Collector) partielles ("partial" ou "minor") ne traitent que la zone "New Generation". Les "GC" complètes ("full") traitent toutes les zones dès que la "Old" ou la "Permanent" sont remplies.

Par défaut, la machine virtuelle Java augmente ou diminue le "Heap" à chaque "GC" pour essayer de garder dans chaque zone la proportion prévue d'espace libre.



Le passage trop fréquent des "GC" (sous-dimensionnement mémoire ou mauvaise répartition) peu coûter cher en terme de performances.

7 novembre 2013

Masquer l'url "Comment faire" du Self-service

Depuis HRv7 le Self Service présente en standard des liens d'aide "Comment faire".
Ici sur une Suite 9 avec un client de version 7.30.30, 



En l'absence de fichiers d'aide en ligne, le lien serait à masquer ...

Une méthode "basique" 

elle consiste à :
  • Supprimer le libellé "Comment faire ?" dans le fichier des libellés de hra-space.
  • Remplacer l’icône par une icône vide dans la charte graphique 

4 novembre 2013

Modifier l'aide en ligne de HRaSpace

Les éléments suivants ont été vus sur une version cliente 7.30.30.

Cas général


L'url du lien d'accès à l'aide en ligne est évaluée par HRaSpace
  • l'aide en ligne est stockée dans  l'arborescence .../webapps/hra-space/help
  • elle fait référence à l'action fonctionnelle du GP 
par exemple : http://1.2.3.4:5678/hra-space/help/HRASTD/F/FR/SSEMP/CNT_FA_PADADDG0.htm.

La règle d'évaluation est placée dans help.properties. On verra par exemple pour le self service la règle suivante :

gp=HRASTD/${userLanguage}/${navigationLocalization}/${roleCategory}/CNT_FA_${functionalActionName}.htm

On trouve aussi dans hra-space/help un fichier "Customizing HRa Space Help.pdf" qui explique que l'aide en ligne se modifie "à la main". Information reprise dans le compagnon au chapitre "Comment personnaliser l'aide en ligne HRa Space ?"... :
          You can modify the contents by simply modifying the html files, preferably with a dedicated editor.
          Vous pouvez modifier le contenu de l'aide en intervenant directement sur les fichiers html, de préférence avec un éditeur dédié.

C'est donc avec l'éditeur du système - ou avec un éditeur HTML du commerce que doivent être modifiées ou créées les pages d'aide. Placez les dans l'arborescence .../webapps/hra-space/help en respectant la règle d'évaluation des chemins.

Cas de "qu'est un identifiant ?"

 

Editez le fichier .../webapps/hra-space/help/HRADRJ/F/COSPALogging.htm et adaptez le texte par défaut (dans certaines versions le /HRADJR est à replacer par /HRASTD) :

<P id=contenttext>Your Login is the user name defined according to your company policy. It can be built with your name, or your corporate identification.</P>

et celui conditionné par la langue :

sBody="Votre identifiant correspond au nom d'utilisateur qui vous est attribué, selon les règles en vigueur dans votre société."

Rappel pour HR Rich Client

L'aide en ligne du client riche est construite à partir des objets "Documentation" de HRStudio.


 

18 octobre 2013

Récupérer un fichier supprimé sous Unix

Le sous répertoire "fd"(pour "file descriptor") dans le répertoire au /proc/<PID> permet de faire le bilan des "fichiers" (au sens large) accédés par un processus Unix actif. Ci dessous pour le processus OpenHR dont le PID est 16964 :

ps -fp 16964 
UID        PID  PPID  C STIME TTY          TIME CMD
hradev   
16964  1  1 10:41 pts/4    00:00:16 /usr/java1.6/bin/java -Xms64M -Xmx128M -classpath /hradev/openhr/bin/bootstrap.jar 

ls /proc/16964/fd
0  10  12  14  16  18  2   21  23  25  27  29  30  32  34  36  38  4   41  43  45  47  49  50  52  54  57  
1  11  13  15  17  19  20  22  24  26  28  3   31  33  35  37  39  40  42  44  46  48  5   51  53  55  59

Un "ls -l" affichera (sous Linux) le lien entre le numéro du "descripteur de fichier" et sa cible :

ls -l /proc/16964/fd
lr-x------ 1 hradev hradev 64 18 oct.  10:58 0 -> /dev/null
l-wx------ 1 hradev hradev 64 18 oct.  10:58 1 -> /dev/null
lr-x------ 1 hradev hradev 64 18 oct.  10:58 10 -> /hradev/openhr/lib/commons-codec-1.6.jar
lr-x------ 1 hradev hradev 64 18 oct.  10:58 11 -> /hradev/openhr/lib/commons-net-3.0.1.jar
lr-x------ 1 hradev hradev 64 18 oct.  10:58 12 -> /hradev/openhr/lib/hr-kernel-7.30.03007.1234.jar
lr-x------ 1 hradev hradev 64 18 oct.  10:58 13 -> /hradev/openhr/lib/commons-httpclient-3.1.jar

...
l-wx------ 1 hradev hradev 64 18 oct.  10:58 52 -> /hradev/openhr/logs/ophrs.log (deleted)

On notera que le descripteur de fichier 52 pointe  sur un fichier qui a été supprimé : le log de OpenHR.

Toutefois, le processus OpenHR étant encore actif et n'ayant pas libéré le fichier, ce dernier est encore "présent"... Même s'il n'est plus affiché à l'utilisateur qui liste le contenu du répertoire :

ls -l /hradev/openhr/logs/ophrs.log
ls: impossible d'accéder à /hradev/openhr/logs/ophrs.log: Aucun fichier ou dossier de ce type

Il peut donc être consulté, voir recopié (dans un cas comme celui du ophrs.log, n'essayez pas de restaurer le fichier : vous créeriez un "nouveau" fichier log dont le descripteur de fichier sera différent de celui d'origine).

tail /proc/16964/fd/52
2013-10-18 10:41:42,619 INFO  [        ][               ][main] - OPHRS1999 OpenHR server is ready for business (Release <7.000>)
2013-10-18 10:42:41,294 INFO  [000000B7][188.8.244.10   ][MessageProcessor-2] - OPHRS1077 Queued a new message for service <Default>
2013-10-18 10:44:05,419 INFO  [00000305][188.8.244.10   ][MessageProcessor-2] - OPHRS1200 Using strategy <com.hraccess.dispatcher.service.login.uid.SimpleVirtualSessionIdGenerator> to create virtual session IDs


Plus de détails sur : http://www.hackinglinuxexposed.com/articles/20020507.html

11 octobre 2013

BQL-BBAD0012-DEPASSEMENT DE CAPACITE (TABLE WORKING) : WP02-CDSQLD

En cas de message de ce type lors d'une exécution de BQL (par exemple dans K2Y, K22, NJ3, mais surtout NJU, NJN,NJY), ici lors d'une NJU :
*GE01BQL-BBAD0012-DEPASSEMENT DE CAPACITE (TABLE WORKING) : WP02-CDSQLD/000000000000400/000000000000401

C'est sans doute que le programme BQL a utilisé un point de reprise "inopportun".

La table PG50 sert à BQL pour mémoriser son point d'avancement. Ce qui lui permet de reprendre le traitement là ou il été interrompu. La clef de la table est
  • Le code de la chaîne, mais parfois "BQ1'"et "BQ2"
  • Un identifiant sur 8 caractères (IDEJOB en général vide)
  • Un identifiant sur 4 caractères (IDENT4 en général "BQL ")
  • Le code du processus (en général forcé à "*GE01")
  • Le numéro de travail.

Si BQL trouve un enregistrement PA7I il utilisera la PG50 pour savoir ou reprendre le chargement interrompu. Et si la PG50 contient de vieilles données, son comportement peut être imprévisible ...

Pour ne pas avoir de problème lors des exécutions de BQL,
  • Vérifier que le fichier paramètre est vide (sauf en cas de reprise),
  • Sinon supprimez le contenu de la table PG50 pour le numéro de job concerné.

Dans le cas de la NJU la carte est alimentée en standard dans le shell. La seule option est donc la purge ...

EXECBQL :echo "PA7IBQL         00"
FDARCNJY:echo "PA7IBQ1"\
FDARCNJY:echo "PA7IBQ2"\
FDNATNJN:echo "PA7IBQ1         £PQ"\
FDNATNJN:echo "PA7IBQ2         £PQ"\
FDPAYK2Y:echo "PA7IK2Y         £PQ"\
FDXPGK22:echo "PA7IK22         £PQ"\
FDXPGNJ3:echo "PA7INJ3        S£PQ"\
FDXWDNJU:echo "PA7IBQ1         £PQ"\
FDXWDNJU:echo "PA7IBQ2         £PQ"\



10 octobre 2013

Parametre hr_design.time_measure_enabled du fichier dispatcher.properties

Avec HRv7 le paramètre hr_design.time_measure_enabled = true du fichier de paramétrage de OpenHR dispatcher.properties permet d'obtenir dans les fichiers des traces Cobol des messages de début et de fin de transaction.


Receiving (16)  <flag=0>   16 Received -> 16
|BEGIN_TRAN|9109686|2013-10-10 15:19:11,582097000|
Send (5)  <flag=0>.
Receiving (189)  <flag=0>   189 Received -> 189
|RECV|9109686|189|2013-10-10 15:19:11,582221000|-5---------6---------7---------8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
XXXXXXXXXXXXXXXX
OPHR             XD#-
                           41
12345678901234567890123456789012345678901234567890123456789012345678901234567890
LONGUEUR: 189

E:2013-10-10 15:19:11,583844:XXXXXXXX:41
Send (4)  <flag=0>.
|SEND|9109686|4|2013-10-10 15:19:11,587239000|---5---------6---------7---------8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
9100
12345678901234567890123456789012345678901234567890123456789012345678901234567890
LONGUEUR: 4

|END_TRAN|9109686|0.00|2013-10-10 15:19:11,587352000|2013-10-10 15:19:11|
R:2013-10-10 15:19:11,587495:XXXXXXXX:41


Ceci est de peu d'intérêt : les informations sont les mêmes que les RECV et SEND en moins complet (la taille des paquets et les décimales de l'horodatage de fin des END_TRAN y sont absents).

8 octobre 2013

Redirection vers une page d'erreur si Tomcat est fermé

Si vous avez installé un serveur Web de présentation (par exemple Apache) en frontal de votre serveur Web d'application (par exemple Tomcat), vous pouvez indiquer au premier une redirection vers une page d'erreur quand le second est inaccessible.

Ci dessous un exemple de paramétrage Apache (fichier httpd.conf) :

DocumentRoot "/hradev/apache/htdocs"
#
# --------------- Page d'erreur specifique
ErrorDocument  503  /hraccess-indisponible.html

et de page HTML d'indisponibilité :

/hradev/apache/htdocs/hraccess-indisponible.html

<HTML>
<HEAD></HEAD>
<FONT SIZE=5><B>HR ACCESS</B></FONT>
<BR>
<BODY TOPMARGIN=100 LEFTMARGIN=100>
L'accès au portail HRaSpace est temporairement indisponible.<BR>
Merci de votre compréhension.
<BR>
</BODY>
</HTML>

19 septembre 2013

Fichier de rejet NRB standard en mode colonné

Il est possible depuis HRv7.1 de demander aux chaînes de mise à jour batch NRB la création de fichiers des rejets en remplacement des listings "kilométriques" $LIS/NRB362I* :


Dans l'écran "Import/export de données" des outils d'administration, cochez :


Ce témoin ERRMNG va être repris dans la carte paramètre PA24.

Sur présence de ce témoin,
  1. Le programme BMI produit un fichier colonné $FILE/PSBBEB0.C** contenant les erreurs suite aux contrôles intrinsèques,
  2. Le programme BMF produit un fichier $FILE/PSBBBME1.C** contenant les erreurs issues :
  • Des rejets suite aux contrôles fonctionnels des programmes BMA et BMK,
  • Des rejets suite à une erreur d'accès aux tables relationnelles par BML.

Il crée aussi un fichier $FILE/PSBBBMF0.C** concaténant les deux premiers.

Attention si vous souhaitez utiliser ces fichiers en exploitation. Pour avoir un bilan complet il faut aussi :
  • Disposer du code retour de la chaîne (certaines erreurs pouvant perturber l'alimentation desdits fichiers),
  • Contrôler l'absence de "dossiers à recycler" (listing $LIS/NRB212IZ, ou table M91 code RECY).

27 août 2013

Transférez les BLOBs avec les chaînes NOY NOZ puis RBL

Depuis HRv7 les BLOBs HR Access ("Binary Large Objects" - photos, CV rattachés aux dossiers) peuvent être transférés entre les environnements avec les chaînes utilitaires NOY NOZ.

1. Lors de l'export par NOY un nouveau fichier est créé : PSBBCGBL.C** (avec en suffixe le numéro de travail).

exemple :
PSBBCG00.C70
PSBBCG01.C70
PSBBCGBL.C70


2. Transférez les trois fichiers sur la plate forme cible.

3. Exécutez la NOZ. Un fichier PSBBCLBO.C** est créé. Ce fichier est une version du PSBBCGBL expurgée des dossiers / informations / occurrences inexistantes et où les NUDOSS ont été éventuellement renumérotés.

Le programme BCL émet un message d'information :
BBAC0089-La chaine RBL doit être exécutée pour prende en compte les mouvements sur blobs après la mise à jour des dossiers

3. Chargez les données par BQL ou par l'outil de load du SGBD,

4. Chargez les Blobs
Exécutez la chaîne RBL du même processus (script subbl) pour le fichier PSBBCLBO. Le programme BMB va alors charger les BLOBs dans les tables BX**.

Si le dossier, l'information ou l'occurrence sont absent vous aurez une alarme du type :

BBAC0084 Importation bloquée pour l'information ... : aucune rubrique de rôle blob définie.
BBAC0086 Importation bloquée pour le dossier ... inexistant dans la table **00.
BBAC0087 Importation bloquée pour l'occurrence non trouvée identifiée par : ...



21 août 2013

Afficher les détails techniques des erreurs de HRaSpace depuis HRv7.30.30

Depuis la version cliente 7.30.30, pour des raisons de sécurité (limiter les fuite d'informations techniques), les détails des erreurs de mise à jour ne sont plus affichés par défaut. Il est possible de modifier ce comportement (par exemple sur les environnements de développement et de recette) :
  • en ajoutant la ligne "display_full_error_messages = true" dans le(s) fichier(s) hr-self-service.properties et hr-self-service.properties (dans .../hr-***/WEB-INF/conf) 
ou
  • en positionnant à "Oui" le paramètre "display_full_error_messages" de les sections hr-rich-client et hr-self-service dans l'objet "topologie système" HRS (positionné par défaut à "Non")