Riferimento Lingua del Tivoli Service Desk 6.0 Developer's Toolkit Script
Ritorna alla pagina principale
Tivoli Service Desk (TSD) utilizza un prodotto di recupero testo IBM denominato IM4T (Intelligent Miner for Text) per creare gli indici per le tabelle nel database. Gli indici creati possono essere utilizzati dagli analisti del service desk per trovare velocemente determinate voci (file di dati o documenti preesistenti) nel database che contiene determinate parole o combinazioni di parole. Gli indici non coinvolgono il formato d'origine nel quale i dati vengono memorizzati.
Questa sezione descrive come:
IM4T è incluso al software TSD e non vi sono ulteriori tasse di
licenza per utilizzarlo.
IM4T utilizza l'architettura client/server per indicizzare le tabelle del database. Tutti gli indici vengono creati e gestiti su un server solo. Ogni workstation client che esegue TPM si configura come un client per quel server.
For best results, we recommend this server be set up as an isolated machine with the following minimum specifications:
Windows/NT 200 MHz CPU with 128 MB RAM
Unix 200 MHz CPU with 128 MB RAM
Prima di poter utilizzare la capacità di recupero testo di TSD, è
necessario creare e configurare un server per gli indici. Il primo
passo di questo processo è quello di installare TSD sulla macchina
destinata a essere il server IM4T. E' necessario installare il
pacchetto denominato "Installazione server IM4T."
Per configurare un server IM4T, comportarsi nel modo seguente:
Risultato: Viene visualizzata la Finestra di gestione IMT del Tivoli Service Desk. Riempire i campi nel modo seguente:
Sezione/Campo | Informazioni richieste |
Nome | Nome del server |
Sezione Informazioni sulla connessione | |
Host | Nome IP del computer |
Porta | Numero di porta. E' possibile creare una voce nel file etc/servizi per questo server. Nota: Questo numero dovrebbe essere per una porta che non viene utilizzata da nessun altro programma sulla LAN. |
Sezione Informazioni attività | |
Massimo | Numero massimo (tra 1 e 100) di attività che possono essere gestite contemporaneamente dal servizio di inquiry |
Supero tempo | Tempo necessario al servizio di inquiry per ricevere le informazioni dal client |
Disponibile | Numero di attività da avviare all'avvio del server. |
E' possibile solo amministrare gli indici sulla macchina configurata come server IM4T.
Nota: Sotto il sistema operativo Unix, sarà inoltre
necessario essere collegati all'account
amministrativo imoadm creato al momento
dell'installazione di TSD.
E' possibile creare gli indici eseguendo il Programma di utilità Amministrazione recupero testo TSD (tsd_text.kbc). Questo è lo stesso programma di utilità utilizzato per configurare il server.
Il programma di utilità chiederà prima di effettuare il login all'origine dei dati TSD per cui stanno creando gli indici. Se si effettua il login a un'origine dati per cui nessun server IM4T è configurato, il programma di utilità chiederà di eseguire il collegamento.
Una volta collegati e una volta configurato il server, verrà visualizzato lo schermo principale del programma di utilità, "Gestione IM4T Tivoli Service Desk."
Il programma di utilità tsd_text crea indici delle colonne
Descrizione o Soluzione presenti in determinati tipi di record di
supporto di diagnostica Tivoli Problem Management (TPM). Se vi sono
molti record nel database, è più facile utilizzare IM4T per posizionare record di supporti di diagnostica
specifici piuttosto che utilizzare le caselle Descrizione o
Soluzione disponibili in una casella di dialogo Verifica.
La inquiry di testo può essere disponibile in queste caselle di
dialogo:
Nota:
Questo programma di utilità tsd_text viene utilizzato anche per creare indici di problemi, modifiche e descrizioni utilizzate durante l'analisi d'impatto in Tivoli Change Management. Per ulteriori dettagli, consultare Esecuzione analisi d'impatto.Con IM4T, è possibile creare nuovi indici e aggiornare quelli esistenti. In alcuni casi, potrebbe essere necessario cancellare gli indici. Creazione, aggiornamento e cancellazione degli indici possono richiedere l'impiego di una periodo di tempo significativo, dipendente dalla dimensione del database. Se help desk non è attivo durante la notte, considerare l'avvio delle attività di gestione sugli indici IM4T al termine della giornata.
E' necessario creare indici prima che l'analista help desk possa utilizzare le funzioni di Verifica testo disponibili in queste caselle di dialogo Verifica: Verifica problemi comuni, Verifica messaggi di errore, Verifica ultime news e Verifica soluzioni.
Per essere certi che gli analisti help desk ricerchino le più recenti soluzioni e le descrizioni dei problemi, è necessario aggiornare gli indici su una base regolare. Poiché un processo di aggiornamento può richiedere l'impiego di una notevole quantità di tempo, considerare di avviarlo al termine della giornata. Una volta cominciato, il processo può essere lasciato incustodito.
Per qualche motivo, si potrebbe desiderare di cancellare un indice IM4T. Se un indice sembra essere danneggiato, cancellare e creare nuovamente l'indice. I dati del database non vengono cancellati quando si cancella un indice.
Lo scopo dell'interrogazione di un indice dei testi di database consiste nel localizzare rapidamente i campi nel database. Per facilitare il tutto, il comando SQLSelect inquiry e agisce sulla presenza di una sequenza di caratteri escape speciale, $TextSearch. Questa sequenza consente di interrogare un indice di Recupero testo come un database. (Una voce valida in una sequenza $TextSearch è una clausola WHERE valida per un'origine dati Recupero testo). Rivisualizzare i seguenti esempi. Selezionare tutte le soluzioni relative alla manutenzione dell'hardware.
Select * from solutions where $TextSearch (contains 'hardware' & 'maintenance')
Selezionare tutte le soluzioni attive relative alla manutenzione dell'hardware.
Select * from solutions where $TextSearch (contains 'hardware' & 'maintenance') AND Active = 1
Se più indici Recupero testo vengono associati a una singola tabella in un database, è necessario specificare il nome dell'indice nella clausola $TextSearch. Il nome dell'indice deve precedere la query e deve essere seguito da un punto e virgola (;).
Select * from solutions where $TextSearch (solNDX; description contains 'hardware') AND Active = 1 OR solution_id > 3000
Per configurare un server IM4T comportarsi nel seguente modo:
Sezione/Campo | Informazioni richieste |
Ricerca servizio | Nome dell'istanza di servizio (uguale alle informazioni sul server) |
Host | Nome IP del server IM4T |
Porta | Numero di porta. Nota: Questo numero dovrebbe essere per una porta che non viene utilizzata da altri programmi sulla LAN. Questo numero sarà uguale al numero di porta del server. |
Pulsante Avanzate | Consente di impostare opzioni avanzate |
Questa sezione è un riferimento alle comuni funzioni di recupero dei documenti utilizzate con IM4T.
FUNCTION FTRSQLTextIndexCreate(IndexName : STRING, Fields : LIST OF IndexFieldRec) : INTEGER;
IndexName deve avere una lunghezza massima di otto caratteri. Il tipo IndexFieldRec viene dichiarato nel modo seguente:
IndexFieldRec IS RECORD TableName : STRING; --Name of the table to be indexed FieldName : STRING; --Name of the field to be indexed Flags : INTEGER; --Combination of KEY, VALUE,LITERAL, and LONGCHAR END;
Questo record viene definito in ftr.kb.
Le definizioni per gli indicatori in IndexFieldRec vengono elencati nella seguente tabella.
Indicatore |
Descrizione |
SAI_DBTRNDX_KEY | Un campo chiave nella tabella di database. Almeno un IndexFieldRec inoltrato a FTRSQLTextIndexCreate deve avere questo indicatore impostato. SAI_DBTRNDX_VALUE indica che la colonna contiene un valore numerico. |
SAI_DBTRNDX_LITERAL | Indica che la colonna contiene un valore literal (solitamente una stringa) |
AI_DBTRNDX_LONGCHAR | Indica che la colonna contiene una stringa di caratteri (generalmente un campo testo long). Almeno un IndexFieldRec inoltrato a FTRSQLTextIndexCreate deve avere questo indicatore impostato. |
Nota: Gli indici dei testi di database devono contenere ogni campo chiave primario nella tabella inserita in un indice e almeno un campo di tipo LONGCHAR.
In base ai dati ricevuti, FTRSQLTextIndexCreate crea un indice con le seguenti caratteristiche: tutti i campi sono inseriti in un indice e possono essere considerati come parte della colonna testo della tabella degli indici. Tutti i campi chiave vengono memorizzati nella loro colonna nella tabella indice. Ad esempio:
VARIABLES NewIndex : LIST OF IndexFieldRec; Entry : IndexFieldRec; ACTIONS Entry.TableName = `EQ_Defects'; Entry.FieldName = `Defect_Title'; Entry.Flags = SAI_DBTRNDX_LITERAL; ListInsert(NewIndex,Entry); Entry.TableName = `EQ_Defects'; Entry.FieldName = `Defect_Desc_Text'; Entry.Flags = SAI_DBTRNDX_LONGCHAR; ListInsert(NewIndex, Entry); Entry.TableName = `EQ_Defects'; Entry.FieldName = `Defect_Steps_Text'; Entry.Flags = SAI_DBTRNDX_LONGCHAR; ListInsert(NewIndex, Entry); Entry.TableName = `EQ_Defects'; Entry.FieldName =`Defect_Title'; Entry.Flags = BitOr(SAI_DBTRNDX_KEY, SAI_DBTRNDX_VALUE); ListInsert(NewIndex, Entry); FTRSQLTextIndexCreate(`DefNDX', NewIndex); END;
Codici di ritorno |
Descrizione |
1 | Esito positivo |
2001 | DBTR ERR NOME TABELLA NON VALIDO |
2002 | DBTR ERR NOME INDICE NON VALIDO |
2003 | DBTR ERR CAMPO INDICE NON VALIDO |
(altro) | Codice di errore (Fare riferimento a Messaggi errore/esito positivo IM4T) |
FUNCTION FTRSQLTextIndexDelete(IndexName : STRING) : INTEGER;
Funzione | Descrizione |
IndexName | Specifica il nome di un indice dei testi di database da cancellare |
FTRSQLTextIndexDelete trova l'indice specificato e rilascia l'indice. Ad esempio:
FTRSQLTextIndexDelete(`DEFNDX');
Codici di ritorno |
Descrizione |
1 | Esito positivo |
2002 | DBTR_ERR_INVALID_INDEX_NAME |
(altro) | Codice di errore (Fare riferimento a Messaggi errore/esito positivo IM4T) |
FUNCTION FTRSQLTextIndexUpdate(IndexName : STRING, Method : INTEGER) : INTEGER;
Funzione | Descrizione |
IndexName | Specifica il nome dell'indice da aggiornare |
Method | Specifica se l'indice è aggiornato o
creato nuovamente.
Questa variabile può avere uno di due valori:
|
FTRSQLTextIndexUpdate trova l'indice specificato
ed esegue l'operazione specificata in Method. Ad esempio:
FTRSQLTextIndexUpdate (`DEFNDX', SAI_NDX_REBUILD);
Codici di ritorno |
Descrizione |
1 | Esito positivo |
2002 | DBTR ERR NOME INDICE NON VALIDO |
(altro) | Codice di errore (Fare riferimento a Messaggi errore/esito positivo IM4T) |
FUNCTION FTRSQLTextIndexUpdateAll(Method : INTEGER):INTEGER;
Method specifica se gli indici sono aggiornati o ricreati. Questa variabile può avere uno di due valori:
SAI_NDX_UPDATE è il default. Se gli indici già esistono, vengono aggiornati per tenere conto delle modifiche nei dati. Se gli indici non esistono ancora (cioè, vengono solo definiti), vengono creati in questo punto.
SAI_NDX_REBUILD crea gli indici, a seconda se esistono o meno.
FTRSQLTextIndexUpdateAll aggiorna l'indice di testo del database esistente all'origine dei dati corrente utilizzando il metodo definito da Metodo. Esempio:
FTRSQLTextIndexUpdateAll(SAI_NDX_REBUILD);
Codici di ritorno |
Descrizione |
1 | Esito positivo |
(altro) | Codice di errore (Fare riferimento alla sezione Messaggi errore/esito positivo IM4T) |
FTRSQLSetFilterWhere (IndexName : STRING , WhereStmt : STRING) : INTEGER;
Questa funzione imposterà il Dove filtrare di un indice se l'indice esiste.
ret:=FTRSQLSetFilterWhere('MYINDEX', 'USER_ID>10000');
Codici di ritorno |
Descrizione |
1 | Esito positivo |
2002 | DBTR ERR NOME INDICE NON VALIDO |
2005 | DBTR ERR ISTRUZIONE WHERE NON VALIDA |
(altro) | Codice di errore (Fare riferimento alla sezione Messaggi errore/esito positivo IM4T) |
FTRSQLGetFilterWhere (IndexName : STRING, WhereStmt : STRING) : INTEGER;
Questa funzione richiamerà il Dove filtrare di un indice se Dove filtrare esiste.
WhereStmt : STRING;
Codici di ritorno |
Descrizione |
1 | Esito positivo |
2002 | DBTR ERR NOME INDICE NON VALIDO |
(altro) | Codice di errore (Fare riferimento alla sezione Messaggi errore/esito positivo IM4T) |
Sintassi
FTRSQLDeleteFileterWhere (WhereStmt : STRING) : INTEGER;
Questa funzione cancella il Dove filtrare di un indice se l'indice esiste.
ret:=FTRSQLDeleteFilterWhere('MYINDEX');
Codici di ritorno |
Descrizione |
1 | Esito positivo |
2002 | DBTR ERR NOME INDICE NON VALIDO |
(altro) | Codice di errore (Fare riferimento alla sezione Messaggi errore/esito positivo IM4T) |
Sintassi
FTRListIndexes (Servername : STRING , ResultList : LIST OF STRINGS ) : INTEGER;
Questa funzione elenca tutti gli indici disponibili di un server.
IdxList:LIST OF STRING; ret:=FTRListIndexes('MYSRVR',IdxList);
Codici di ritorno |
Descrizione |
1 | Esito positivo |
2002 | DBTR ERR NOME INDICE NON VALIDO |
(altro) | Codice di errore (Fare riferimento alla sezione Messaggi errore/esito positivo IM4T) |
FTRSQLTextIndexCreate
Il seguente
esempio è un indice per la tabella delle Soluzioni TPM (Tivoli
Problem Management) e visualizza
il risultante messaggio errore/esito positivo dalla chiamata.
KNOWLEDGEBASE MakeNDX;
USES TEXTRET;
ROUTINES
PROCEDURE TestMain;
PRIVATE
ROUTINES
PROCEDURE TestMain IS
VARIABLES
Col : IndexFieldRec;
ColList : LIST OF IndexFieldRec;
Lines : List of String;
nRC : Integer;
whdl : Window;
ACTIONS
SQLCommand(`connect TOOLKIT');
Col.TableName := 'solutions';
Col.FieldName := 'solution_id';
Col.Flags := BitOr (SAI_DBTRNDX_VALUE,
SAI_DBTRNDX_KEY);
ListPush(ColList, Col);
Col.TableName := 'dbo.solutions';
Col.FieldName := 'description';
Col.Flags := SAI_DBTRNDX_LONGCHAR;
ListPush(ColList, Col);
nRC := FTRSQLTextIndexCreate('solndx', ColList);
ListInsert(Lines, nRC, $BEFORE);
WinCreateScrollWindow($Desktop, whdl,
$NullHandler,
5,5,50,15,
'Create Index',
$SystemMonospaced,
10,
$WinDefaultStyle);
WinWriteLN(whdl, Lines);
WinWait(whdl);
END;
Di seguito viene riportato un esempio di codice di una query di indice.
KNOWLEDGEBASE querysol; ROUTINES PROCEDURE TestMain; PRIVATE ROUTINES PROCEDURE TestMain IS VARIABLES Lines : List of String; nRC : Integer; whdl : Window; cursor : SQLCURSOR; System : String; ACTIONS nRC := SQLCommand('CONNECT ADVISOR'); IF (nRC <> 1) THEN EXIT; END; ListInsert(Lines, nRC, $BEFORE); nRC := SQLSelect(cursor, 'SELECT SYSTEM FROM SOLUTIONS WHERE $TextSearch(SOLNDX;DESCRIPTION CONTAINS ''PROBLEM'')'); ListInsert(Lines, nRC, $BEFORE); nRC := SQLFetch(cursor, System); WHILE (nRC = 1) DO ListInsert(Lines, System, $BEFORE); nRC := SQLFetch(cursor, System); END; ListInsert(Lines, nRC, $BEFORE); SQLCloseCursor(cursor); WinCreateScrollWindow($Desktop, whdl, $NullHandler, 5,5,50,15, 'Query Index', $SystemMonospaced, 10, BitOr($WinDefaultStyle, $WinVScroll)); WinWriteLN(whdl, Lines); WinWait(whdl); END;
Codice di errore | Messaggio di errore |
-17407 | SQLERR_NO_KEY |
-17408 | SQLERR_NO_LONGCHAR |
-17409 | SQLERR_COL_TYPE_CONFLICT |
-17410 | SQLERR_INDEX_NAME_NOT_FOUND |
-17411 | SQLERR_BAD_KEY_TYPE |
-17415 | SQLERR_TR_NOT_INITIALIZED |
-17417 | SQLERR_INVALID_TEXTSEARCH |
-17420 | SQLERR_INVALID_INDEX_NAME |
-17424 | SQLERR_TEXTMINER_DATA_BUILD |
-17425 | SQLERR_CANT_DETERMINE_SERVER_LOCATION |
-17426 | SQLERR_SECTION_FILE_SYNTAX_ERROR |
-17427 | SQLERR_DEFINITION_FILE_SYNTAX_ERROR |
-17428 | SQLERR_CANT_OPEN_FILE |
-17429 | SQLERR_CANT_WRITE_FILE |
-17430 | SQLERR_CANT_READ_FILE |
-17431 | SQLERR_TABLE_NAME_NOT_SET |
-17432 | SQLERR_ENVIRONMENT_VARIABLE_NOT_SET |
-17433 | SQLERR_INVALID_REMOTE_PROCEDURE |
-17434 | SQLERR_MISSING_LANGUAGE |
-17435 | SQLERR_CANT_GET_CODEPAGE |
-17700 | SQLERR_NOT_ENOUGH_MEMORY |
-17701 | SQLERR_DICTIONARY_NOT_FOUND |
-17702 | SQLERR_STOPWORD_IGNORED |
-17703 | SQLERR_CCS_NOT_SUPPORTED |
-17704 | SQLERR_LANGUAGE_NOT_SUPPORTED |
-17705 | SQLERR_CONFLICT_WITH_INDEX_TYPE |
-17706 | SQLERR_INVALID_MASKING_SYMBOL |
-17707 | SQLERR_INDEX_GROUP_SEARCH_ERROR |
-17708 | SQLERR_INDEX_SPECIFIC_ERROR |
-17709 | SQLERR_UNEXPECTED_ERROR |
-17710 | SQLERR_DATASTREAM_SYNTAX_ERROR |
-17711 | SQLERR_UNKNOWN_SESSION_POINTER |
-17712 | SQLERR_PROCESSING_LIMIT_EXCEEDED |
-17713 | SQLERR_REQUEST_IN_PROGRESS |
-17714 | SQLERR_MAX_NUMBER_OF_RESULTS |
-17715 | SQLERR_SERVER_NOT_AVAILABLE |
-17716 | SQLERR_SERVER_BUSY |
-17717 | SQLERR_SERVER_CONNECTION_LOST |
-17718 | SQLERR_INDEX_DELETED |
-17719 | SQLERR_INDEX_SUSPENDED |
-17720 | SQLERR_INDEX_NOT_ACCESSIBLE |
-17721 | SQLERR_EMPTY_QUERY |
-17722 | SQLERR_EMPTY_INDEX |
-17723 | SQLERR_FUNCTION_DISABLED |
-17724 | SQLERR_FUNCTION_IN_ERROR |
-17725 | SQLERR_INSTALLATION_PROBLEM |
-17726 | SQLERR_COMMUNICATION_PROBLEM |
-17727 | SQLERR_IO_PROBLEM |
-17728 | SQLERR_WRITE_TO_DISK_ERROR |
-17729 | SQLERR_MAX_NUMBER_OF_BUSY_INDEXES |
-17730 | SQLERR_UNKOWN_SECTION_NAME |
-17731 | SQLERR_DOCMOD_READ_PROBLEM |
-17732 | SQLERR_INCORRECT_AUTHENTICATION |
-17733 | SQLERR_CONFLICTING_TASK_RUNNING |
-17734 | SQLERR_NO_ACTION_TAKEN |
-17735 | SQLERR_LS_NOT_EXECUTABLE |
-17736 | SQLERR_LS_FUNCTION_FAILED |
-17737 | SQLERR_MAX_NUMBER_OF_TASKS |
-17738 | SQLERR_MISSING_DEFAULT_MODEL |
-17739 | SQLERR_UNKNOWN_DOCUMENT_MODEL-NAME |
-17740 | SQLERR_MEMBER_OF_INDEX_GROUP |
-17741 | SQLERR_UNKNOWN_INDEX_NAME |
-17742 | SQLERR_INDEX_ALREADY_OPENED |
-17743 | SQLERR_MAX_NUMBER_OF_OPEN_INDEXES |
-17744 | SQLERR_CONTINUATION_MODE_ENTERED |
-17745 | SQLERR_EMPTY_LIST |
-17746 | SQLERR_SERVER_IN_ERROR |
-17747 | SQLERR_FUNCTION_NOT_SUPPORTED |
-17748 | SQLERR_UNKNOWN_INDEX_TYPE |
-17749 | SQLERR_INCORRECT_INDEX_NAME |
-17750 | SQLERR_INCORRECT_LS_EXECUTABLES |
-17751 | SQLERR_INCORRECT_LIBRARY_ID |
-17752 | SQLERR_INCORRECT_LOCATION |
-17753 | SQLERR_INDEX_ALREADY_EXISTS |
-17754 | SQLERR_MAX_NUMBER_OF_INDEXES |
-17755 | SQLERR_LOCATION_IN_USE |
-17756 | SQLERR_UNKNOWN_SERVER_NAME |
-17757 | SQLERR_UNKNOWN_COMMUNICATION_TYPE |
-17758 | SQLERR_UNKNOWN_SERVER_INFORMATION |
-17759 | SQLERR_INCORRECT_HANDLE |
-17760 | SQLERR_QUERY_TOO_COMPLEX |
Codice di avvertenza | Messaggio di avvertenza |
-17510 | SQLWARN_CFG_NULL_ITEM |
-17511 | SQLWARN_TEXTMINER_CLEANUP_ERROR |
-17512 | SQLWARN_PARTIAL_FAILURE |
Per ulteriori informazioni consultare la documentazione relativa
a Intelligent Miner for Text (IM4T) richiamando il sito:
http://obelix.ae.boeblingen.ibm.com/docu/imt4t.v23/index.html
Riferimento Lingua del Tivoli Service Desk 6.0 Developer's Toolkit Script