20 décembre 2017

Faire une recherche dans les scripts intégrés aux objets

Je n'avais pas noté que depuis (au moins) la version 7.30.50 HR Studio possède une fonction de recherche dans les scripts ...



Si inspecter les pages web publiées ou décoder les données de la table SP10 peut garder un intérêt (la recherche est transverse), vous pouvez plus simplement faire un clic droit sur un groupe (d'écrans) et choisir "rechercher dans le script des objets du groupe".



Merci Wassim et Anouar de m'avoir relayé l'information.

7 décembre 2017

HRaSpace : L'accès mobile n'est pas activé sur le système

Suite à une mise à jour des PC sur le parc d'un client, l'accès à HRaSpace n'est plus possible. Le navigateur affiche :


Après analyse par les équipes internes,

<< Ces machines lors de leur connexion se présentent comme pouvant émuler un mode tablette.

Contenu du User Agent d’un poste qui rencontre le problème :
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; Tablet PC 2.0)

Contenu du User Agent des postes qui ne rencontrent pas le problème :
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E) 

La présence de la chaine "Tablet PC 2.0" dans le user Agent est due à la valeur de la clé de registre :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform]
"Tablet PC 2.0"=""


La suppression de cette clé de registre résout le problème d’accès à l’application.>>


28 novembre 2017

HRaSpace 7.30 - Un "rectangle blanc" devant le Client Riche


Dans certains cas le Client Riche est perturbé sous Internet Explorer par un "rectangle blanc" qui s'affiche devant le formulaire HR Access. En général ce dysfonctionnement est lié à la JVM du poste.

