Interfaccia XML per AS/400 

   

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:

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:

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:

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:

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.