Nel corso dello sviluppo dei moduli del panorama eXtraWay sono sorte diverse esigenze. Tra esse quella di poter eseguire altri moduli in momenti strategici.
L'esecuzione di tali moduli, però, non deve avvenire in modo incontrollato per evitare pericolosi abusi di una simile funzionalità.
Per sopperire quindi a quest'esigenza è stato creato un modulo denominato xwgl che può essere utilizzato dai programmi del panorama eXtraWay per eseguire in momenti strategici alcune particolari operazioni.
L'esigenza di non compiere abusi di questo modulo si risolve, per così dire, imponendo che l'esecuzione di un comando sia corredata da un codice di controllo che solo 3D Informatica può produrre, in assenza del quale (o qualora esso risulti errato) il comando non viene eseguito.
Il dettaglio delle funzionalità del modulo xwgl, di come si calcoli il codice di controllo e di quale sia il comportamento del modulo stesso sulla base dei parametri ad esso forniti non è argomento trattato da questa documentazione. Per esso si rimanda al manuale del modulo stesso.
Questo documento ha invece lo scopo di indicare come configurare il server eXtraWay perché possa fare uso di xwgl per i propri scopi nel modo più efficace possibile. Per ottenere questo risultato si deve fare ricorso ad un particolare file di configurazione, xwgl.conf.xml, che verrà a trovarsi, come tutti gli altri files di configurazione dei programmi eXtraWay, nella directory conf.
Il contenuto di tale file ed il comportamento del server sarà oggetto dei capitoli successivi.
Se in origine si riteneva che il server avrebbe dovuto poter eseguire altri comandi all'atto della partenza, una più attena analisi ci mostra che ci sono almeno 4 possibili momenti strategici. Essi sono:
In condizione normale questo è anche l'ordine di esecuzione delle operazioni. Va da se che le operazioni inerenti i server Child saranno eseguite una volta per ogni server.
In corrispondenza di ognuno di questo momenti il server è in grado di eseguire uno o più comandi. Ne consegue che si può, ad esempio, attivare un qualche processo all'avvio di eXtraWay e provvedere alla sua interruzione quando eXtraWay viene spento.
Quando si opera con un server singolo, cosa che normalmente non avviene ma che per particolari fasi di debug può verificarsi, il server Master, che svolge in quel frangente entrambe i ruoli, provvede a compiere l'esecuzione corrispondente anche al server Child come se egli fosse figlio di se stesso.
Ogni operazione che il server si agginge ad eseguire verra registrata tanto nel log di default quanto nel log definito journal.
Altrettanto dicasi per l'esito, positivo o negativo, del'esecuzione di xwgl.
Ogni registrazione di questo tipo, dopo il carattere di identificazione del tipo di log emesso, è identificabile grazie alla marcatura XwglMgr ovvero xwgl Manager (che altri non è che la funzionalità del server che interviene per richiedere l'esecuzione di xwgl con i comandi configurati nei momenti strategici).
Come evidenziato dal capitolo precedente, ci sono 4 momenti strategici per l'esecuzione di comandi esterni. Per ognuno di questi momenti esiste una sezione nel file xwgl.conf.xml che indica quel momento con la denominazione:
Ogni sezione è facoltativa ma se esiste essa contiene uno o più profili per i jobs da compiere. Essi sono numerati da '1' in poi ed il valore associato a tale profilo rappresenta il nome del job da eseguire.
Il nome del job indicato è generico, ovvero valido per tutte le piattaforme. Se un job deve assumere diversa forma dipendentemetne dalla piattaforma si possono configurare due diverse sezioni aventi come nome quello del job seguito da .unix o
.win per indicare a quale piattaforma far riferimento. Il server, all'atto di dover eseguire questo job, cercherà prima la dichiarazione generica ed in sua assenza quella specifica di piattaforma. In questo modo è più semplice mantenere un unico file di configurazione indipendente dall'installazione che si andrà a fare.
Una volta identificato ogni job, per ciascuno di essi esisterà una sezione nella quale si troveranno quanto meno 2 profili, uno per il vero comando da eseguire ed uno per il codice di controllo di tale comando. E' inoltre possibile impostare un ulteriore profilo se si intende nascondere alla vista degli operatori l'esecuzione del job in esame. Tali profili sono:
Nell'indicazione del comando da eseguire l'uso di doppi apici per delimitare i parametri che possono essere ambigui (qualora ad esempio contengano caratteri non correttamente riconoscibili da parte dell'interprete dei comandi come potrebbe essere ad esempio lo spazio) è libero.
Gli esempi del prossimo capitolo chiariranno meglio quanto detto.
Vediamo un esempio di come si può configurare il file xwgl.conf.xml:
<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE xwconf SYSTEM "http://www.3di.it/extraway/xwconf_20031128.dtd"> <xwconf> <!-- Prima di tutto le sezioni che indicano gli elenci dei job da eseguire nei momenti richiesti. Nel nostro esempio solo all'inizio ed alla fine della vita del Server Master --> <section name="master.start.jobs"> <profile type="1" value="TextConverter"/> </section> <section name="master.stop.jobs"> <profile type="1" value="XwlsRemover"/> <profile type="2" value="XipsRemover"/> <profile type="3" value="TextConverterEnd"/> </section> <!-- Di seguito le sezioni dei singoli Jobs. Il loro momento di esecuzione è regolateo dalle sezioni precedenti --> <section name="TextConverter"> <profile type="job.crc" value="f1c110c4-d0015454"/> <profile type="job.cmd" value="java -classpath "%xwbin%\..\java_classes\hj.jar;%xwbin%\..\java_classes\code.jar;%xwbin%\..\java_classes\common.jar;%xwbin%\..\java_classes\dom4j-full.jar;%xwbin%\..\java_classes\indexLib.jar;%xwbin%\..\java_classes\indexAgent.jar" it.extrawaytech.enclosure.agent.IndexAgentService -W%xwbin%"/> </section> <section name="XwlsRemover"> <profile type="job.crc" value="50910080-d1148454"/> <profile type="job.cmd" value="%xwbin%\xwls -stop"/> <profile type="job.hide" value="true"/> </section> <section name="XipsRemover"> <profile type="job.crc" value="8005d440-95540404"/> <profile type="job.cmd" value="%xwbin%\xips -stop"/> <profile type="job.hide" value="true"/> </section> <!-- Ultime le due versioni di un particolare job dipendente dalla piattaforma --> <section name="TextConverterEnd.win"> <profile type="job.crc" value="9440d541-94d51014"/> <profile type="job.cmd" value='echo . > %xwbin%\..\e-agent\stop_service.xml'/> </section> <section name="TextConverterEnd.unix"> <profile type="job.crc" value="41c4d481-c08544c4"/> <profile type="job.cmd" value='touch %xwbin%/../e-agent/stop_service.xml'/> <profile type="job.hide" value="false"/> </section> </xwconf>
Vediamo ora di commentare l'esempio esposto.
Innanzitutto salta all'occhio che nei comandi espressi sono stati impostati dei modificatori. Uno di essi, xwbin rappresenta appunto la directory dei programmi eXtraWay.
L'esempio mostra due momenti significativi per l'esecuzione dei comandi, l'inizio della vita utile del server Master e la sua interruzione.
All'atto dell'avvio del server si intende eseguire una procedura java. Nel nostro esempio si avvia un agent di traduzione dei documenti nei vari formati Office ed affini per produrre testi indicizzabili. il materiale installato è reperibile in directory raggiungibili con percorsi relativi alla directory dei programmi eXtraWay.
All'atto dell'interruzione del server vengono eseguite due operazioni (non indispensabili) per interrompere le funzionalità dei moduli xips e xwls. L'esecuzione di questi moduli avviene in modalità nascosta per far sì che non appaiano (e scompaiano immediatamente) fastidiose finestre di console in corrispondenza di tali comandi. In contrasto a questo, il primo comando non viene eseguito in modalità nascosta così che esita una console sulla quale intervenire eventualmente per terminare la procedura eseguite.
Unitamente a queste interruzioni viene svolto un ulteriore compito teso ad interrompere l'agent di traduzinoe dei documenti seguendo due iter distinti che differiscono a seconda della piattaforma.
A completamento di quanto riportato da questa documentazione si suggerisce di prendere visione dei seguenti testi:
Torna a Indice delle voci