Tivoli Service Desk 6.0 Developer's Toolkit - Guide du concepteur d'interfaces (Interface Designer)
Retour à la table des matières
Les fichiers de mappe exploités par l'interface EHLLAPI sont des fichiers texte ASCII. Ils comportent deux sections : une section d'en-tête (Header) et une section de zones (Fields).
Les informations contenues dans l'en-tête concernent les paramètres généraux d'un fichier de mappe. Vous pouvez par exemple désirer que l'interpréteur de TSD Script provoque l'enfoncement de la touche ERASE_EOF avant que chacune des zones soit renseignée.
Le format d'un en-tête se présente comme suit :
*HEADER CLEAR_FIRST = {{TRUE ou ON}|{FALSE ou OFF}} MOVE_CURSOR = {{TRUE ou ON}|{FALSE ou OFF}} LIBRARY = {bibliothèque KBC à utiliser comme valeur par défaut pour les fonctions de formatage définies par l'utilisateur}
L'en-tête doit toujours constituer la première section du fichier de mappe. Les spécifications sont les suivantes :
Cette section définit les zones hôtes, ainsi que leurs relations avec les données de TSD Script. Chaque ligne de la section de zones relie essentiellement un point unique d'un champ de données hôte à une zone unique d'enregistrement de TSD Script. En variante, si les données à transférer correspondent à une variable TSD Script unique, il existe alors une ligne de la section Fields qui relie un point d'un champ de données d'hôte au nom de la variable TSD Script correspondante. Chaque ligne de la section Fields s'appelle une entrée de mappe.
Le format de la section de zones d'un fichier de mappe se présente comme suit :
*FIELDS {field}[, ]{row}[, ]{{col}[, ]{{len} {{USERFORMAT [, ]{[file:]routinename}|{SYSFORMAT[, ]{constant [constant ...]}}
Chaque segment d'une entrée de mappe doit être séparé par un emplacement vide (espace(s) ou tabulation(s)) ou par une virgule. Chaque segment est décrit de la manière suivante :
Tous les champs de données de l'hôte doivent être convertis depuis ou vers un type TSD Script.
Pour chaque type de zone simple de TSD Script, il existe certains formats système applicables.
Les formats système peuvent être combinés de manière à ce que plusieurs formats système apparaissent sous forme de liste dans une zone particulière. Si par exemple vous souhaitez définir une chaîne de caractères alignée à gauche et complétée par une rangée de zéros lorsque vous la téléchargez, vous pouvez définir une portion de code TSD Script pour exécuter cette tâche, ou définir LEFT_JUSTIFY ZERO_PAD comme étant le format système du fichier de mappe. L'emploi des formats système est plus simple et s'exécute plus rapidement qu'une routine de conversion de TSD Script. Si vous ne devez pas écrire de routine de conversion TSD Script particulière, utilisez le format système.
L'emploi d'un format système dépend du type TSD Script simple formaté. Les types simples de TSD Script, les formats système applicables et les descriptions associées sont respectivement décrits dans le tableau ci-dessous.
Type | Description |
STRING |
|
INTEGER |
|
BOOLEAN |
|
REAL |
|
TIME |
|
DATE |
|
Vous pouvez être amené, dans certaines circonstances, à définir vos propres fonctions de formatage dans TSD Script. Une fonction de formatage définie par l'utilisateur reconnaît les entrées de données, convertit ces dernières au nouveau format et renvoie une valeur booléenne indiquant le succès de l'opération. Les fonctions de formatage définies par l'utilisateur se présentent généralement de la manière suivante :
FUNCTION {funcname}(VAL {source}:{sourcetype}, REF {target}:{targettype}):BOOLEAN
Les fonctions de formatage définies par l'utilisateur sont décrites ici plus en détail.
Fonction de formatage définie par l'utilisateur | Description |
sourcetype |
|
targettype |
|
returntype | La valeur renvoyée doit être conforme au type BOOLEAN. Si la fonction renvoie la valeur FALSE, l'interpréteur de TSD Script suppose qu'une erreur s'est produite et renvoie une erreur EMUERR_FORMAT_FN_FAILURE (-7005) à l'émetteur de l'appel. Si la fonction de conversion renvoie la valeur TRUE mais définit la valeur cible comme étant $Unknown, l'interpréteur de TSD Script suppose que la conversion a abouti et lance la validation de l'opération. Dans le cas d'un téléchargement en aval, la variable ou la zone d'enregistrement de TSD Script contient une valeur $Unknown. Dans le cas d'un téléchargement en amont, cette zone n'est pas prise en compte par l'interpréteur de TSD Script. |
Du fait que les règles changent en fonction du sens du flux de données, une mappe comportant des fonctions définies par l'utilisateur doit être respcetivement dédiée aux téléchargements vers l'amont ou vers l'aval, sauf lorsque les données source et cible sont du type STRING.
A titre d'exemple, supposez que vous souhaitiez convertir un niveau de sévérité de Tivoli Problem Management (TPM), qui se trouve au format numérique, sous forme d'échelle alphabétique (telle que 1 pour A, 2 pour B, et ainsi de suite). Parallèlement, pour les téléchargements en aval, vous souhaitez convertir l'échelle alphabétique afin qu'elle redevienne une échelle numérique. En premier lieu, vous devez définir une fonction TSD Script destinée à changer la valeur numérique en valeur alphabétique (pour les téléchargements vers l'amont) :
FUNCTION ToAlpha(VAL inSeverity:INTEGER, REF outSeverity:STRING):BOOLEAN IS ACTIONS outSeverity := Char(64 + inSeverity); Exit(TRUE); END; -- ToAlpha
Vous devez ensuite créer une routine visant à convertir les données alphabétiques au format numérique (pour les téléchargements en aval) :
FUNCTION ToNumeric(VAL inSeverity:STRING, REF outSeverity:INTEGER):BOOLEAN IS ACTIONS outSeverity := CharCode(StrUpper(inSeverity)) - 64; END; -- ToNumeric
Supposons que ces fonctions soient sauvegardées dans un fichier intitulé CONVERT. Pour définir la sévérité dans la zone de mappe des téléchargements vers l'amont, la fonction ToAlpha est configurée comme suit :
SEVERITY 10 10 1 USERFORMAT CONVERT:TOALPHA
Pour définir la sévérité dans la zone de mappe des téléchargements vers l'aval, la fonction ToNumeric est configurée comme suit :
SEVERITY 10 10 1 USERFORMAT CONVERT:TONUMERIC
Bien que les fichiers de mappe soient caractérisés par leur simplicité, leur création manuelle pour les besoins d'une interface entière peut nécessiter un investissement temporel important.
Pour déterminer correctement des points de l'écran hôte en comptant des lignes et des colonnes, le développeur augmente son risque d'erreur, notamment lorsqu'il se trouve en présence d'un grand nombre d'écrans contenant chacun de multiples zones.
La plupart des développeurs d'interface préféreront donc au contraire consacrer leur temps à étudier la logistique de l'interface.
La modification du fichier de mappe à une date ultérieure ou par un autre utilisateur est difficile à effectuer lorsque cet utilisateur ne dispose que d'un fichier texte en consultation.
Pour résoudre ces difficultés, Tivoli Systems a mis au point l'utilitaire de mappage EHLLAPI (Map Utility).
L'utilitaire de mappage EHLLAPI permet de créer de façon intuitive des fichiers de mappe exploités par les fonctions EMUMapUpload et EMUMapDownload de TSD Script.
L'utilitaire de mappage EHLLAPI rend également possible la capture d'écrans hôtes et leur sauvegarde sous forme de fichiers texte (fichiers SCR). La création des fichiers de mappe à partir des captures d'écrans s'effectue lorsque vous sélectionnez les zones pour lesquelles vous désirez créer des entrées. Pour sélectionner les entrées de zones, vous pouvez cliquer sur ces dernières et les déplacer.
En outre, l'utilitaire de mappage EHLLAPI s'avère intéressant pour la maintenance des interfaces, car cet outil charge les fichiers SCR constitués lors des captures précédentes, et applique tous les fichiers de mappe sur l'écran. Grâce à l'utilitaire de mappage EHLLAPI Map Utility, vous pouvez créer, visualiser, éditer et effacer des entrées de zone, de manière visuelle et intuitive.
L'utilitaire de mappage EHLLAPI a été entièrement créé à l'aide de TSD Script. Si vous souhaitez apporter des modifications au code de TSD Script, Tivoli Systems vous conseille d'effectuer une copie de sauvegarde des fichiers du code d'origine (maputil.kb, mapentry.df) avant de procéder au moindre changement.
Pour lancer l'utilitaire de mappage EHLLAPI, la boîte à outils du développeur (TSD Developer's Toolkit) doit être installée sur votre machine. Pour utiliser l'option de capture d'écrans, vous devez également procéder à l'installation des extensions EHLLAPI pour TSD Developer's Toolkit.
Pour lancer l'outil, procédez comme suit :
Lorsque des captures d'écran ont été effectuées sur l'hôte, certains caractères, qui n'étaient pas visibles dans la fenêtre de terminal, s'affichent. Ils sont masqués par les caractères de l'hôte, lesquels se comportent comme des délimiteurs de zones. L'utilitaire de mappage EHLLAPI n'efface pas ces caractères, car ils peuvent servir à déterminer les emplacements de début et de fin des champs de données.
La capture d'un écran d'hôte est la première opération avec laquelle vous devez vous familiariser. La définition des opérations de téléchargement vers l'amont ou vers l'aval nécessite toujours une étape initiale, quel que soit l'écran d'hôte concerné.
Lorsqu'une capture d'écran est effectuée, elle est :
La convention adoptée par Tivoli Systems consiste à attribuer l'extension .SCR aux fichiers de capture d'écran. Toutefois, il vous est permis de nommer les fichiers en leur associant n'importe quelle autre extension.
Pour effectuer une capture d'écran de l'hôte, procédez comme suit :
Remarque : Une fois que vous avez effectué la capture d'écran, la commande du menu Capture d'écran hôte devient inactive.
Si vous souhaitez procéder à la capture d'un autre écran hôte :
Il est possible de redimensionner la fenêtre de l'utilitaire de mappage EHLLAPI. Lorsque l'écran hôte n'est pas totalement visible, vous pouvez redimensionner la fenêtre jusqu'à ce que l'écran entier soit affiché. Si la fenêtre est trop grande, vous ne pouvez pas mapper les entrées situées à l'extérieur de l'écran hôte.
Remarque : Les sessions d'émulation de terminal ne sont utilisées que pour effectuer des captures d'écrans. Toutes les autres opérations de l'utilitaire de mappage EHLLAPI sont accomplies à l'aide de la boîte à outils du développeur TSD. Vous pouvez ainsi effectuer simultanément un grand nombre de captures, puis créer des mappes ultérieurement, et ce même si Communications Manager n'est pas installé sur votre machine.
Si vous souhaitez charger le fichier d'une capture d'écran effectuée précédemment, procédez comme suit :
Après avoir chargé un fichier de capture d'écran, la fonction Chargement de fichier de capture d'écran devient inactive. Si vous souhaitez charger le fichier d'une autre capture d'écran, procédez comme suit :
Une fois qu'un fichier de capture d'écran a été chargé, vous pouvez créer un fichier de mappe correspondant à cet écran.
Procédez comme suit pour sélectionner la zone dont l'entrée de mappe est créée :
Si le pointeur est déplacé trop rapidement, la zone en surbrillance peut éventuellement ne pas contenir le premier caractère de la zone. Lorsque cette situation se produit, répétez les étapes précédentes.
Pour créer une entrée correspondant à la zone concernée :
Pour éditer une entrée de mappe, procédez comme suit :
Remarque : Si vous cliquez deux fois sur un objet, cela revient à cliquer dessus une fois et à sélectionner l'option Edition d'entrée.
Pour supprimer une entrée de mappe, procédez comme suit :
Pour définir les informations d'en-tête du fichier de mappe, procédez comme suit :
Pour sauvegarder un fichier de mappe ne portant pas de nom, ou pour enregistrer le fichier sous un nom différent :
Si vous souhaitez sauvegarder un fichier de mappe déjà nommé, procédez comme suit :
L'application d'un fichier de mappe sur un écran permet à un utilisateur de consulter le fichier de mappe spécifié et de mettre en surbrillance les entrées de mappe rencontrées dans le fichier correspondant. Cette option s'avère utile lorsque les uilisateurs souhaitent ajouter ou modifier un fichier de mappe.
Pour appliquer un fichier de mappe à un écran :
Après avoir appliqué la mappe, vous pouvez l'éditer, la supprimer et y ajouter des entrées.
Lorsque vous affichez un écran ou qu'une mappe est appliquée à un écran, certaines commandes du menu Fichier deviennent indisponibles. Si vous devez effectuer une nouvelle capture d'écran ou charger un fichier de capture d'écran différent, vous devez au préalable réinitialiser l'affichage en cours.
Pour réinitialiser l'affichage en cours, procédez comme suit :
Pour changer la police de caractères utilisée dans la fenêtre de l'utilitaire :
Remarque : Le choix de la police n'est pas sauvegardé lorsque vous quittez l'utilitaire de mappage EHLLAPI.
Pour quitter l'utilitaire de mappage EHLLAPI en cours d'exécution, employez l'une des méthodes suivantes :
Si vous décidez de quitter l'application mais que vous n'avez pas sauvegardé vos dernières modifications, un message vous demande si vous souhaitez sauvegarder le fichier.
Si vous sélectionnez Oui et qu'aucun nom n'a été défini pour ce fichier, une boîte de dialogue Fichier s'affiche, vous invitant à indiquer un nom de fichier.
Cet exemple illustre l'emploi d'un écran AS/400 pour afficher les paramètres de réseau. Cet exemple indique les procédures vous permettant de :
Les fichiers d'exemples (intitulés example.scr, example.kb et example.map) sont accessibles depuis le répertoire OS2ASE.
L'écran d'hôte est semblable à l'exemple suivant :
Affichage des paramètres réseau du système :
Système :
S1028662
Nom actuel du système . . . . . . . .. . . : S1028662
Nom du système en attente . . . . . . . . . . . .:
ID de réseau local . . . . . . . . . . . . . : APPN
Nom du point de contrôle local. . . . . . . . . : S1028662
Emplacement local par défaut. . . . . . . . . . : S1028662
Mode par défaut . . . . . . . . . . . . . . . : BLANK
Type de noeud APPN . . . . . . . . . . . . . . :*ENDNODE
Nombre maximal de sessions intermédiaires. . : 200
Résistance d'ajout de routage . . . . . . . . .: 128
Point de contrôle/ID réseau serveur.. . .:
Suite...
Appuyez sur ENTREE pour continuer.
F3=Sortie F12=Annulation
Pour lancer l'exemple de l'utilitaire de mappage EHLLAPI, accomplissez les étapes suivantes :
Une fois les procédures de la section précédente exécutées, vous pouvez réaliser une capture d'écran.
Le nom du fichier sélectionné est Example.scr, bien qu'une interface porte généralement un nom plus évocateur, tel que dnetattr.scr. Sur la base du nom du fichier de capture d'écran, vous créez une mappe intitulée Example.map.
Pour créer cet exemple de manière simple et efficace :
La liste suivante indique le détail des informations relatives à chaque entrée de mappe :
Entrée de mappe | Description |
currentSystemName | Longueur : 8 - Format système : DEFAULT_FORMAT - Type TSD Script : STRING. |
pendingSystemName | Longueur : 8 - Format système : DEFAULT_FORMAT - Type TSD Script : STRING. |
localNetworkID | Longueur : 8 - Format système : LEFT_JUSTIFY - Type TSD Script : STRING. |
localCPName | Longueur : 8 - Format système : DEFAULT_FORMAT - Type TSD Script : STRING. |
dfltLocalLocation | Longueur : 8 - Format système : DEFAULT_FORMAT - Type TSD Script : STRING. |
dfltMode | Longueur : 8 - Format système : LEFT_JUSTIFY. |
APPNNodeType | Longueur : 8 - Format système : DEFAULT_FORMAT - Type TSD Script : INTEGER. |
maxNbrIntSess | Longueur : 4 - Format système : LEFT_JUSTIFY - Type TSD Script : INTEGER. |
routeAddRes | Longueur : 3 - Format système : LEFT_JUSTIFY - Type TSD Script : INTEGER. |
Ces formats système (autres que DEFAULT_FORMAT) sont utilisés pour les opérations de téléchargement vers l'amont. Dans le cas des téléchargements vers l'aval, l'espace vide est délimité par les valeurs saisies. Les attributs d'en-tête ne sont pas définis pour cette mappe, mais les paramètres utilisés sont les valeurs par défaut.
Lorsque vous avez créé toutes les entrées, vous devez sauvegarder la mappe sous le nom EXAMPLE.MAP. L'utilitaire de mappage EHLLAPI crée un fichier semblable à l'exemple qui suit. Cet exemple effectue un téléchargement simple vers l'aval. Il illustre les étapes fondamentales de la création de mappe au moyen de l'utilitaire de mappage EHLLAPI.
*REM Mapfile name is E:\EHLLAPI\MAPUTIL\example.map *HEADER CLEAR_FIRST = FALSE MOVE_CURSOR = TRUE
*FIELDS
currentSystemName, 3, 55, 8, SYSFORMAT, DEFAULT_FORMAT pendingSystemName, 4, 57, 8, SYSFORMAT, DEFAULT_FORMAT localNetworkID, 5, 55, 8, SYSFORMAT, LEFT_JUSTIFY localCPName, 6, 55, 8, SYSFORMAT, DEFAULT_FORMAT dfltLocalLocation, 7, 55, 8, SYSFORMAT, DEFAULT_FORMAT dfltMode, 8, 55, 8, SYSFORMAT, LEFT_JUSTIFY APPNNodeType, 9, 55, 8, SYSFORMAT, DEFAULT_FORMAT maxNbrIntSess, 10, 55, 4, SYSFORMAT, LEFT_JUSTIFY routeAddRes, 11, 55, 3, SYSFORMAT, LEFT_JUSTIFY Le segment de code TSD Script utilisant ce fichier de mappe serait :
TYPES
NetAttrRec IS RECORD currentSystemName :STRING; pendingSystemName :STRING; localNetworkID :STRING; localCPName :STRING; dfltLocalLocation :STRING; dfltMode :STRING; APPNNodeType :STRING; maxNbrIntSess :INTEGER; routeAddRes :INTEGER; $myDnloadMap {'EXAMPLE.MAP'}:STRING; END; ROUTIINES FUNCTION GetNetAttributes(VAL conn:EMUCONNECTION, REF netAttr:NetAttrRec):INTEGER IS
-- Vous êtes censé être déjà placé sur l'écran approprié.
VARIABLES rc :INTEGER; ACTIONS rc := EMUMapDownload(conn, netAttr.$myDnloadMap,netAttr); IF (rc < 1) THEN WinMessageBox($DESKTOP,'Erreur',$MBOK, 'Téléchrg. mappe retourne '& rc); END; Exit(rc); END; -- GetNetAttributes
Dans cette section, vous créez une entrée de mappe correspondant aux ID réseau du serveur. Ces numéros d'identification peuvent apparaître dans cinq zones différentes.
En déplaçant le pointeur entre le premier caractère de la première zone et le dernier caractère de la dernière zone, vous créez une entrée nommée srvrNetworkID reconnue par l'utilitaire de mappage comme une zone comportant plusieurs lignes. Une fonction de formatage définie par l'utilisateur nommée ParseSrvrNames est ainsi créée.
La fonction de formatage se présente de la manière suivante :
FUNCTION ParseSrvrNames(VAL inStr:STRING, REF srvrNetworkID:LIST OF STRING):BOOLEAN IS VARIABLES temp :STRING; ACTIONS temp := StrTrim(StrLTrim(inStr)); -- get rid of blank fields WHILE (Known(temp)) DO ListInsert(srvrNetworkID, StrCopy(temp,1,8)); temp := StrDelete(temp,1,80); END; Exit(TRUE); END; -- ParseSrvrNames
Vous déclarez srvrNetworkID sous la forme d'une liste de chaînes de caractères dans l'enregistrement :
NetAttrRec IS RECORD currentSystemName :STRING; pendingSystemName :STRING; localNetworkID :STRING; localCPName :STRING; dfltLocalLocation :STRING; dfltMode :STRING; APPNNodeType :STRING; maxNbrIntSess :INTEGER; routeAddRes :INTEGER; srvrNetworkID :LIST OF STRING; $myDnloadMap {'EXAMPLE.MAP'}:STRING; END;
Au moment du téléchargement vers l'amont, la liste est mise à jour avec les valeurs correctes. Cette méthode peut sembler plus pratique qu'un appel de EMUFillBuffer à répétition, ou que la création de zones fictives dans l'enregistrement TSD Script en vue de télécharger toutes les zones dans une mappe, suivie de l'incorporation simultanée de toutes les valeurs à la liste.
Tivoli Service Desk 6.0 Developer's Toolkit - Guide des API existantes