Manuale per la progettazione d'interfaccia Tivoli Service Desk 6.0 Developer's Toolkit
I file di definizione utilizzati da EHLLAPI sono file di testo ASCII. Esistono due sezioni in un file di definizione: l'Intestazione e il Campo.
Le informazioni sull'Intestazione contengono attributi globali per un file di definizione. Ad esempio, è possibile specificare che TSD Script Interpreter esegua ERASE_EOF prima di riempire ciascun campo.
Il formato per un'intestazione è:
*HEADER CLEAR_FIRST = {{TRUE or ON}|{FALSE or OFF}} MOVE_CURSOR = {{TRUE or ON}|{FALSE or OFF}} LIBRARY = {kbc library to use as the default for user- defined format functions}
E' necessario che l'intestazione sia sempre la prima sezione del file di definizione. Le specifiche sono:
Questa sezione specifica i campi host e la loro relazione con i dati TSD Script. In sostanza, ogni riga della sezione campi collega la posizione di un campo dati host a un campo record TSD Script. In alternativa, se i dati da trasferire consistono in una singola variabile TSD Script, una riga nella sezione campo collega la posizione del campo dati host con quel nome variabile TSD Script. Ogni riga della sezione campi viene denominata voce di definizione.
Il formato della sezione campi per un file di definizione è:
*FIELDS {field}[, ]{row}[, ]{{col}[, ]{{len} {{USERFORMAT [, ]{[file:]routinename}|{SYSFORMAT[, ]{constant [constant ...]}}
E' necessario che ciascun segmento di una voce di definizione sia separato da spazi bianchi (uno o più spazi vuoti o separatori) o da una virgola. Ciascun segmento è descritto di seguito:
E' necessario che ciascun campo dati host venga convertito in o da un tipo TSD Script.
Per ciascun tipo di campo semplice TSD Script, alcuni formati di sistema vengono applicati ai tipi.
I formati di sistema possono essere combinati per elencare più di un formato di sistema per un campo. Se si ha una stringa che si desidera allineata a sinistra e con aggiunta di zeri quando la si carica, è possibile farlo scrivendo una parte di codice TSD Script o specificando LEFT_JUSTIFY ZERO_PAD come formato di sistema nel file di definizione. L'utilizzo del formato di sistema è più semplice e viene eseguito in modo più veloce rispetto a una routine di conversione TSD Script. A meno che non sia necessario scrivere una routine di conversione TSD Script speciale, è consigliabile utilizzare il formato di sistema.
L'applicazione di un formato di sistema dipende dal tipo semplice di TSD Script formattato. Sono elencati di seguito i tipi semplici di TSD Script, i formati di sistema applicabili e le descrizioni associate.
Tipo | Descrizione |
STRING |
|
INTEGER |
|
BOOLEAN |
|
REAL |
|
TIME |
|
DATE |
|
In alcune circostanze, è possibile scrivere funzioni di formato proprie nel TSD Script. Una funzione di formato definito dall'utente accetta dati di immissione, li converte nel nuovo formato e restituisce un valore Boolean che indica la riuscita dell'operazione. Il prototipo per le funzioni di formato definito dall'utente è:
FUNCTION {funcname}(VAL {source}:{sourcetype}, REF {target}:{targettype}):BOOLEAN
Di seguito sono elencate spiegazioni sulle funzioni di formato definite dall'utente:
Funzione di formato definito dall'utente | Descrizione |
sourcetype |
|
targettype |
|
returntype | Il tipo di restituzione deve essere BOOLEAN. Se la funzione restituisce FALSE, TSD Script Interpreter presume che si è verificato un errore e restituisce EMUERR_FORMAT_FN_FAILURE (-7005) al chiamante. Se la funzione di conversione restituisce TRUE ma il valore di destinazione è impostato su $Unknown, TSD Script Interpreter presume la riuscita della conversione e compie l'operazione. Nel caso di uno scaricamento, la variabile TSD Script o il campo record riceve un valore $Unknown. Nel caricamento, TSD Script Interpreter salta il campo. |
Poiché le regole per i tipi differiscono a seconda della direzione del flusso di dati, è necessario che una definizione comprenda funzioni dell'utente, sia dedicata al caricamento o allo scaricamento a meno che entrambi i tipi, origine e destinazione, non siano STRING.
Ad esempio, supporre di convertire un codice di severità TPM, che è numerico, in una scala alfabetica (ad esempio, 1 in A, 2 in B e così via). Inoltre, durante uno scaricamento, è possibile convertire dalla scala alfabetica di nuovo a quella numerica. Innanzitutto, viene scritta una funzione TSD Script per modificare la scala numerica in quella alfabetica (per il caricamento):
FUNCTION ToAlpha(VAL inSeverity:INTEGER, REF outSeverity:STRING):BOOLEAN IS ACTIONS outSeverity := Char(64 + inSeverity); Exit(TRUE); END; -- ToAlpha
Successivamente, viene creata una routine per convertire di nuovo la scala alfabetica in quella numerica (per lo scaricamento):
FUNCTION ToNumeric(VAL inSeverity:STRING, REF outSeverity:INTEGER):BOOLEAN IS ACTIONS outSeverity := CharCode(StrUpper(inSeverity)) - 64; END; -- ToNumeric
Presumere che queste funzioni siano memorizzate in un file denominato CONVERT. Nella definizione di severità del campo di definizione caricamento, la funzione ToAlpha viene specificata come segue:
SEVERITY 10 10 1 USERFORMAT CONVERT:TOALPHA
Nella definizione di severità del campo di definizione scaricamento, la funzione ToNumeric viene specificata come segue:
SEVERITY 10 10 1 USERFORMAT CONVERT:TONUMERIC
Sebbene i file di definizione siano semplici, la creazione manuale di file di definizione per un'intera applicazione di interfaccia può richiedere del tempo.
La determinazione in modo corretto delle posizioni dello schermo host tramite il conteggio delle righe e delle colonne è soggetta all'errore, specialmente quando lo sviluppatore deve confrontarsi con più schermi, ognuno dei quali contiene più campi.
La maggior parte degli sviluppatori d'interfaccia preferisce lavorare sulla logistica dell'interfaccia.
La modifica del file di definizione in una data successiva (o da parte di qualcun altro) risulta difficile se l'utente dispone solo del file di testo da consultare.
Per risolvere questi problemi, i Sistemi Tivoli hanno creato il Programma di utilità di definizione EHLLAPI.
Il Programma di utilità di definizione EHLLAPI fornisce un modo intuitivo per creare file di definizione utilizzati da EMUMapUpload e EMUMapDownload di TSD Script.
Il Programma di utilità di definizione EHLLAPI consente di catturare gli schermi host e memorizzarli come file di testo (file SCR). I file di definizione, basati sugli schermi catturati, vengono creati quando sono selezionati i campi per cui si desidera creare le voci del campo. Per selezionare le voci del campo, è possibile fare clic su esse e trascinarle nei campi.
Inoltre, il Programma di utilità di definizione EHLLAPI è utile per la gestione dell'interfaccia poiché il tool carica i file SCR (precedentemente catturati) e applica ogni file di definizione allo schermo. Con il Programma di utilità di definizione EHLLAPI, le voci del campo vengono create, visualizzate, modificate e cancellate in modo visivo e intuitivo.
Il Programma di utilità di definizione EHLLAPI è scritto interamente in TSD Script. Se si desidera apportare modifiche al codice TSD Script, i Sistemi Tivoli consigliano di effettuare una copia di riserva del codice originale (maputil.kb, mapentry.df) prima di iniziare.
Per utilizzare il Programma di utilità di definizione EHLLAPI, è necessario avere installato TSD Developer's Toolkit sulla propria macchina. Per utilizzare l'opzione Cattura, è necessario installare anche EHLLAPI Extensions for TSD Developer's Toolkit.
Per avviare il tool:
Quando si consultano schermi catturati dall'host, è possibile vedere caratteri non visibili nella finestra di terminale. Questi sono caratteri host nascosti che agiscono da delimitatori di campo. Il Programma di utilità di definizione EHLLAPI non elimina questi caratteri, perchè possono essere di ausilio nel determinare dove iniziano e finiscono i campi di dati.
La prima operazione con cui è necessario familiarizzare, è la cattura di uno schermo host. Questo è il primo passo necessario nell'impostazione di un'operazione di caricamento/scaricamento per un qualsiasi schermo host.
Quando si cattura uno schermo, esso viene:
I Sistemi Tivoli hanno adottato la convenzione di apporre l'estensione .SCR ai file di scermo catturato; tuttavia è possibile scegliere una qualsiasi estensione quando si denomina il file.
Per catturare uno schermo host:
Nota: Una volta catturato uno schermo, il comando del menu Cattura schermo host diventa inattivo.
Se si desidera catturare un altro schermo host:
La finestra Programma di utilità di definizione EHLLAPI è ridimensionabile. Se lo schermo host non è completamente visibile, è possibile ridimensionare la finestra fino a quando l'intero schermo non sarà visibile. Non è possibile creare voci di definizione per le aree al di fuori dello schermo host se la finestra è troppo ampia.
Nota: Vengono utilizzate sessioni di emulazione di terminale solo per catturare schermi. Tutte le altre operazioni del Programma di utilità di definizione EHLLAPI utilizzano solo TSD Developer's Toolkit. Ciò consente di catturare contemporaneamente un certo numero di schermi e crearne, in seguito, le definizioni, anche utilizzando una macchina che non ha CM.
Se si desidera caricare un file di scermo precedentemente catturato:
Una volta caricato un file di scermo, Carica file di scermo diventa inattivo. Se si desidera caricare un altro schermo:
Una volta caricato un file di scermo, è possibile creare un file di definizione per quello schermo.
Per selezionare il campo per cui viene creata una voce di definizione:
Se il puntatore viene trascinato troppo velocemente, è possibile che l'area evidenziata non includa il primo carattere del campo. Se si verifica ciò, ripetere i passi sopra elencati.
Per creare una voce per l'area evidenziata:
Per modificare una voce di definizione:
Nota: Fare doppio clic su un oggetto equivale a fare clic una volta su esso e a selezionare Modifica voce.
Per cancellare una voce di definizione:
Per impostare informazioni sull'intestazione per il file di definizione:
Per salvare un file di definizione non denominato (o se si desidera salvare il file con un nome diverso):
Se si desidera salvare una definizione già denominata:
L'applicazione di un file di definizione a uno schermo consente a un utente di leggere il file di definizione specificato e di evidenziare le voci di definizione trovate nel file di definizione. Ciò è utile quando agli utenti occorre aggiungere o modificare un file di definizione.
Per applicare un file di definizione a uno schermo:
Una volta applicata la definizione, è possibile modificare, cancellare e aggiungere voci alla definizione.
Quando si visualizza uno schermo o se si dispone di una definizione applicata a uno schermo, alcuni comandi del menu File non sono disponibili. Se è necessario catturare un nuovo schermo o caricare un file di scermo diverso, è necessario ripristinare la visualizzazione corrente.
Per ripristinare la visualizzazione corrente:
Per modificare il font utilizzato sulla finestra programma di utilità:
Nota: L'impostazione del font non viene salvata quando si chiude il Programma di utilità di definizione EHLLAPI.
E' possibile uscire dall'esecuzione del Programma di utilità di definizione EHLLAPI utilizzando uno dei seguenti metodi:
Se si seleziona di uscire, ma non sono state salvate le ultime modifiche, viene visualizzato un messaggio che richiede se si desidera salvare il file.
Se si selezione Sì e il file non è stato denominato, viene visualizzata una casella di dialogo File che consente di denominare il file.
Per questo esempio, viene visualizzato uno schermo AS/400 che mostra gli attributi di rete. Durante l'esempio, è possibile:
E' possibile trovare i file di esempio (denominati example.scr, example.kb e example.map) nella directory OS2ASE.
Lo schermo host appare come nel seguente esempio:
Visualizza il sistema degli attributi di rete:
Sistema:
S1028662
Nome sistema corrente . . . . . . . . .. . . : S1028662
Nome sistema in sospeso . . . . . . . . . . . .:
ID rete locale . . . . . . . . . . . . . : APPN
Nome CP locale . . . . . . . . . : S1028662
Ubicazione locale di default . . . . . . . . . . : S1028662
Modalità di default . . . . . . . . . . . . . . . : BLANK
Tipo di nodo APPN . . . . . . . . . . . . . . :*ENDNODE
Numero massimo di sessioni intermedie. . : 200
Route addition resistance . . . . . . . . .: 128
ID rete del server/nome punto controllo .. . .:
Altro...
Premere Invio per continuare.
F3=Esci F12=Annulla
Per utilizzare l'esempio del Programma di utilità di definizione EHLLAPI seguire queste istruzioni:
Una volta completate le procedure nella sezione precedente, è possibile catturare uno schermo.
Viene selezionato example.scr come nome del file di scermo, sebbene un'interfaccia reale probabilmente utilizza un nome più descrittivo come dnetattr.scr. Utilizzando il nome del file di scermo come base, si crea una definizione denominata example.map.
Per rendere semplice ed efficace questo esempio:
Il seguente elenco espone in dettaglio le informazioni utilizzate per ciascuna voce di definizione:
Voce di definizione | Descrizione |
Nomesistemacorrente | Lunghezza 8, il formato di sistema è DEFAULT_FORMAT, il tipo di TSD Script è STRING. |
Nomesistemainsospeso | Lunghezza 8, il formato di sistema è DEFAULT_FORMAT, il tipo di TSD Script è STRING. |
IDretelocale | Lunghezza 8, il formato di sistema è LEFT_JUSTIFY, il tipo di TSD Script è STRING. |
NomeCPlocale | Lunghezza 8, il formato di sistema è DEFAULT_FORMAT, il tipo di TSD Script è STRING. |
Ubicazionelocaledflt | Lunghezza 8, il formato di sistema è DEFAULT_FORMAT, il tipo di TSD Script è STRING. |
Modalitàdflt | Lunghezza 8, il formato di sistema è LEFT_JUSTIFY. |
TiponodoAPPN | Lunghezza 8, il formato di sistema è DEFAULT_FORMAT, il tipo di TSD Script è INTEGER. |
NumMaxSessInterm | Lunghezza 4, il formato di sistema è LEFT_JUSTIFY, il tipo di TSD Script è INTEGER. |
routeAddRes | Lunghezza 3, il formato di sistema è LEFT_JUSTIFY, il tipo di TSD Script è INTEGER. |
Questi formati di sistema (diversi da DEFAULT_FORMAT) vengono utilizzati da operazioni di caricamento. Per operazioni di scaricamento, lo spazio bianco viene eliminato dai valori. Gli attributi di intestazione non sono impostati per questa definizione, vengono utilizzate le impostazioni di default.
Una volta create tutte le voci, salvare la definizione come EXAMPLE.MAP. Il Programma di utilità di definizione EHLLAPI crea un file che appare come nel seguente esempio. Questo esempio esegue un semplice scaricamento. Tuttavia, illustra le istruzioni di base per creare una definizione tramite il Programma di utilità di definizione 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 The TSD Script code segment to use this map file would look like:
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
-- Assumes you are already at the right screen.
VARIABLES rc :INTEGER; ACTIONS rc := EMUMapDownload(conn, netAttr.$myDnloadMap,netAttr); IF (rc < 1) THEN WinMessageBox($DESKTOP,'Error',$MBOK, 'Map dnload returns '& rc); END; Exit(rc); END; -- GetNetAttributes
In questa sezione, viene creata una voce di definizione per gli ID di rete del server. Esistono cinque campi che possono contenere un ID di rete del server.
Trascinando il puntatore dal primo carattere del primo campo all'ultimo carattere dell'ultimo campo, viene creata una voce denominata srvrNetworkID e considerata un campo a più righe dal Programma di utilità di definizione EHLLAPI. Viene creata una funzione di formato dell'utente, denominata ParseSrvrNames.
La funzione di formato appare come segue:
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
Dichiarare srvrNetworkID come un elenco di stringhe nel record:
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;
Quando la funzione di scaricamento è in esecuzione, l'elenco viene aggiornato con i valori corretti. E' possibile che questo metodo risulti più flessibile rispetto al richiamare ripetutamente EMUFillBuffer o alla creazione di campi fittizi nel record TSD Script per scaricare tutti i campi in una definizione e inserire i valori uno alla volta nell'elenco.
Manuale Tivoli Service Desk 6.0 Developer's Toolkit Legacy API