Si vous rencontrez ce problème, contactez le support. La proposition est de modifier la taille de l'objet concerné dans le fichier "webapps/hr-rich-client/appletbeasun.html" pour le rendre invisible :

      if (topWindow.isIE) {
      document.write('<OBJECT WIDTH="0" HEIGHT="0" ID="DataAccess" NAME="DataAccess" 
      ...
      document.write('<PARAM name="code" value="com.hraccess.webclient.applets.AppletHRAccess">');
      document.write('<PARAM NAME="archive" VALUE="hrapplet.jar">');
      }
En complément, faire supprimer le cache des navigateurs.

22 novembre 2017

Le format des logs des webapps de HRaSpace

Les fichiers log4j.properties des webapps de HRaSpace donne la possibilité de personnaliser le format des messages affichés. Ce fichier est stocké dans le répertoire WEB-INF/conf de chaque webapp.

Si vous complétez ainsi le paramètre "fileappender.layout.conversionPattern" vous obtiendrez en plus de l'adresse IP le code de l'utilisateur. Ex :
log4j.appender.fileappender.layout.conversionPattern = %d [%15X{ip.address}][%25X{user.id}] %-5p %c{1} - %m%n

En ajoutant [%64X{virtual.session.id}] vous afficherez l'identifiant de session HRAccess - que l'on peut retrouver dans la table MX10 et dans le fichier stop_watch.log de openhr... Pour avoir l'équivalent sous Apache, ajoutez %{com.hraccess.portal.connection.id}C au LogFormat.

Avec ce paramètre le fichier log est réinitialisé à chaque démarrage de l'application :
log4j.appender.fileappender.append = false

En le modifiant comme ceci il n'est plus écrasé mais daté (pensez a purger les fichiers les plus anciens) :
log4j.appender.fileappender.append = true
log4j.appender.fileappender.datePattern = '.' yyyy-MM-dd

En modifiant le "consoleappender.layout.consoleappender" ce sont les messages renvoyés dans le log général "catalina.out" qui seront concernés :
log4j.appender.consoleappender.layout.conversionPattern=...

Y ajouter  ${com.hraccess.webapp.basename} permet d'afficher le nom de l'application source.

En supprimant la sortie "console" les messages de la webapp ne seront plus envoyés dans le catalina.out :
log4j.logger.com.hraccess = info, consoleappender, fileappender


Attention : en cas de mise à jour de la politique de journalisation via la console d'administration, le fichier est écrasé et vos mises à jour sont perdues ...

2 novembre 2017

Executer une commande système dans un traitement Cobol

Le site MicroFocus donne un exemple de Cobol exécutant une commande système et récupérant le code retour :
https://community.microfocus.com/microfocus/cobol/net_express__server_express/w/knowledge_base/6537/invoke-a-unix-command-from-within-cobol-using-call-system-and-retrieve-the-return-code

Dans le principe, on utilise la commande Cobol
CALL "SYSTEM" USING null-terminated-command  RETURNING return-code-ws.

La commande est terminée par un caractère NULL :

000014 01 null-terminated-command.
000015     05 command      pic x(2048).
000016     05 filler          pic x value x"00".


Le code retour est placé dans un numérique :
000002 01 return-code-ws     pic s9(8) comp-5.
L'article explique que pour AIX, Solaris, HP/UX PARISC and HP/UX Itanium (big-endian) il faut la redéfinir ainsi :
000005     05 filler          pic x.
000006     05 high-order-byte pic s9 comp-5.
000007     05 filler          pic x.
000008     05 low-order-byte pic s9 comp-5.

Et pour Linux x86, HP/Tru64, SCO, UnixWare - et certainement Windows - (little-endian) ainsi :
000010     05 filler          pic xx.
000011     05 high-order-byte pic s9 comp-5.
000012     05 low-order-byte pic s9 comp-5.


Pour le contrôler :
000024      if low-order-byte = 0
000025          display "return code from shell is: ",
000026               high-order-byte
000027      end-if


J'ai testé l'exemple fourni sur un AIX (donc un "big-endian") avec succès :

cob -vx callsys.cbl -o callsys
 

callsys

Enter command to be executed by shell
 (enter 'done' to quit)
ls -l  /tmp/dummy
-rw-r--r--    1 hraref   hraref          0 Aug 28 11:58 /tmp/dummy
return code from shell is: +000

Enter command to be executed by shell
 (enter 'done' to quit)
rm /tmp/dummy
rm: /tmp/dummy not removed.
Not owner
return code from shell is: +002


Merci à l'auteur de l'article ...

30 octobre 2017

HRaSpace Self-Service - Erreur RSBHR05GC - processus par défaut pour les GP

Après une opération de duplication d'environnement HRaSuite 7, suite à la connexion, un message d'erreur apparaît lors de l'affichage de HRaSpace.

Dans les logs du serveur Web on trouve :
HRAccess system error [TYERRE='R',TYORDR='S',CDPROG='BHR',CDFONC='05',CDSFTC='GC',ZOERR1='PP20',ZOERR2='000000000000100          02000',ZOERR3='',ZOERR4='',ZOERR5='',MSG='Erreur sur dossier']


Le code SQL 100 signifie qu'une donnée technique n'a pas été trouvée.
La table concernée est la PP20 (objet Plateforme physique).


Dans le squelette de BHR on trouvera en fonction 05GC :
431100*Recherche du radical du.
431200*processus BP défini par défaut.
431300*dans la PP20 pour appel à BHT.
431400     MOVE        W-WP00-CDPLPH TO H-CDPLPH.
431500     PERFORM     F9SBA THRU F9SBA-FN.
431600           IF    SQLCODE = W-WP00-NOTFND
431700     MOVE        SPACE TO CO16
431800     MOVE        "RSBHR05GC" TO CO16-GROUPE (1:9)
431900     MOVE        SQLSTATE TO CO16-ZOERR2 (26 : 5)
432000     MOVE        SQLCODE TO CO16-ZOER29
432100     MOVE        SQLERRMC TO CO16-GROUPE (70:70)
432200     MOVE        "PP20" TO CO16-ZOERR1
432300     IF SQLCODE <    ZERO MOVE "-"
432400     TO CO16-ZOERR2 (1:1) END-IF
432500     MOVE        "99" TO CO16-CDRET
432600     GO TO F79.

089500*********************************
089600*FONCTIONS DE RECHERCHE DE LIGNES
089700*DANS UNE TABLE
089800*********************************
089900*********************************
090000*N9SBA.    NOTE *SELECT TABLE W-WP00-IDTABL         *.
090100 F9SBA.
090200     MOVE        ZERO TO SQLCODE.

092000*N9SGP.    NOTE *SELECT TABLE PP20                  *.
092100 F9SGP.    IF    W-WP00-IDTABL = "PP20"
092200           NEXT SENTENCE ELSE GO TO     F9SGP-FN.
092400     EXEC SQL    SELECT
092500                         RDPROS
092600                 INTO    :H-RDPROS
092700                 FROM             PP20
092800                 WHERE   CDPLPH = :H-CDPLPH
092900                 AND     CDICON = 'GP_DEFAULT'     END-EXEC.
093100         GO TO     F9SBA-FN.



Le programme recherche un processus dont le champ CDICON vaut 'GP_DEFAULT'.
Effectivement, dans ma base de données, je ne retrouve pas mon environnement PPCLIINT :
Select * from PP20 where CDICON = 'GP_DEFAULT' ;
PPCLIDEV ANBHT  GP_DEFAULT  ANBHT  TYBX   Z00      ANBHTBHT      0             S      2011-04-12-11.55.28.000000
PPCLIPRD ANBHT  GP_DEFAULT  ANBHT  TYBX   Z00      ANBHTBHT      0             S      2012-01-24-14.14.17.000000
PPCLIREC ANBHT  GP_DEFAULT  ANBHT  TYBX   Z00      ANBHTBHT      0             S      2011-06-27-11.01.05.000000
PPCLIREF ANBHT  GP_DEFAULT  ANBHT  TYBX   Z00      ANBHTBHT      0             S      2011-03-15-18.23.43.000000



Ceci est lié à un dysfonctionnement de la chaine RB4 que j'ai utilisé pour rafraîchir l'objet plateforme ...
Pour corriger ma plateforme PPCLIINT :
update PP20 set CDICON = 'GP_DEFAULT' where cdexec='ANBHTBHT' and cdplph='PPCLIINT';