|
Da qualche tempo stiamo lavorando con il CGIDEV2 e AJAX. Pero' il CGIDEV2 è talmente "trasparente" che non si tratta più solo di i5, ma di normali applicazioni client>server, quindi Browser > Server HTTP. In questa pagina vorrei esporre un esempio di come stiamo utilizzando Ajax all'interno della nostra Intranet/Extranet.
L'esempio che riporto è relativo ad una piccola Azienda controllata dalla nostra Società che deve rivendere svariati prodotti. Questa Società rivende Servizi e si propone quinid di fare da collettore frà Aziende produttrici e clienti di questa piccola Azienda.
La volontà è quella di poter far accedere queste Aziende Produttrici ai dati dell'Azienda, in modo che siano direttamente loro a gestire il listino degli articoli, ( quali ean, imballi, prezzi etc.etc.), visionare e gestire il CRM etc.etc.
La connessione avviene via http in adsl no BGM al mio sito quindi non una grande velocità. L'attenzione sulle Performances è quindi più che giustificata: se ogni volta che l'utente richiama una pagina dell'anagrafica che ha circa 70 campi deve attendere mediamente dai 15/20 secondi, la cosa diventa un problema.
Allora io ed il mio collaboratore, espero di Java, Javascript ed adesso di Ajax, abbiamo fatto in questo modo.
La pagina è composta da tre frames: ricerca, risultato e scheda articoli.
La ricerca viene eseguita, mostra i risultati nel secondo frame e quando clicca sull'articolo compare la pagine nel frame della scheda. In questa scheda oltre ai dati dell'articolo, descrizione, prezzi etc.etc., sono presenti alcuni check box che permette di scegliere gli altri elementi dell'articolo che possono essere visualzzati oppure no. Se l'utente desidera vedere e lavorare con i Codici Ean, attivando il check box si scatena un evento Ajax che richiama il CGI dell'as400 e ritorna un pezzo di html contenente i campi con gli ean, che sono 4 x 6, quindi 24 campi. Se clicca su un altro check box relativo imballi, l'ajax richiama il CGI e questo ritorna solo il pezzo di html del codice degli imballi ( anche qui sono parecchi campi).
La cosa bella è che l'ajax che gestisce tutto l'html: il CGI fornisce solo il pezzo richiesto.
Ma la cosa ancora più bella, è questa: ammettiamo di dover aggiornare la descrizione di un articolo che ha 50 campi. Nel modo classico, quando si preme il pulsante Submit di un form, il browser manda al CGI tutti i campi, e spetta all'appicativo leggerli tutti e aggiornare i dati. Questo perchè il pgm non è a conoscenza del singolo campo.
Invece adesso con l'ajax, quando l'utente esce dal campo di input l'ajax invoca una istanza CGI chiedendo all'applicativo di aggiornare solo quel campo:
< input ...onchange="ajaxUpdateField('/cgi-bin/smga01r.cgi?request=updfld&inpfld=SADEC
&inpval='+this.value+'&SAARK=185-00',this);"> e si aspetta il risultato dall'i5. Se c'è un errore viene gestito direttamente da Ajax, colorando di rosso il campo, oppure emettendo un pop-up con il testo del messaggio od altro.
Quindi il tutto è estremamente veloce perchè sono transazioni leggere e veloci.
A titolo informativo, gli ritorno questa Ds:
d RtnToAjax ds qualified
d Err n inz('0')
d TxtErr 200 inz(' ')
In caso di errore:
RtnToAjax .Err = '1';
RtnToAjax .TxtErr = 'errore bla...bla...bla';
Quanto scritto sopra risale al 2005 e di strada ne abbiamo fatta tanta! Oggi è marzo 2009 e nel mettere a posto queste pagine HTML ho ripreso in mano questi files ed ho deciso che prossimanente li amplierò cercando di mostrare nuovi esempi.
Dal 2007 abbiamo accorpato una Azienda specializzata come Ingrosso forniture alberghiere che gestiamo tuttora solo in CGIVDE2V. La complessità è che questa azienda ha propri agenti, propri clienti e quindi abbiamo costruito una intranet, la extranet per gli agenti e i clienti e la parte internet pubblica.
Insieme a questa Azienda ne sono arrivate altre due di cui una è un Cash & Carry a Brescia il quale ha la intranet e la parte pubblica forniture alberghiere fatta in gran parte in Web 2.0 con un 80% di ajax e Server Side Include.
Inoltre c'è anche l'Horecash che è un ingrosso di forniture alberghiere, con una propria fatturazione e propri clienti.
Il CGIDEV2 ci ha permesso di gestire un sistema multiaziendale che mai avremmo potuto pensare (o forse è una limitazione della mia conoscenza).
Andrà avanti a scrivere e spiegare meglio il CGIDEV2. Ricordo come dico spesso sia sul newsgroup che al Common.it, che Perotti offre consulenza a costi abbordabili da chiunque.
Massimiliano
|