30 novembre 2011

"Check" sous HRaSpace : Comment faire le point sur les droits d'un compte utilisateur

Une fois connecté avec un compte HR Access sous HRaSpace, il est possible d'avoir une vue sur les droits de ce compte grâce à la servlet "Check".

L'URL d'accès à cette fonction est (adapter l'adresse et le port IP) :

http://1.2.3.4:5678/hra-space/check


29 novembre 2011

Accéder à la console d'administration du Self Service de HRaSpace

Le Self Service de HRaSpace possède sa propre "console" d'administration. Cette dernière permet de lancer à chaud des actions de rafraîchissement des Processus Guidés ou du cache des données (listes de codes réglementaires) :
  • Refresh GP
  • Refresh all GPs
  • Refresh session
  • Clear cache


L'URL d'accès à cette console est (adaptez l'adresse et le port IP) :
http://1.2.3.4:5678/hr-self-service/selfadmin

Pour rendre cette console disponible, vous devrez auparavant arrêter HRaSpace, puis redémarrer après avoir décommentariser les deux balises suivantes dans le fichier /hra***/hraspace/webapps/hr-self-service/WEB-INF/web.xml :

<servlet>
<servlet-name>selfadmin</servlet-name>
<servlet-class>com.hraccess.selfservice.servlets.HRSelfAdminServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

et

<servlet-mapping>
<servlet-name>selfadmin</servlet-name>
<url-pattern>/selfadmin</url-pattern>
</servlet-mapping>

En production, complétez le fichier web.xml pour sécuriser l'accès à cette console (<security-constraint>).

21 novembre 2011

ERREUR D'ACCES (TABLE RELATIONNELLE) : PP10/SELECT/9X/DF/000000000000805

Ce genre de message (erreur SQL 805) se produit sous DB2 quand le "Bind" de certains Cobols n'a pas été joué.
SQL0805N Package "<package-name>" was not found

  • Si l'environnement était propre jusqu'alors, on pourra se contenter de refaire le bind du programme concerné.
  • Si le contexte est défavorable (environnement instable), il vaut mieux rejouer la totalité des binds de la totalité des programmes. Cela rendra la situation plus claire.

Re-Exécution des Bind pour les programmes référencés en table PG15


db2 -x "select pkgname from syscat.packages, ${HRSCHEMA}.pg15 where pkgschema='${HRSCHEMA}' and pkgname=rtrim(rdprog)||cdprog" | while read BND
do
   [ ! -f $SIGACS/prod/bnd/${BND}.bnd ] && echo "<W> Fichier ${BND}.bnd inexistant" && continue
   if ! db2 "bind $SIGACS/prod/bnd/${BND}.bnd collection ${HRSCHEMA} datetime iso isolation UR qualifier ${HRSCHEMA}" ; then
      echo "<W> Bind Ko pour ${BND}.bnd"
   else
      echo "<I> Bind Ok pour ${BND}.bnd"
   fi
done > ${LOG}/ReBind.log 2>&1

Exécution du Bind pour les programmes présents dans $SIGACS/prod/bnd mais absents en base de données


ls $SIGACS/prod/bnd | grep '\.bnd$' | while read F
do
   BND=$(basename $F .bnd)
   EXIST=$(db2 -x "select count(*) from syscat.packages where pkgschema='${HRSCHEMA}' and pkgname='${BND}'")
   if [ ${EXIST} -eq 0 ]; then
     if ! db2 "bind $SIGACS/prod/bnd/${BND}.bnd collection ${HRSCHEMA} datetime iso isolation UR qualifier ${HRSCHEMA}" ; then
      echo "<W> Bind Ko pour ${BND}.bnd"
     else
      echo "<I> Bind Ok pour ${BND}.bnd"
     fi
   fi
done > ${LOG}/NewBind.log 2>&1

FYI : la liste des packages générés par DB2 lors d'un bind est accessible à travers la vue "syscat.packages".

17 novembre 2011

Topologie HRS : Connecteur FTP et Diagramme de Query avec un serveur Web distant

Pour éviter des accès FTP inutiles, j'ai décrit sous HRD Studio (HR v7.17.5) une topologie HRS
  • où tous les modules sont locaux,
  • puis dans le diagramme de query j'ai surchargé les paramètres de la connexion HRWeb au volume d'archivage pour spécifier un accès FTP 
(mon serveur Web étant distant).

Ca ne marche pas !

En fait HRaSpace v7.17.5 prend le "diagramme compilé" - une version simplifiée du diagramme de query - qui ne contient que les propriétés par défaut ... Donc ...  sans les "surcharges" !

echo "set lines 4000
select ZONXML from EN30 where TYENTI='SI' and CDENTI='HRS' and CDROLE='CPSITE' order by NOLIGN;" | sqlplus -s hr/password | sed 's/^.*base64//' | perl -MMIME::Base64 -ne 'print decode_base64($_)'


<?xml version="1.0"?>
<SITE_COMPILE XmlVersion="7.1.7">
<QUERYCHAIN Name="DIAGQRY">
<QUERY_URL>1.2.3.4</QUERY_URL>
<QUERY_PORT>21</QUERY_PORT>
<QUERY_USER>hradev</QUERY_USER>
<QUERY_PASSWORD>pFre7%34</QUERY_PASSWORD>
<QUERY_DIRECTORY>/hradev/hraccess/query/work</QUERY_DIRECTORY>
<QUERY_LOCALISATION>L</QUERY_LOCALISATION>
<QUERY_LISTENER>5678</QUERY_LISTENER>
<QUERY_COMMUNICATION>D</QUERY_COMMUNICATION>
<EDITION_URL>1.2.3.4</EDITION_URL>
<EDITION_PORT>21</EDITION_PORT>
<EDITION_USER>hradev</EDITION_USER>
<EDITION_PASSWORD>pFre7%34</EDITION_PASSWORD>
<EDITION_DIRECTORY>/hradev/hraccess/query/work</EDITION_DIRECTORY>
<EDITION_LOCALISATION>L</EDITION_LOCALISATION>
<IMPORT_URL>1.2.3.4</IMPORT_URL>
<IMPORT_PORT>novalue</IMPORT_PORT>
<IMPORT_USER>novalue</IMPORT_USER>
<IMPORT_PASSWORD>novalue</IMPORT_PASSWORD>
<IMPORT_DIRECTORY>/hradev/hraccess/txt/arc/import</IMPORT_DIRECTORY>
<IMPORT_ARCHI>/hradev/hraccess/txt/arc</IMPORT_ARCHI>
<IMPORT_LOCALISATION>L</IMPORT_LOCALISATION>
<IMPORT_COMMUNICATION>novalue</IMPORT_COMMUNICATION>
</QUERYCHAIN>
</SITE_COMPILE>

(NB: LOCALISATION = L pour Local)

Donc dans ma configuration (tous les modules locaux, le serveur Web distant), pour faire fonctionner les liens FTP entre HRaSpace et le volume d'archivage, il vaut mieux :
  • Mettre une connexion distante au niveau du connecteur FTP du module du volume d'archivage.
  • Puis - pour éviter des accès FTP inutiles - surcharger la connexion du Query au volume d'archivage pour l'indiquer locale.


Pourquoi chercher à éviter des accès FTP inutiles ?
  • Car certaines versions de HR laissent des fichiers temporaires contenant le user/password,
  • Car si le mot de passe évolue et que l'objet Topologie n'est pas corrigé très vite, cela provoque des échecs de connexions, et avec certaines politique sécurité le blocage du compte.

7 novembre 2011

Message d'erreur SORT(EXTSM) failed - sort engine status = 9/065

Le problème

Sur un de mes environnements HRv5, certaines chaines parallélisées sortent en erreur lors de tris Cobol avec un statut 9/065.

Le status 9/065 signifie "File locked". Si des traitements batch ont lieu en parallèle; c'est probablement que deux opération de tri ont eu lieu en même temps sur l'environnement, avec des noms de fichiers de travail identiques.

Une solution

Pour sécuriser les MFSort, le support microfocus dit nécessaire de positionner une variable $TMPDIR sur un répertoire différent pour chaque tri... une gageure. Ma proposition est d'utiliser un répertoire $TMP/$$ créé à chaque appel de "mfsort" ($$=Pid Unix du shell en cours),

Pour ceci, l'option la plus simple et la moins impactante pour l'application est :
  •  de surcharger la commande MicroFocus "mfsort"
  •  par une "fonction exportée" spécifique nommée "mfsort"
  •  déclarée et exportée via le script $ENV de chaque environnement.

Extrait du script $ENV

# Fonction mfsort
# Description :
#       Créer un repertoire temporaires dedie avant chaque appel a mfsort.
# Syntaxe : mfsort take ...
function mfsort
{
echo "mfsort Spécifique 20110620 : redefinition TMPDIR=${TMP}/$$"
export TMPDIR=${TMP}/$$
mkdir -p ${TMPDIR}
trap 'rm -rf ${TMPDIR}' 0
# Adapter le chemin en fonction du site
/logi/cobol/bin/mfsort "$@"
}
typset -fx mfsort 

A noter

Avec HRv7 les chaînes HR intègrent en début de script :
TMPDIR=$TMP/T"$nupro"
export TMPDIR 

Brainstorming

A- Ma proposition est d'utiliser un répertoire $TMP/$$ créé à chaque appel de "mfsort" ($$=Pid Unix du shell en cours),

B- Surcharger la variable TMPDIR au moment de l'exécution du shell n'est pas suffisant car il faut gérer la création et la purge dudit répertoire $TMP/$$.

C- L'appel à la commande "msfort" est présent dans les chaines standard HR. Remplacer les "mfsort" par des appels à une commande d'un autre nom est contraignant : ceci implique de patcher la macro A39MT de PVBAMC00, de regénérer et relivrer toutes les chaînes HR.

D- Ceci implique de créer une fonction ou un script Unix "mfsort" spécifique de MEME NOM et qui soit PRIORITAIRE sur la commande "msfort" de /logi/cobol/bin. Pour ceci,

E1- Créer un shell "mfsort Spécifique" n'est pas suffisant. Pour être prioritaire l'ordre des répertoires du "PATH" Unix peut devoir être adapté. Si tel est le cas, ceci peut être source d'effets de bords. Un autre moyen est de créer et d'exporter un alias "mfsort" pointant sur ce script "mfsort Spécifique"

E2- Créer une fonction "mfsort Spécifique" et la référencer dans le "FPATH" n'aura pas d'effet car le FPATH est pris en compte APRES le PATH. le "mfsort" de MicroFocus serait donc trouvé AVANT la fonction "mfsort Spécifique". Un autre moyen est de créer et d'exporter cette fonction.

F- Déclarer l'alias ou la fonction dans le .profile est gênant car ces scripts sont spécifiques à chaque environnement et exclus de la livraison. De plus ces alias et fonctions - exportées ou non - sont "perdus" lors de l'ouverture d'un sous-shell !

G- Déclarer l'alias ou la fonction dans un script de "fonctions communes" fonctionnerait, à condition que ce dernier soit bien appelé par TOUS les scripts, ce qui est peu probable.

H- Déclarer l'alias ou la fonction dans le script $ENV de l'environnement permet d'en disposer dans chaque session. L'y exporter permet d'en disposer dans les sous shells.

...

Ouf !

4 novembre 2011

Message "Adress already in use" au démarrage du AP0

En cas de "The server failed to start !" / "Adress already in use" lors d'un csadmin start cs, impossible de démarrer le processus AP0.

Le transactionnel est déjà démarré

Vérifiez dans un premier temps qu'il n'est pas déjà actif !
ps -ef | grep AP0

Quels processus utilisent le port

Dans le cas contraire, pour savoir quels processus utilisent encore le port de communication, et connaissant son numéro (ici exemple avec le port 2222),

Avec la commande lsof :
lsof -Pni | head -1; lsof -Pni | grep :2222
 
COMMAND      PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
AP0 4456554 hradev 3u IPv4 0xf1000e00006783b0 0t0 TCP *:2222 (LISTEN)
AP0 4456554 hradev 4u IPv4 0xf1000e000a3f73b0 0t0 TCP 1.2.3.4:2222->9.9.1.7:38103 (ESTABLISHED)
BNR 30146592 hradev 0u IPv4 0xf1000e000a3f73b0 0t0 TCP 1.2.3.4:2222->9.9.1.7:38103 (ESTABLISHED)
BNR 30146592 hradev 3u IPv4 0xf1000e000a3f73b0 0t0 TCP 1.2.3.4:2222->9.9.1.7:38103 (ESTABLISHED)

Sous Linux il serait aussi possible d'utiliser la commande fuser (package psmisc) - a tester :
fuser -n tcp 2222

NB : pour connaitre ne n° de port, rechercher l'item SERVICE dans le fichier $SIGACS/adm/cfg/initserver, puis faire la correspondance avec les numéros de port du fichier /etc/services.

Corriger les paramétrages

Si le port est utilisé par un applicatif zombie (ex : BNR en boucle infinie), tuer le processus avec la commande "kill n°PID" (puis "kill -9 n°PID" si le kill normal est sans effet)

Si le port est utilisé légitimement par un applicatif (numéro paramétré dans ses fichiers de configuration) ... il faut se mettre d'accord avec l'administrateur intéressé, reparamétrer, redémarrer.

Si le port est utilisé par hasard par un applicatif (numéro attribué dynamiquement) ... il faut demander à l'administrateur système de paramétrer la plage de ports dynamiques pour ne plus entrer en conflit. En attendant, fermer l'applicatif concerné, ouvrir le AP0, redémarrer l'applicatif.

Forcer le redémarrage

Il peut arriver que ce soit le AP0 lui même qui ait mal libéré le port. En général ce dernier est libéré après un certain TIME OUT ...

Il est toutefois possible de forcer son redémarrage :
  • dans le fichier $SIGACS/adm/cfg/initserver, ajouter le paramètre RECONNECT=ON dans le chapitre [AP0] (NB : syntaxe RECONNECTE=ON pour les V2 et V3. Cet item est supprimé après le démarrage de AP0.)
  • redémarrer avec un "csadmin start cs"

18 octobre 2011

Impossible d'écrire le fichier TA0FR.zip - Reprendre manuellement le FTP de la publication HR Studio

La phase de publication est relativement longue, HR Studio ramenant de la base la description complète de l'arbre et faisant un contrôle exhaustif de la validité des composants et de leurs dépendances.

Suite à ces contrôles, HR Studio construit en local une arborescence HTML qu'il va zipper pour l'envoyer par FTP sur le serveur Web pour demander son déploiement (le SFTP n'est pas disponible à ce jour, malgré de nombreuses demandes). Quand cette étape de FTP sort en erreur ... on se dit que l'on a perdu 1 à 3h de travail !

Message d'erreur HR Studio :

Envoi des fichiers
Impossible d'écrire le fichier TA0FR.zip. Les causes possibles sont:
- L'utilisateur Ftp n'a pas les droits d'écriture de fichiers dans le répertoire /hra***/hraspace/webapps/hr-rich-client/services et ses sous-répertoires
- Il n'y a pas suffisamment d'espace disque disponible sur le serveur HRa Space

Dans un premier temps, contrôlez l'éventuelle présence d'un problème sur le serveur, ou sur votre connexion au serveur.
  • user/mdp ou chemin altéré dans l'objet topologie HRS,
  • dans l'objet topologie HRS, la connexion FTP au serveur Web est-elle bien en mode "passif" ?
  • connexion ftp impossible suite a changement de politique des firewall,
  • obsolescence du mot de passe dépassée ou compte Unix verrouillé,
  • espace disque disponible dans l'arborescence insuffisant,
  • droits Unix sur le répertoire, sur le fichier trop restrictifs ...

Une fois ces points écartés ou corrigés, dans la plupart des cas, HR Studio vous permettra de "reprendre la publication" (cf. le choix de menu correspondant - par clic droit sur l'arbre concerné).

Sinon, pour éviter de tout refaire, il est possible de déposer manuellement le zip (qui est conservé sur le poste PC) et déclencher son déploiement avec IE :

Retrouvez le fichier zip dans
C:\Program Files\HR Access Solutions\Design Center\{MonEnvironnement}\EXP\700\{MonCdplph}\{MonUser}\CURRENT_700\OBJECT\TRP\

Transférez le fichier zip avec un client FTP (FileZilla ou autre) sous webapps/hr-rich-client/services/{MonUser} (utilisez de préférence le compte hra***, cela vous évitera les problématiques de droits Unix).

Assurez vous que l’application Web est ouverte, sinon ouvrez OpenHR, HRQuery, HRWeb.

Pour déployer le ZIP de l’arbre, sous IE tapez l'URL
  • en HRv5
http://.../hraccess/HRAdmin?ACTION=PUBLISH&USER={MonUser}
  • en HRv7
http://.../hr-rich-client/HRAdmin?ACTION=PUBLISH&USER={MonUser}
  • à compter de la version HR 7.20 il faut rajouter TREE et USERLANG
http://.../hr-rich-client/HRAdmin?ACTION=PUBLISH&USER={MonUser}&TREE=TA0FR&USERLANG=F

Si le déploiement est correct, l’écran affichera :

<HRRESULT Error="0">
<!\[CDATA\[ controls Ok  \]\]>
</HRRESULT>

Puis pour rafraichir le dictionnaire des arbres, sous IE tapez l'URL :
http://.../hr-rich-client/HRAdmin?ACTION=RELOAD_TREES&USERLANG=F&VERIFYDICO=TRUE

7 octobre 2011

MF-LMF: License Key database unusable due to copying, restoration or tampering

Suite à installation d'un patch AIX, le gestionnaire Microfocus Cobol a perdu les clefs de licence (compilation et runtime). Ci dessous la procédure utilisée pour les rétablir ...

Configuration du site : HRv7 Unix Oracle avec Cobol Server Express 5.1 sur AIX 6.1

Début des opérations :
  • Arrêt complet des applicatifs (dont listener oracle)
  • Arrêt et mise à jour système AIX + reboot
  • Redémarrage du listener Oracle (cas où le listener n'est pas démarré au boot)
  • Ouverture des bases de chaque environnement

Pour la licence d'usage

Avec root, reinitialisation de la base de licence
(chemin à adapter en fonction du site - il s'agit du chemin vers MF Cobol)

export COBDIR=/opt/microfocus/cobol
cd $COBDIR/aslmf
./aslmdbrecover


Avec root, installation de la licence

cd $COBDIR/aslmf
./apptrack
You must set an access password, before proceeding. Enter 6 characters as the password (6 spaces removes password)
-> ******

Server License Administration System - AppTrack
-----------------------------------------------------------
1. License List
2. License Summary
3. License Install
4. License Uninstall
5. Change/Set Password
6. Reinitialize Licensing
7. Current Users
9. Quit
Enter the Menu Selection


=> choix 3 (License Install)

Serial=***********AI+
License=************************

License installed ok


=> choix 9 (Quit)

Avec un des comptes hra***, test d'un batch :
subbn 
select NUDOSS from ZE00

Contrôle du log.


Si tout est correct, avec chacun des comptes hra***, redémarrage des applications  (la base étant active, démarrer AP0 avec csadmin, OpenHR, puis HRQuery et HRaSpace)

Opération a prévoir pour la licence de compilation

Reinitialisation de la base de licence, installation de la licence
(chemin à adapter en fonction du site - il s'agit du chemin vers le gestionnaire de licences MF Cobol)

export COBDIR=/opt/microfocus/mflmf
cd $COBDIR

./lmfdbrecover

This script will remove the existing LMF license database
and prompt you to install your LMF licenses to a new database.

Do you wish to continue? (y/n)
y
Empty database created ok

License db recovery utility (lmfdbrecover) starting.

1. Text Mode license install
2. Screen Mode license install
3. Exit with no license install

=> choix 1

Micro Focus License Manager Command Line Interface
--------------------------------------------------
Select the function you require from the list:
License Install - Enter 'I'
License Uninstall - Enter 'U'

=> choix I

installer la licence de compilation
Serial=************AI+
License=************************

License added ok

Install another license? (y/n)
n


Avec root, redémarrage du démon

cd /etc
./mflmrcscript
Starting MFLM License Manager
MF-LMF:Wed Oct 12 23:15:30 2011: LMF Starting


Avec un des comptes hra***, test d'une compilation
subbz 
processus et radical : AS800
module : BOT

Contrôle du log

29 septembre 2011

ORA-28002: the password will expire within 6 days / ORA-28011: the account will expire soon / ORA-28000: the account is locked

Profil des comptes Oracle


A compter de Oracle v10, les comptes utilisent un profil par défaut avec les propriétés suivantes :

select * from dba_profiles where resource_type='PASSWORD' order by profile;
 
PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD 10
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD 180
DEFAULT                        PASSWORD_REUSE_TIME              PASSWORD UNLIMITED
DEFAULT                        PASSWORD_GRACE_TIME              PASSWORD 7
DEFAULT                        PASSWORD_VERIFY_FUNCTION         PASSWORD NULL
DEFAULT                        PASSWORD_LOCK_TIME               PASSWORD 1
DEFAULT                        PASSWORD_REUSE_MAX               PASSWORD UNLIMITED

Un mot de passe est donc valide 6 mois, et le compte est verrouillé après 10 tentatives de connexion infructueuses (ce qui va très vite si on démarre HR Access avec un objet Topologie HRS mal renseigné).

On aura alors blocage du compte :

select username, profile, account_status from dba_users where username='HR';
 
USERNAME         PROFILE              ACCOUNT_STATUS
- - - - - - - - - - - - - - - - - - - - - - - - -
HR               DEFAULT              LOCKED

Attribuer à HR un profil spécifique


Ci dessous on crée un profil différent du profil par défaut, sans limitations.

CREATE PROFILE HR
LIMIT
SESSIONS_PER_USER          UNLIMITED
CPU_PER_SESSION            UNLIMITED
CPU_PER_CALL               UNLIMITED
CONNECT_TIME               UNLIMITED
IDLE_TIME                  UNLIMITED
LOGICAL_READS_PER_SESSION  UNLIMITED
LOGICAL_READS_PER_CALL     UNLIMITED
PRIVATE_SGA                UNLIMITED
COMPOSITE_LIMIT            UNLIMITED
FAILED_LOGIN_ATTEMPTS      UNLIMITED
PASSWORD_LIFE_TIME         UNLIMITED
PASSWORD_REUSE_TIME        UNLIMITED
PASSWORD_REUSE_MAX         UNLIMITED
PASSWORD_LOCK_TIME         UNLIMITED
PASSWORD_GRACE_TIME        UNLIMITED
PASSWORD_VERIFY_FUNCTION   NULL;

Puis on l'attribue au compte HR :
ALTER USER HR PROFILE HR;

Débloquer le compte


Pour supprimer le verrouillage, se connecter avec le compte administrateur et exécuter l'ordre suivant :
ALTER USER HR ACCOUNT UNLOCK;

NB : si vous êtes sous Unix et que votre compte est dans le groupe "dba", cela se fait par la commande "sqlplus / as sysdba". Sinon il vous faut connaitre le mot de passe du compte "system". Attention : si vous n'avez pas un minimum de compétence Oracle, passez la main à un administrateur plutôt que de casser quelque chose ...

Pour supprimer le warning ORA-28011, le seul moyen que j'ai trouvé est de repositionner l'ancien mot de passe :
ALTER USER HR IDENTIFIED BY ...;

22 septembre 2011

Convertir la description encodée de certains objets HR Access

Depuis HRv3e, un certain nombre d'objets ont une description en base "illisible" car encodée au format MIME base64.

Ci dessous par exemple la description d'une page Web :

select ZONXML from WF25 where GPECRA||CDECRA='FPW0F703' order by NOLIG4;
 
00040018Coder-Version: 1.00037Content-Type: text/xml; charset=UTF-80033Content-Transfer-Encoding: base640034Content-Description:HRWFormEntity00005B44PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8SFJXSU5ET1cgV2lkdGg9IjEwMjQiIEhlaWdodD0iMTEwMCIgU3R5bGU9IiIgVmVyc2lvbj0iNS4wLjAiIHV1aWQ9IjlBNzMyM0Y4LTQ3MEYtNDJBMy05NzUxLTU0Q0JFRjQxNTkzRCIgQm9yZGVyPSJOb25lIiBGb290ZXJBY3Rpb25zPSJDQU5DRUwiPg0KCTxIUlBBTkVMIE1vZGU9InRhYiIgdXVpZD0iNDlFMzQ3MkItRDk2OC00NDg5LThBRTctMkNFOEQ2NTdFM0UyIiBMZWZ0PSIwIiB
...

Ci dessous un exemple de décodage de la description d'une page Web HRv5.
Il a fallu ordonner et joindre les multiples lignes de description :

echo "set lines 3900
select ZONXML||'\' from WF25 where GPECRA||CDECRA='FPW0F703'
order by NOLIG4;" |
i_sql |
sed '$s/\\$//' | sed -e :a -e '/\\$/N; s/\\\n//; ta' | sed -e 's/^.*Content-Description: HRWFormEntity........//' -e 's/^.*Encoding: base64........//' |
perl -MMIME::Base64 -ne 'print decode_base64($_)' | 
sed -e 's/é/é/g' -e 's/ê/ê/g' -e 's/à /à/g'  -e 's/è/è/g' -e 's/#@/@/g' -e 's/ô/ô/g' -e 's/î/î/g' -e 's/â/â/g' -e 's/û/û/g' -e 's/ç/ç/g' -e 's/ù/ù/g' |  tr '@' '\n'

Dans cet exemple de commande on a :
  •  i_sql qui est un utilitaire exécutant un SQLPLUS,
  •  un premier sed qui fusionne les lignes et supprime l'entête HR Access "Content-Description...base64" qui précède la description de l'objet,
  •  un perl qui décode la description,
  •  un second sed qui rétabli les caractères accentués.

ce qui donne :

<?xml version="1.0"?>
<HRWINDOW Width="1024" Height="1100" Style="" Version="5.0.0" uuid="9A7323F8-470F-42A3-9751-54CBEF41593D" Border="None" FooterActions="CANCEL">
<HRPANEL Mode="tab" uuid="49E3472B-D968-4489-8AE7-2CE8D657E3E2" Left="0" Top="0" Width="1024" Height="477" LabelContext="page" Style="PAN05" EnableContext="default">
<HRDS uuid="C2451795-82F1-4C7F-BEDB-712F11229D24" Left="0" Top="0" Width="774" Height="234" Typerep="Z" Maxrowrep="1" Maxcolrep="1" Titlerep="1" Type="normal" HideEmptyrep="0">
<HRPARAMS Left="18" Top="63" Width="738" Height="72" uuid="D21F177F-0433-4011-972E-A52577058799">
<HRPANEL Left="18" Top="63" Width="738" Height="72" Mode="simple" LabelContext="page" Style="PAN02" uuid="83BDF6FD-591F-47E5-A0D1-9ECEEFF251FB" EnableContext="default">
...

21 septembre 2011

Suppression impossible. L'utilisateur est connecté à HRa Space (code erreur 2004)

Avec HRa Suite 7, si vous cherchez a supprimer un compte avec HR Studio, alors que ce compte possède des données de session dans les tables de travail HR Access, votre demande sera rejetée.

Ce rejet est justifié si l'utilisateur est effectivement connecté.

En revanche, il n'est pas rare que les tables MX** se chargent de données obsolètes. Dans ce cas nettoyez les par un DELETE :

  DELETE FROM MX10 WHERE USERID='...';
  COMMIT:

Votre suppression de compte sera alors acceptée.

20 septembre 2011

Accès HRWeb aux travaux ZO associés aux demandes, Correction de ZO2O.NUDORI

Le dossier de travail sous HRv7, conserve dans la rubrique ZO2O.NUDORI le NUDOSS de la demande ZO associée. En cas de suppression et de recréation de la demande, le lien est perdu et l'interface Web ne peut plus afficher les anciens travaux associés à la demande (ce lien est codé dans la page AABV800D)

Pour lister les travaux déphasés :

Ordre SQL DB2:
select ZO00D.NUDOSS, ZO2O.NUDORI, ZO00T.NUDOSS, ZO00T.CDPHAS, ZO00T.CDELMT, ZO00T.TYTMPL, ZO00T.IDREQU, ZO00T.FLGJOB, ZO00T.TISOUM
from ZO00 ZO00T, ZO2O,ZO00 ZO00D
where ZO00T.NUDOSS=ZO2O.NUDOSS
and ZO00T.CDPHAS=ZO00D.CDPHAS and ZO00T.CDELMT=ZO00D.CDELMT and ZO00T.TYTMPL=ZO00D.TYTMPL and ZO00T.IDREQU=ZO00D.IDREQU
and ZO00D.FLGJOB='0' and ZO00D.TISOUM='0001-01-01-00.00.00.000000'
and ZO00D.NUDOSS<>ZO2O.NUDORI

Ordre SQL Oracle : remplacer "0001-01-01-00.00.00.000000" par "0001-01-01"

Pour corriger les déphasages :

Ordre SQL DB2:
update ZO2O
set ZO2O.NUDORI = (
select coalesce(
(select ZO00D.NUDOSS from ZO00 ZO00D, ZO00 ZO00T
where  ZO00T.NUDOSS=ZO2O.NUDOSS
and ZO00T.CDPHAS=ZO00D.CDPHAS and ZO00T.CDELMT=ZO00D.CDELMT and ZO00T.TYTMPL=ZO00D.TYTMPL and ZO00T.IDREQU=ZO00D.IDREQU
and ZO00D.FLGJOB='0' and ZO00D.TISOUM='0001-01-01-00.00.00.000000')
,0)
from SYSIBM.SYSDUMMY1)

Ordre SQL Oracle : remplacer "coalesce" par "nvl", "0001-01-01-00.00.00.000000" par "0001-01-01" et "SYSIBM.SYSDUMMY1" par "DUAL"

12 septembre 2011

Message d'erreur SORT020U: SORT(EXTSM) failed - sort engine status = 24

Cette erreur provient de l'utilitaire mfsort. Elle survient lors de la génération d'un fichier indexés de plus de 4 Go.

  SORT013U: I/O error on dataset '/hraccess/file/PAPFR/PVBDFAS0
  SORT014U: Status = 24
  SORT020U: SORT(EXTSM) failed - sort engine status = 24

Cause : Par défaut le format des fichiers indexés on un IDXFORMAT (format des fichiers indexés) à 1 pour les fichiers dont les enregistrements sont de longueur fixe, et IDXFORMAT 3 pour les longueurs variables. Ces formats de fichier sont limités à 4 Go (cf http://supportline.microfocus.com/documentation/books/sx20books/fhlimi.htm#s006)

Solution : Changer le format des fichiers indexés pour passer l'IDXFORMAT à 8, ce qui porte la limite de volume à 128 To ou 8MTo avec FILEPOINTERSIZE=8 (longueur en octets pour stockage des pointeurs)
  • Ajouter dans le fichier $EXTFH le paramètre IDXFORMAT=8
  [XFH-DEFAULT]
  FILEMAXSIZE=8
  IDXFORMAT=8
  • Convertir les fichiers avec la commande rebuild ... (à confirmer : je n'ai pas eu l'occasion de tester)
  rebuild in-file[,out-file] [ -option ...]
  -i[:command]        - rebuild and display information
  -v[:n]              - display running count every n records
  -e                  - continue after duplicate key error
  -q                  - quick rebuild
  -p                  - rebuild format 8 file in place (no backup)
  -n[:command]        - no output - just display file information
  -x:n                - key of reference [out-file only]
  -d                  - rebuild corrupt data file
  -y                  - force rebuild when file size discrepancy reported
  -z                  - specifies server for all files

Ci joint un lien Microfocus à consulter sur le sujet.

Attention : ces fichiers prennent la forme d'un fichier unique (par opposition aux habituels fichiers .idx associés aux fichiers de données). Ceci peut avoir un impact sur des chaines ou des scripts qui prennent en charge ces fichiers ".idx".

2 septembre 2011

La version de l'applet (x.x.x) est incompatible avec celle de l'application (y.y.y)

En cas de montée de version, ce message d'erreur peut survenir lors de l'affichage des pages du client riche HRaSpace v7.
Il est dû au fait que l'upgrade a déployé sur le serveur Web des fichiers dont l'horodatage est antérieur à votre dernière navigation.

La meilleure solution est donc de demander à l'installateur de mettre à jour l'horodatage des fichiers du serveur Web (pour forcer les postes clients a rafraichir leur cache). Par exemple pour un serveur Unix ou Linux :
  cd .../webapps
  find . -type f -exec touch {} \;

Sinon, une solution de contournement est de nettoyer le cache de votre JVM.

La JVM SUN garde dans son cache les applet des différentes applications auxquelles le poste s'est connecté.
Ce cache est différent de celui de IE ou Firefox.
Pour mon poste il se trouve dans C:\Documents and Settings\Administrator\Application Data\Sun\Java\Deployment\cache

Pour le nettoyer,
  • Affichez le panneau de configuration Java (par exemple sous Windows XP dans "Démarrer/ Panneau de configuration / Java")
  • Trouvez la section "Fichiers Internet temporaires", bouton "Affichez",
  • Dans la pop-up sélectionner les "ressources", et triez par URL.
  • Il est ensuite nécessaire de retrouver les fichiers préfixés par l'URL de votre environnement (nom/adresse IP + port). 
  • L'applet est nommée "hrapplet.jar". Mais par sécurité supprimez tous les fichiers faisant référence à l'environnement concerné.
Dans le doute supprimez tous les fichiers en cache... Ils seront ramenés au fil de vos futures navigations.

1 septembre 2011

Console d'évènement sous HRaSpace v7

Avec HRv7 est apparue la console d'évènements. On y trouve en général des messages concernant les traitements batch.


Les évènements sont stockés dans la table EV10 :
 NUMEVT  INTEGER       
 SOURCE  CHARACTER     12
 CATEGO  CHARACTER     12
 SERVNM  CHARACTER     40
 TIMDEB  TIMESTAMP    
 TIMFIN  TIMESTAMP    
 POERRE  CHARACTER      1
 IDGPRG  INTEGER       
 USERID  CHARACTER     25
 TEANNU  CHARACTER      1
 FILENM  CHARACTER    254
 DESCRS  CHARACTER     55
 DESCRL  VARCHAR     3000
 COMPLT  VARCHAR      200

Il est possible de retrouver les évènements tracés en table EV10 et analysant les squelettes :
*    squelette  (source/catégorie)
* BCM "DESCENTER"   "ERRSYS"    <- Conditionnement <DEBESP> dans le squelette
* BHR "HRASERVER"   "CONNECT"   <- Conditionnement <DEBESP> dans le squelette
* BHV "SELFSERVICE" "INSTANT"   <- Conditionnement <DEBESP> dans le squelette
* BOP "HRASERVER"   "BATCHJOB"
* BTS "DESCENTER"   "DEPLOY"    <- Conditionnement <DEBESP> dans le squelette

On note que malheureusement, la plupart des évènements sont réservés à HRAS du fait d'un conditionnement dans  BGZ et BGX si W-WPVA-ESPISV = "ISV" au lieu de "ESP" (les plates-formes dites "ESP" sont des plates formes hébergeant des clients à HRAS) ... Contournement possible : générer un BGZ et un BGX spécifique avec W-WPVA-ESPISV = "ESP", créer une chaine RBZ spécifique, regénérer les programmes  BHR BCM BHV BTS (et faire un arret/relance de OpenHR)

Notez qu'il est possible de faire apparaître des évènement sur traitements TP grâce au contexte TBP079 de BNL

Activation de mails d'alerte

Pour compléter la console d'évènement accessible en Web, il est possible de demander l'activation d'un envoi de mail sur évènement :
  •  création et déploiement du modèle de mail DIGIXXXX créé pour l'occasion :
  Un évènement système a été relevé : "SOURCE" ${SOURCE} "CATEGO" ${CATEGO} "TIMDEB" ${TIMDEB} "USERID" ${USERID} "DESCRS" ${DESCRS} "FILENM" ${FILENM} ... Mail envoyé par Hraccess Design Server.
  • Alimentation en PP15 des paramètres d'activation de la fonctionnalité 'Nom du serveur de mail, Destinataires du mail, Code template
  insert into PP15 values ('PPCLIDEV','EV_SRVMAIL','digix.smtp-server');
  insert into PP15 values ('PPCLIDEV','EV_RCVMAIL','digix@webmail.com');
  insert into PP15 values ('PPCLIDEV','EV_CDTEMP','DIGIXXXX');

En revanche cette fonction est dans la pratique inutilisable :
  •  impossible de choisir les types d'évènements justifiant un mail - on est donc "noyé" sous le nombre des messages,
  •  l'objet du mail correspond au libellé du modèle de mail et ne peut être enrichi,
  •  le mail contient trop peu d'informations (par exemple, en cas de tentative de connexion, le mail n'est pas dit si cette dernière a été acceptée ou refusée !),
  •  un mail peut arriver 15 minutes après l'évènement ... pas essence le mail n'est pas un système d'alerte fiable.

5 juillet 2011

Retrouver le processus *xx01 associé a un programme technique

Suite à intégration de patch ou personnalisation des objets techniques (aussi appelés "Fichier Micro"), il peut être nécessaire de regénérer des processus techniques. Hors l'association processus technique *xx01 / programme n'est pas documenté.

En fait l'association se trouvera dans le squelette du programme BGH !

Exemple avec un squelette HRv5 (extrait) :
  087900*Valeurs du triplet système :
  088000*    0C2 = Mvs/Cics/Db2           0I2 = Mvs/Ims/Db2
  088100*    U O = Unix/ /Oracle          U 6 = Unix/ /Db2-6k
  088200*    U F = Ubix/ /Informix        U E = Unix/ /Sybase
  088300*    AS2 = As400/As400/Db2     0A2 = MVS/APPC
  088400*
  088500 01                 WPL2-VALEUR.
  088600     10             FILLER        PIC X(9) VALUE "*GEBGE***".
  088700     10             FILLER        PIC X(9) VALUE "*GEBLZ***".
  088800     10             FILLER        PIC X(9) VALUE "*GEBRF***".
  088900     10             FILLER        PIC X(9) VALUE "*GEBGJ***".
  089000     10             FILLER        PIC X(9) VALUE "*GEBGY***".
  089100     10             FILLER        PIC X(9) VALUE "*GEBGZ***".
  089200     10             FILLER        PIC X(9) VALUE "*GEBSC***".
  089300     10             FILLER        PIC X(9) VALUE "         ".
  089400     10             FILLER        PIC X(9) VALUE "*GEBC7***".
  089500     10             FILLER        PIC X(9) VALUE "*GEBC8***".
  ...

Ainsi, pour BC8 le processus technique est *GE01.
Par défaut, utilisez le processus *GE01 ...

4 juillet 2011

Retrouver la liste des programmes associés à une qualification de processus

Plusieurs méthodes sont possibles :

  • Avec HRD*Studio en consultant les objets techniques de nature QAPROS03 ou QAPROS05

  • Par accès SQL aux tables de définition des objets techniques
select FM10.TYFICM, FM10.NATUFM, substr(ZOBANA,1,2) QUALIF, substr(ZOBANA,3,3) CDPROG, substr(ZOBANA,6,1) TYPE 
from FM10, FM30 
where FM10.TYFICM=FM30.TYFICM and FM10.NATUFM in ('QAPROS03','QAPROS04','QAPROS05','QAPROS06') and substr(ZOBANA,6,1) in ('B','T','M') 
order by substr(ZOBANA,1,2), substr(ZOBANA,3,3);

  • En consultant le généré de BGH

  081900*          Qualification de processus             2c
  082000*          Code programme                         3c
  082100*          Qualification de programme (B,M,T)     1c
  082200*
  082200 01              W-WPLP-TABLE.
  082200     05          W-WPLP-VALEURS.
  082200 01              W-WPLP-TABLE.
  082200     05          W-WPLP-VALEURS.
  082200       10        FILLER         PICTURE X(006) VALUE
  082200       "GDBLZB".
  082200       10        FILLER         PICTURE X(006) VALUE
  082200       "GDBNRT".
  082200       10        FILLER         PICTURE X(006) VALUE
  082200       "GDBMRB".
  082200       10        FILLER         PICTURE X(006) VALUE
  082200       "GDRBPB".
  082200       10        FILLER         PICTURE X(006) VALUE
  082200       "GDBHRT".
  082200       10        FILLER         PICTURE X(006) VALUE
  082200       "GDBF7B".

27 mai 2011

Gestion du SIGAGIP.ini et du HRACCESS.ini

Pour les versions de HR Access postérieures à la v3, il est possible de déplacer le fichier de paramètres SIGAGIP.ini hors du répertoire WINDOWS.


Le raccourci vers l'exécutable hraccess.exe peut en effet comporter des commutateurs suivants :
  •  /I Répertoire des fichiers de paramètres d'environnement
  •  /H Répertoire du fichier HRAccess.ini si ce fichier ne se trouve pas dans le répertoire de Windows
Exemple :  c:\...\hraccess.exe /Ic:\hraccess\params /Hd:\hra_ini

A compter de HRv7, remplacer hraccess.exe par hrstudio.exe.

17 mai 2011

Installation de HR Studio en mode silencieux

De façon à pouvoir déployer automatiquement sur les postes le Client C/S, il est possible d’utiliser le programme d’installation INSTALLSHIELD en mode silencieux.

Etape 1 : Générer le fichier de réponses aux boîtes de dialogue


Sur un premier poste, exécuter le fichier SETUP.EXE avec l’option /r et l’option /f1
  • l’option /r permet d’enregistrer les réponses dans le fichier de réponses (.iss).
  • l’option /f1 permet de spécifier le chemin et le nom du fichier de réponse à générer (pour éviter des résultats inattendus, indiquez un chemin absolu).

Exemple :
  Setup.exe /r /f1"c:\temp\setup.iss"

En fin d'installation, récupérez et conservez le fichier setup.iss.

Etape 2 : Exécuter le programme d’installation en mode silencieux


Déposez le fichier setup.iss sur les autres postes à installer.

Sur chacun de ces postes, exécutez le fichier SETUP.EXE avec l’option /s et les options /f1 et /f2.
  •  l’option /s indique que l’installation se fera en mode silencieux
  •  l’option /f1 permet de spécifier le chemin et le nom du fichier de réponses à prendre en compte (pour éviter des résultats inattendus, indiquez un chemin absolu).
  •  l’option /f2 permet de spécifier le chemin et le nom du fichier de compte rendu à rédiger (pour éviter des résultats inattendus, indiquez un chemin absolu).

Exemple :
  Setup.exe /s /f1"c:\temp\Setup.iss" /f2"c:\temp\Setup.log"

Détails sur le fichier Setup.log


Setup.log est le nom par défaut donné au fichier journal d'une installation en mode Silencieux.
Le fichier Setup.log contient les trois sections suivantes :
  •   Install Shield Silent : Cette section identifie le fichier comme étant un fichier journal et fournit la version de la fonction Install Shield Silent utilisée dans le cadre de l'installation en mode silencieux.
  •   Application : Cette section identifie le nom et la version de l'application installée, ainsi que le nom de la société.
  •   Response Result : Cette section contient le code de résultat qui indique si l'installation en mode Silencieux a réussi. Une valeur entière est affectée au nom de clé ResultCode dans la section Response Result du fichier. Install Shield insère l'une des valeurs suivantes dans la clé ResultCode :

   0     Succès
  -1    Erreur générale
  -2    Mode non valide
  -3    Données requises introuvables dans le fichier Setup.iss
  -4    Mémoire disponible insuffisante
  -5    Fichier inexistant
  -6    Impossible d'écrire dans le fichier réponse
  -7    Impossible d'écrire dans le fichier journal
  -8    Chemin du fichier réponse (.iss) Install Shield Silent non valide
  -9    Type de liste non valide (chaîne ou nombre)
  -10    Type de données non valide
  -11    Erreur inconnue lors de l'installation
  -12    Boîtes de dialogue inopérationnelles
  -51    Impossible de créer le dossier spécifié
  -52    Impossible d'accéder au fichier ou au dossier spécifié
  -53    Option sélectionnée non valide

Le fichier journal d'une installation en mode Silencieux réussie se présente comme suit :
  [ResponseResult]
  ResultCode=0

Pour tous renseignements complémentaire, consultez le site de l'éditeur INSTALLSHIELD.

ex : http://www.flexerasoftware.com/webdocuments/PDF/silent_installs.pdf (chapitre "InstallScript Installations")

16 mai 2011

Longueur maximale des requetes HTTP

Sous Tomcat 5 le paramètre maxHttpHeaderSize permet de préciser la longueur maximale des requêtes HTTP (en octets). Ceci correspond aux informations que le client envoie au serveur lors de ses demandes d'accès. La plus grosse partie du header est en général liée à la méthode HTTP (GET, POST, HEAD, etc.), l'URI (le chemin à l'objet), le numéro de version du protocole HTTP.

Sa valeur par défaut est de 4096 (4 Ko). Dans l'exemple ci dessous sa valeur est positionnée à 8192 (8 Ko) :

    <!- - Define a non-SSL HTTP/1.1 Connector on port 52281 -->
    <Connector port="52281" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="52283" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />

Sur ses environnements paramétrés avec du "Single Sign On", un collègue Michel a dû monter le maxHttpHeaderSize jusqu'à "65536" (la requête véhiculant des données d’authentification de l'utilisateur).

Avec un Apache en frontal, Michel m'indique qu'il ne faut plus utiliser ce maxHttpHeaderSize (paramètre d'un connecteur HTTP inutilisé) mais le packetsize du connecteur AJP13 et  les paramètres proxyIOBufferSize et LimitRequestFieldsize de Apache :
  • au niveau du connecteur AJP mettre 
packetSize = '65536'
  • dans le fichier de configuration de Apache préciser :
proxyIOBufferSize 65536
LimitRequestFieldsize 65536


  • le HEADER est envoyé en un seul packet , donc il faut que la taille maximale d'un paquet soit suffisant, d'où les paramétres packetSize & proxyIOBufferSize, qui sont par défaut à 8Ko  seulement,
  • le paramétre LimitRequestFieldSize permet d'augmenter la taille maximale des HEADER acceptés par Apache , qui est à 8Ko seulement.
NB : Dans les anciennes versions du serveur Apache (avant 2.0.53 semble-t-il), le paramètre LimitRequestFieldSize ne permettait  pas d'augmenter la valeur par défaut , mais seulement de la limiter. Maintenant c'est possible. Noter que les commentaires dans les docs livrés avec Apache sont erronées sur ce sujet . Une discussion de développeurs de Apache fait allusion à cela.

13 mai 2011

"IOException" lors du chargement des sessions persistantes

Erreur rencontrée lors d'un redémarrage de HRv7 sous Tomcat 5 après un arrêt brutal. Ce problème se rencontre en théorie "si Tomcat essaie de sérialiser une session dans laquelle sont rangés des objets non sérialisables".

org.apache.catalina.session.StandardManager doLoad GRAVE: "IOException" lors du chargement des sessions persistantes: java.io.EOFException

La résolution de l'erreur se fait par la purge du fichier SESSIONS.ser qui se trouve par défaut dans le répertoire work de la webapp concernée (sinon dans répertoire $CATALINA_HOME/work).

12 mai 2011

Page par défaut Tomcat renvoyant sur HRaSpace

La page par défaut Tomcat (ROOT/index.jsp) permet d'accéder au management des applications Web. Pour qu'un utilisateur saisissant une adresse Web incomplète ne tombe pas sur cette page mais sur le portail HR, créez une page index.html spécifique (NB : la welcome-file-list de Tomcat rend la page index.html prioritaire sur index.jsp),

Sous .../hraspace/webapps/ROOT, créer un fichier index.html.

Y placer comme contenu :


  <html>
  <head><meta http-equiv="refresh" content="0;URL=/hra-space/portal/"></head>
  <body></body>
  </html>

avec ici "hra-space/portal/" la cible de votre redirection.

cf http://wiki.apache.org/tomcat/HowTo#How_do_I_override_the_default_home_page_loaded_by_Tomcat.3F

11 mai 2011

GE01BGV-BBAD0012-DEPASSEMENT DE CAPACITE (TABLE WORKING) : W-WP00-LGTRAV

Lors d'une génération, dépassement de capacité de la zone étalée (limitée à 9.999.999 caractères).

La longueur calculée de la zone étalée dépend de la taille des informations ET du nombre d'occurrences.

Pour supprimer l'erreur, le plus pertinent est de diminuer le nombre d'occurrences des informations multiples rattachées au processus concerné (via l'atelier processus, liste des informations rattachées explicitement).

Le nombre d'occurrences provient de la table AP30, mais par défaut de la table DI40, puis à défaut ce nombre est fixé à 999 occurrences.

Pour voir quelles sont les informations du processus XXXXX et les nombre d'occurrences paramétrés, exécutez sous SQL :

select AP30.CDSTDO, AP30.CDINFO, AP30.NBOCCR, DI40.NBOCCR 
from hr.DI40, hr.AP30 
where DI40.CDSTDO=AP30.CDSTDO and DI40.CDINFO=AP30.CDINFO 
and AP30.CDPROS='XXXXX';

Pour diminuer le nombre d'occurrences, vous pouvez agir au niveau processus.

Pour les processus utilitaires (qualification UT) vous pouvez sans risque positionner un nombre d'occurrence à 2 pour toutes les informations rattachées (les chaînes NOY ne sont pas sensibles au nombre maximum d'occurrences - cf ce message) :

update AP30 set NBOCCR=2, TIMODI=SYSDATE where CDPROS='XXXXX';
Puis regénérez.

10 mai 2011

Reduction des temps de latence OpenHR v7

Sur AIX le temps de latence OpenHR est trop long (de l'ordre de 500ms). Ceci est vérifiable en consultant le fichier stop_watch.log.

Un patch a été créé par l'éditeur pour shunter un "ping" consommateur. Pour en disposer il faut être en release 7.17.4 minimum.

Le bug étant spécifique à AIX la mise en service du shunt est à faire manuellement. Pour cela, ajouter la propriété suivante dans la ligne de commande de lancement d'openhr (script $SIGACS/openhr/bin/dispatcher.sh) : -Dcom.hraccess.dispatcher.skip_bhr_ping=true.

Exemple de ligne de commande :

nohup $_RUNJAVA -classpath $OPHRS_HOME/bin/bootstrap.jar -Dcom.hraccess.dispatcher.skip_bhr_ping=true -Dhr.bootjars.dirs=$OPHRS_HOME/lib/boot -Dhr.jars.dirs=$OPHRS_HOME/lib com.hraccess.wutil.WAppLauncher com.hraccess.dispatcher.OpenHRServer $1 $2 $3 $4 $5 $6 $7 $8 $9 1>/dev/null 2>&1 &

Autre option plus radicale : faites corriger le paramétrage du système d'exploitation. Car en tout état de cause, ce fonctionnement est lié à des paramètres AIX : tcp_nodelayack , tcp_nodelay et tcp_nagle_limit (merci Alban pour l'information).

The TCP_NODELAYACK option prompts TCP to send an immediate acknowledgement, rather than the usual 200 ms delay. Sending an immediate acknowledgement might add a little more overhead, but in some cases, greatly improves performance.

Ce tcp_nodelayack peut être fixé à 1 pour enlever le délai habituel de 200ms pour l'accusé de reception TCP.

Pour lire la valeur de ces paramètres, faites :
no -a | egrep 'tcp_nodelay|tcp_nagle_limit


15 mars 2011

Ajouter OpenHR a la console HRaSpace

Si vous avez installé la console HRaSpace, par défaut cette dernière ne permet pas de voir OpenHR Server. C'est pourtant utile pour modifier a chaud la politique de log (INFO / DEBUG). Pour le rendre visible ...

Fermez les applicatifs java

Stoppez HRaSpace, HRQuery et OpenHR.
  • Pour OpenHR, stop_openhr.sh,
  • Pour HRQuery, stop_query.sh,
  • Pour HRaSPace sous Tomcat, shutdown.sh.

Ajouter une fonction OpenHR dans l'objet topologie HRS

Nommer par exemple la fonction "OPENHR".
Lui attribuer un port IP d'administration (parmi les ports libres sur la machine).

Faire référence au nom de la fonction dans le fichier paramètre de OpenHR

Dans $SIGACS/openhr/conf/dispatcher.properties,
Ajouter global.names=OPENHR.
Relancez le serveur OpenHR par start_openhr.sh.

Contrôlez les logs. En cas de message "Address already in use", vous avez choisi un numéro de port déjà utilisé.
Corrigez votre paramétrage et recommencez.

Redémarrez HRQuery et HRaSpace.

  • Pour HRQuery, start_query.sh,
  • Pour HRaSPace sous Tomcat, startup.sh.

Accédez a la console.

Après avoir laissé le temps aux WebApps de démarrer, sous IE ou Firefox, accédez à l'URL de la console :
  http://...:.../hr-admin-console/

22 février 2011

Publication HR Access différée

Depuis HR*Studio 5.0.5 il est possible de demander une publication différée dans le temps. La publication différée permet de ne pas exécuter immédiatement la tâche de publication, et de demander à Windows son déclenchement à une date et une heure particulière.

Contraintes :
  • HRStudio ne peut planifier qu'une seule publication différée pour un environnement et un compte HR Access donnés (création d'un script systématiquement nommé PUBLISH.js),
  • Il est nécessaire que vous ayez accès au planificateur de tâches Windows (ou a un équivalent),
  • Le PC doit rester allumé pour que le gestionnaire de tâche Windows puisse déclencher la publication,
  • A l'heure dite HR*Studio et HR*Center doivent être fermés pour l'environnement et le compte UC10 prévus ,
  • A l'heure dite l'environnement HR doit être disponible (évitez les plages de fermeture pour sauvegarde).

Remarques :
  • Vous pouvez reprendre et replanifier une ancienne demande de planification Windows,
  • Pour paramétrer plusieurs publications sur un même environnement, il faudra soit (1) utiliser plusieurs postes, soit (2) utiliser plusieurs comptes HR Access, soit (3) renommer le script PUBLISH.js,
  • HR*Studio créera à coté des fichiers de compte rendus PUBLISH.trc*,
  • Une fois la publication terminée, HR*Center sera fermé.

Préparez une publication différée


Se connecter à HR*Studio sur l'environnement ciblé avec le compte UC10 prévu, accéder à l'arbre de publication souhaité.
Par clic droit demander la publication différée, la paramétrer et enregistrer.

HR*Studio crée un fichier paramètre C:\Program Files\HR Access\USERS\<COMPTE_HR>\<CODE_ENVT>\MACROS\PUBLISH.js (ce répertoire est paramétrable via le tableau de bord, catégorie 'Tous types d'objets', le nom du script est modifiable via l'explorateur Windows),

Sortir de HR*Studio et fermer le HR*Center (si vous étiez connecté sur l'environnement ciblé avec le compte UC10 prévu).

Créez une "tâche planifiée Windows" ("scheduled task")


Via le Panneau de Configuration, ou dans les Programmes / Accessoires / Outils système (pour Win XP).
Choisissez le fichier C:\Program Files\HR Access\HRDESIGN\5X\EXE\HRAccess.exe, la date et la fréquence de déclenchement.
Modifiez ensuite la ligne de commande pour préciser les options. Celle ci doit au final ressembler à :
"C:\Program Files\HR Access\HRDESIGN\5X\EXE\HRAccess.exe" /EDEV /UHRUSER /PHRPASS /MPUBLISH
avec :
  • DEV le code de l'environnement
  • HRUSER le code du compte UC10
  • HRPASS le mot de passe UC10
  • PUBLISH le nom du script de publication (à modifier si vous l'avez renommé)

Vous pouvez tester la ligne de commande via une session DOS (Démarrer / Exécuter / cmd). Si vous retirez l'option "/MPUBLISH", Windows doit ouvrir HR Access sur l'environnement attendu sans demander de mot de passe.

Exemple de contenu d'un script HR de publication


  var o = hrGetId('AM', '', 'AA0FR');
  hrPublishTree(o, 'F/FRP;' /*Langues et vocabulaires a publier*/
  +'WEBHRAINS;' /*Nom du diagramme de publication*/
  +'HRAWEB;' /*Nom de la charte technique*/
  +'true;' /*Effacer les repertoires temporaires?*/
  +'true;' /*Zipper les fichiers HTML?*/
  +'false;' /*Publication sans echec?*/
  +'true;' /*Rafraichissement du dico?*/
  +'false;' /*Publication cumulative?*/
  +'AA0FG;' /*Nom de l arbre pivot*/
  +'false;' /*Publication du noeud origine seul?*/
  +'false;' /*Controles sur serveur Web pour publ. cum.?*/
  +'true;' /*Publication de la documentation?*/
  +'F;' /*Langue par defaut pour la doc*/
  +'true;' /*Nature U pour la doc?*/
  +'true;' /*Nature F pour la doc?*/
  +'true;' /*Statut V pour la doc?*/
  +'false;' /*Publication de la documentation commune?*/
  +'true;' /*Publication des textes communs?*/
  +'true;' /*Publication des glossaires?*/
  +'false;' /*Publication du WIM?*/
  +'?;' /*Attributs WIM1*/
  +'?;' /*Attributs WIM2*/
  +'?;' /*Attributs WIM3*/
  +'false;' /*Publication des infos du WIM?*/
  +'');