Una premessa
Nel corso degli anni l’informatica è cambiata profondamente grazie a Internet, alla crescente potenza dei Pc e alla diffusione di pacchetti applicativi industriali.
Si è passati da sistemi informativi costruiti ad hoc su mainframe con un’architettura centralizzata a sistemi distribuiti su diverse piattaforme formati da più pacchetti acquistati da terze parti.
Ormai gran parte del lavoro sviluppato presso gli utenti riguarda programmi di interfaccia che permettono ai diversi pacchetti applicativi di comunicare tra loro e di condividere i dati.
Su AS/400, nella progettazione dei programmi, fino ad ora è stato utilizzato prevalentemente un approccio di tipo tradizionale, in cui la
business logic è strettamente intrecciata alla
presentation logic.
Per poter interfacciare delle applicazioni tra loro è invece necessario scorporare queste due componenti.
Questo richiede la riscrittura di programmi spesso molto complessi, progettati per funzionare in modo interattivo in modalità 5250 con una logica che difficilmente si presta anche all’elaborazione di flussi batch, tipica dei programmi d’interfaccia.
La soluzione comunemente adottata è quindi la scrittura di programmi d’interfaccia ad hoc che duplicano la business logic contenuta nei programmi interattivi con l’onere non solo della scrittura dei programmi, ma anche del recupero di logiche, spesso mal documentate, e del mantenimento delle stesse per adeguarsi agli aggiornamenti dei pacchetti interfacciati.
Inoltre le interfacce vengono progettate di volta in volta senza adottare standard industriali, ma utilizzando i file di database che mal si adattano alla comunicazione tra diverse piattaforme e che comportano spesso la duplicazione dell’intera base dati, con i consueti problemi di allineamento e con l’impossibilità di condividere le informazioni in tempo reale.
Perchè XML?
L’Extensible Markup Language, sviluppato da XML Working Group costituitosi sotto gli auspici del World Wide Web Consortium (W3C) nel 1996, si sta affermando come lo standard più utilizzato per l’interscambio dei dati tra server e tra server e client.
Esso presenta, infatti, diversi vantaggi rispetto ad altre tecnologie:
- E’ uno standard aperto, basato su una tecnologia non proprietaria.
- E’ facilmente utilizzabile in Internet.
- Disaccoppiando i dati dalla loro presentazione ne permette la visualizzazione, tramite browser, su qualsiasi device quali Pc, palmari o cellulari.
- Utilizzando una descrizione autoesplicativa e simbolica dei dati li svincola dalla loro struttura fisica (formato, lunghezza e posizione) in cui sono altrimenti costretti in un tracciato d’archivio, risolvendo così molti dei problemi di comunicazione tra applicazioni e di compatibilità tra piattaforme diverse.
L'interfaccia XML
L’interfaccia XML apre le applicazioni esistenti su AS/400 al mondo XML senza che, nella maggioranza dei casi, sia necessario modificare i programmi e permette di progettare le nuove applicazioni, più aderenti al modello client/server, continuando a lavorare con gli strumenti consueti.
Grazie all’interfaccia XML è possibile per esempio:
- Accedere, da Internet, alle applicazioni 5250 utilizzando un qualsiasi browser.
- Sviluppare delle interfacce grafiche su Pc che comunicano tramite Socket server con i programmi AS/400.
- Mantenere, grazie ai Trigger XML, gli archivi allineati tra diverse applicazioni utilizzando i programmi di aggiornamento interattivi esistenti.
- Comunicare con gli altri server della rete tramite Socket o tramite gli Stream file dell’Integrated File System AS/400.
- Accedere direttamente dai programmi applicativi AS/400 alle risorse presenti su Internet tramite i driver Client HTTP o FTP.
Struttura
Sfruttando l’architettura a oggetti propria di AS/400 è infatti possibile separare la
presentation logic contenuta nei file video, di stampa o di database, dalla
business logic di una applicazione, semplicemente sostituendoli con un
File di interfaccia XML.
L’interfaccia XML comunica da una parte con i programmi applicativi attraverso un
File di interfaccia XML (XIF) che va a sostituire, in modo trasparente, i file utilizzati dai programmi, e dall’altra con i server o client utilizzando uno
Schema di interfaccia XML (XIS) che contiene gli schemi dei documenti XML da ricevere e/o da inviare e i legami tra valori degli elementi dei documenti e i campi dei record del
File di interfaccia XML.
Gestione degli errori e log
L’interfaccia XML è in grado di monitorare gli errori riscontrati dai programmi applicativi, testando i valori dei campi emessi o reperendo i messaggi inviati a video o sulla coda messaggi del programma. Può quindi, nel caso, inviare un documento specifico per segnalare al client gli errori rilevati.
I documenti ricevuti ed inviati possono inoltre venir memorizzati, a seconda dell’esito della transazione, su una coda messaggi di log o di errore.
Riservatezza
La riservatezza è garantita dalla stessa interfaccia XML che può inibire l’accesso alle informazioni non solo a livello di oggetto, tramite gli
User profile di sistema, ma anche del singolo dato, tramite l’uso di password e profili memorizzati nelle
Validation list AS/400. I pacchetti applicativi, infatti, essendo utilizzati normalmente all’interno dell’azienda, controllano l’accesso degli utenti ai programmi e non ai singoli dati da essi forniti; cosa necessaria, quando l’accesso al sistema è permesso ad entità esterne che devono poter accedere solo ai dati di loro pertinenza.
Oggetti
L’interfaccia XML utilizza degli oggetti che sono stati sviluppati appositamente per il suo funzionamento e fornisce una serie di comandi per la loro gestione.
File di interfaccia XML (XIF)
Contiene il nome del programma da eseguire con la descrizione dei parametri di lancio e/o dei file da elaborare.
Viene creato con il comando CRTXIF che reperisce le informazioni direttamente dagli oggetti, dei quali pertanto non è necessario avere il sorgente. E’ sufficiente conoscere il formato degli eventuali parametri di lancio del programma.
Schema di interfaccia XML (XIS)
Viene creato con il comando CRTXIS che compila un sorgente XML contenente gli schemi dei documenti ed il nome del
File di interfaccia da utilizzare.
La struttura dei documenti XML non è vincolata né dalla struttura dei tracciati record del
File di interfaccia né dalla sequenza con cui questi vengono elaborati dai programmi applicativi. L’emissione dei diversi documenti può essere condizionata dai valori assunti dai campi di emissione impostati dai programmi applicativi o dalle condizioni di errore eventualmente rilevate.
Questo conferisce agli schemi una grande flessibilità permettendo di interfacciare, senza modifiche, i programmi applicativi esistenti con dei documenti XML conformi ai comuni standard correnti e futuri, come SOAP, o aderenti alle specifiche del server o del client a cui li si invia.
Indice schemi di interfaccia XML (XISIDX)
Contiene i nomi dei documenti che possono essere ricevuti da un server XML. Viene utilizzato dall’interfaccia XML per reperire il nome e la libreria dello schema d’interfaccia da utilizzare per elaborare i documenti XML ricevuti.
Indice driver di interfaccia XML (XIDIDX)
Contiene i valori dei parametri di lancio specifici dei diversi driver utilizzabili dall’interfaccia XML. Per ogni driver si possono memorizzare più elementi. In questo modo è possibile collegarsi ai diversi server o client semplicemente specificando il nome di un elemento dell’indice.
Comunicazioni
L’interfaccia XML è in grado di mettere in comunicazione i programmi applicativi esistenti con diversi server e client grazie a una serie di driver forniti con l’interfaccia stessa o utilizzando dei driver sviluppati dall’utente.
XML server
Tramite il server XML i programmi applicativi esistenti possono venir richiamati ed eseguiti attraverso la ricezione e l’invio di documenti XML utilizzando i seguenti driver:
- Coda dati (XIDDTAQ)
Ha il vantaggio di poter essere utilizzato per collegamenti sia on-line che differiti. E’ flessibile in quanto su una stessa coda possono venir collegati dinamicamente più client e più server. Per contro le code dati non sono supportate da tutte le piattaforme. In collegamento ai trigger XML è l’ideale per mantenere l’allineamento degli archivi tra diversi applicativi.
- Coda messaggi (XIDMSGQ)
Ha caratteristiche simili al driver per coda dati. Può essere utilizzato, inoltre, per rielaborare i documenti scartati sulla coda messaggi d’errore, una volta che le condizioni siano state corrette.
- Socket server (XIDSKTS, XIDSSLS)
Ha il vantaggio di poter comunicare in maniera standard con qualsiasi piattaforma. Per contro i collegamenti devono essere on-line. E’ multithread e ogni singolo thread è in grado di gestire contemporaneamente più client. E’ disponibile inoltre un driver che supporta il protocollo Secure Sockets Layer (SSL) per la cifratura delle comunicazione e la gestione dei certificati digitali.
- Stream file (XIDSTMF)
Può essere utilizzato per esempio, per elaborare documenti ricevuti da sistemi remoti tramite FTP o per aggiornare periodicamente documenti visualizzati dal HTTP server.
- Client FTP (XIDFTP)
Può ricevere e/o inviare documenti tramite FTP.
Client XML
Da un programma applicativo, richiamando l’API XMLISNDD, è possibile sia inviare un documento XML, semplicemente impostando dei valori nei campi di una struttura dati, che ricevere i valori degli elementi dell’eventuale documento XML di risposta nella stessa o in un’altra struttura.
Sono inoltre disponibili diverse procedure API ILE per eseguire, da un programma applicativo, delle funzioni più specifiche come:
openXmlDriver(), openXis(), setXifRecord(), writeXmlDocument(), readXmlDocument(), getXifRecord(), etc.
Oltre ai driver per Coda dati, Coda messaggi, Stream file e Client FTP, descritti precedentemente, sono utilizzabili anche i seguenti driver:
- Client HTTP e HTTPS (XIDHTTP, XIDHTPS)
Permette di accedere ai dati esistenti su Internet (quotazioni, ordini, listini etc.), come se fossero file AS/400.
- Client Socket (XIDSKTC, XIDSSLC)
E’ l’equivalente, dal lato client, del driver Socket server.
HTTP server
Tramite l’HTTP server di AS/400 possono venir richiamati ed eseguiti i programmi applicativi da qualsiasi browser collegato a Internet o a una intranet. E’ inoltre supportato l’uso di crittografia e certificati digitali (HTTPS).
Trigger XML
Aggiungendo un trigger XML a un file, senza dover scrivere nessun programma, è possibile inviare in tempo reale documenti XML contenenti le modifiche effettuate a qualsiasi server XML. In questo modo è possibile mantenere allineati gli archivi tra diverse applicazioni utilizzando i programmi di aggiornamento esistenti.
Con i trigger XML sono utilizzabili i driver per Coda dati, Coda messaggi, Stream file, Client FTP e Client socket, descritti precedentemente.
File
Senza dover scrivere nessun programma è possibile inviare, a qualsiasi server XML, il contenuto di un file di database o il risultato di una query in forma di documento XML, utilizzando gli stessi driver disponibili per i trigger XML.