Lotus
Notes o più propriamente Domino, è uno strumento molto flessibile,
che permette la memorizzazione di documenti all’interno di database dalla
struttura variabile e dal contenuto eterogeneo. Su tali database è
possibile costruire delle viste, sulle quali fare delle ricerche flessibili
e potenti. Tutto questo corredato dalla possibilità di usare un
linguaggio proprietario come Lotus Script e più recentemente, dalla
versione 4.6, Java, per la scrittura di procedure e funzioni di controllo.
All’interno
di Notes, l’elemento che permette il maggior numero di manipolazioni, è
sicuramente la form. Tramite una form è possibile, ad esempio, presentare
dei dati video, inserirli all’interno di un database o creare delle informazioni
dinamiche.
Un
errore che si commette spesso, quando si inizia ad utilizzare Notes, è
quello di unificare il concetto di record, con quello di form, dato che
Notes tende a legare i record, creati al suo interno, con maschera con
la quale sono stati creati o modificati per l’ultima volta.
In
realtà questo legame non è assoluto e può essere variato
in qualsiasi momento. Un record può essere visualizzato con form
diverse, in momenti diversi, in base, ad esempio, al fatto che sia visualizzato
all’interno di un client Lotus Notes o all’interno di un browser.
Inoltre
è possibile condizionare dinamicamente delle parti di una form,
sia in base all’utente che la sta utilizzando, che in base ad una particolare
vista, o semplicemente in base al tipo di dati che sono stati inseriti.
Vediamo
ora come iniziare ad utilizzare le form come fonte di inserimento dati
e come poter presentare a video delle informazioni contestuali ai dati
inseriti.
|
Figura
1 - L’elenco delle form del database
|
Figura
2 - L’ambiente di disegno
Creazione di una
form
La
creazione di una form è un’operazione molto semplice, che cambia
leggermente in base al fatto di utilizzare una versione 4.x o 5.x di Lotus
Notes.
Le
versioni precedenti alla 5 hanno infatti un unico ambiente di gestione
dei dati, che è rappresentato dal client Lotus Notes. Con la versione
5 invece sono stati scomposti gli ambienti di amministrazione e disegno
in parti ben distinte.
Vi
è sempre un client Lotus Notes, ma ora è anche presente un
ambiente di amministrazione Lotus Domino Administrator e un ambiente di
disegno Lotus Domino Designer.
Questo
significa che, se dobbiamo operare nella versione 4.x, andremo ad utilizzare
il client Lotus Notes, invece nella versione 5.x utilizzeremo Lotus Domino
Designer.
In
entrambi gli ambienti è però presente un menu file, ed una
voce database. All’interno di tale voce, la voce new, permette la creazione
di un nuovo database.
Per
fare esercizio andremo ad utilizzare tale voce, creando il database iform.nsf.
Attenzione
però ad un particolare. Domino gestisce diversamente, da piattaforma
a piattaforma, i nomi dei propri oggetti. Creare una form o un database
col nome “pippo” e farne poi riferimento col suo nome maiuscolo “PIPPO”,
in piattaforme Win32, cioè Windows 9x, NT, 2000 o ME, è indifferente.
All’interno di piattaforme Unix, come SUN, AIX o Linux, l’oggetto non verrebbe
riconosciuto. Per tale ragione si tende ad utilizzare il minuscolo nella
creazione di nomi di oggetti, che siano utilizzabili lato web server, quindi
i database, le form, le viste, i menu e così via.
In
questo modo, se dovessimo migrare il database da una piattaforma ad un'altra,
magari maggiormente scalabile, non avremo problemi di porting.
Dopo
aver creato questo nuovo database possiamo finalmente creare delle form
ed immettere dei nuovi dati, che non andranno a compromettere i dati presenti
all’interno di altri database Notes.
|
Figura
3 - Le proprietà di un campo
La
creazione di una nuova form avviene tramite un’apposita voce di menu. Tale
voce è Create, sotto la quale esiste la voce design/form.
Tale
voce rimanda direttamente all’ambiente di disegno di Notes. All’interno
di tale ambiente potremo inserire, uno alla volta, tutti gli elementi tipici
di una maschera di inserimento dati.
Creazione dei
campi
Per
prima cosa, posizioniamoci sullo sfondo della maschera che abbiamo appena
inserito. Premendo il tasto destro del mouse, sul menu a tendina che appare,
è presente la voce Create field che permette l’inserimento di un
campo.
Confermando
tale voce, Domino assegna un valore di comodo al nome campo, cioè
untitled, che può essere variato, in qualsiasi momento, all’interno
della form.
Sempre
passando dal click destro ed utilizzando la voce field properties, vedremo
ora apparire una maschera multipagina, che permette la modifica di tutte
le proprietà di un campo.
|
Figura
4 - La form dal browser
La
prima pagina di tale maschera, contiene le informazioni più importanti
del campo, cioè il nome, il tipo ed il modo col quale deve essere
presentato a video. Modifichiamo quindi il nome in cValore ed il tipo in
editable.
Ora,
tramite il tasto CLTR+S, salviamo la maschera all’interno del database,
nominandola submit e proviamo a verificare la sua visibilità lato
web server.
Se
Lotus Domino è stato configurato nel modo corretto, cioè
se è stato attivato il task http, andando su un qualsiasi browser
e digitando l’indirizzo IP del server, il nome del database e il nome della
form dovreste riuscire a vedere la maschera che abbiamo appena creato.
Un
esempio di link valido potrebbe essere:
http:://127.0.0.1/iform.nsf/submit
dove
127.0.0.1 è l’indirizzo della macchina corrente, iform.nsf è
il nome del database Domino e submit è il nome della form che è
stata appena creata.
Anche
in questo caso occorre una doverosa precisazione. In ambienti Win32 è
possibile usare anche una sintassi leggermente diversa, che permette la
sostituzione delle barre ‘/’ con le barre ‘\’. Questa pratica va a compromettere
la compatibilità fra piattaforme Notes diverse. Per tale ragione
è consigliato usare sempre le barre stile UNIX, cioè ‘/’,
che sono comunque correttamente interpretate anche in ambienti Windows.
Se
tutto è andato nel verso giusto dovrebbe apparire la maschera che
abbiamo appena inserito a livello di design. Se ciò è accaduto,
proviamo ad andare a controllare il codice che è stato scaricato
a livello di HTML. Noteremo che Domino ha convertito la rappresentazione
del campo in qualcosa di molto simile a:
<FONT
FACE="Arial"><INPUT NAME="cValore" VALUE=""></FONT>
come
si può notare sono stati riutilizzati i valori inseriti all’interno
di Domino.
Fino
a questo punto l’inserimento di un campo è una pratica molto simile
fra la versione 4 e 5 di Domino. La cosa nuova che però ha apportato
la versione 5 è data dalla pagina di proprietà HTML aggiuntive,
presenti all’interno della finestra field properties. Tale pagina contiene
infatti solamente proprietà utilizzabili lato web server, in questo
modo è possibile andare ad inserire tutti quei tag che non sono
utilizzati all’interno di Notes.
Proviamo
ora ad inserire un altro tipo di campo, sempre editable, ma di tipo checkbox.
La definizione in questo caso è esattamente uguale a quella di un
campo di tipo text appena inserito. Quello che cambia è invece il
modo col quale si debbono inserire i valori. Andando infatti nella seconda
pagina delle properties si nota una parte denominata choices. Tale parte
è utilizzata per specificare sia il modo col quale alimentare il
campo, sia gli eventuali valori o la formula che vedremo valorizzata. Nel
nostro caso utilizzeremo il costrutto più semplice, che è
quello di indicare Enter choice (one for line) come origine dei dati, e
nella lista di valori metteremo, manualmente, una lista di valori validi.
|
Figura
5 - L’inserimento di un pulsante
Se
ora proviamo a salvare e a guardare il form lato browser, noteremo subito
una cosa interessante, ma alquanto fastidiosa. Domino ha usato, sia per
i valori che per i prompt del campi checkbox gli stessi valori. Questo
vuol dire che, in automatico, non è possibile differenziare la rappresentazione
visuale, da quella che verrà contenuta all’interno del documento
Notes. È pero possibile superare questo limite con un piccolo trucco
di programmazione.
Lotus
Domino converte le maschere che vengono inserire all’interno del design
in codice HTML, le manda al browser, che si occuperà di prendere
i dati di ritorno e restituirli in modalità submit.
Da
questo si capisce che Domino non è un interprete di codice HTML,
ma sono un convertitore. Per tale ragione è possibile commentare
il codice che Domino crea, tramite i tag HTML <!-- e -->, sostituendoli
con un nuovo codice HTML, che saremo noi a scrivere, senza nessun limite
interno ed esterno.
In
questo modo è possibile, ad esempio, superare il problema dei checkbox
e differenziare il loro prompt dal dato contenuto. Il codice che andremo
a scrivere sarà abbastanza simile a questo:
[<!—
[ [] cRighe ] -->]
[<INPUT
TYPE=checkbox NAME="cRighe2" VALUE="valore 1">]Primo
[<INPUT
TYPE=checkbox NAME="cRighe2" VALUE="valore 2">]Secondo
[<INPUT
TYPE=checkbox NAME="cRighe2" VALUE="valore 3">]Terzo
Il
particolare da notare è quello che, quando mettiamo dei valori all’interno
di una maschera Notes, se tali valori sono all’interno di due parentesi
quadre, Domino riporta esattamente quello che è stato scritto, a
livello di pagina HTML.
Quello
che otterremo a livello di browser sarà così di avere il
codice Lotus Domino contenuto all’interno di un commento HTML, e pertanto
ignorato, ed il codice sostitutivo, nel quale è differenziato il
dato dal suo prompt, utilizzato al posto di quello standard.
Questa
tecnica è molto interessante e si basa sul fatto che, il submit
di una pagina WEB viene passato dal browser al server allo stesso modo
indipendentemente da come sono presentati i dati a video, siano loro rappresentati
da un edit o da un gruppo di checkbox o radio button. Tale tecnica è
inoltre utilizzabile in ogni versione di Lotus Notes.
|
Figura
6 - La conferma di una form
Submit
A
questo punto non resta che analizzare il modo col quale poter fare l’effettivo
submit di una maschera.
Sempre
passando dal menu create, inseriamo ora un hotspot button. Tale control
permette di specificare delle azioni che poi, ove possibile, sono riportate
anche a livello di browser. Nel nostro caso andremo ad inserire una formula
di salvataggio e chiusura della form. Tale formula è:
@Command([FileSave]);
@Command([FileCloseWindow])
Questa
formula comprende due comandi. Il primo serve effettivamente a salvare
i dati, il secondo per chiudere la form che è stata presentata.
Questo evita che, alla pressione del pulsante di submit, venga ripresentata
la stessa maschera a video.
Se
provate ora ad accedere alla maschera lato browser noterete che, alla pressione
del tasto submit, i dati che avete inserito saranno correttamente aggiunti
all’interno del database Notes. Esiste però un piccolo particolare
fastidioso. Notes, di default, presenta una maschera di conferma d’inserimento
dati, che riporta la scritta “Form Processed”.
Chiaramente
questo tipo di maschera è abbastanza fastidiosa, inoltre potrebbe
non rappresentare il messaggio che si vuole dare alla conferma dell’inserimento
dati.
Per
ovviare a questo specifico problema è possibile utilizzare uno dei
campi speciali che sono stati messi a disposizione da Domino. Tali campi
sono utilizzati per aggiungere dei particolari eventi alle form.
Il
campo che useremo è “$$Return”, che deve essere di tipo text, ma
soprattutto computer. In questo modo, all’avvenuto submit, in modo completamente
automatico, Lotus Domino andrà a valutare il campo e ne prenderà
il contenuto utilizzandolo come pagina da visualizzare lato web server.
In
questo modo possiamo inserire, sia dei messaggi di avvenuto inserimento
dei dati, come:
“<h2>Dati
inseriti</h2>”
che
dei messaggi contestuali. Ad esempio il valore di un campo.
In
questo caso viene controllato il valore del campo cRighe2 e se contiene
il valore “valore 1” viene presentato un messaggio contestuale:
@If(cRighe2="valore
1"; "<h2>Hai risposto 1</h2>"; "<h2>NON hai risposto 1</h2>")
È
inoltre possibile inserire un rimando ad un determinato sito o ad una determinata
pagina. In questo caso è sufficiente fare in modo che il value della
formula sia una stringa, nella quale è inserito l’indirizzo di destinazione
all’interno di due parentesi quadre, come in questo caso:
"[http://www.mokabyte.it]"
Sarà
poi Lotus Domino a mandare al browser il corretto comando di redirect verso
un particolare sito, in risposta all’operazione di submit.
Conclusioni
In
questa prima puntata sono stati spiegati i principi fondamentali che regolano
le form in ambiente Lotus Domino. In questo modo è ora possibile
produrre autonomamente delle maschere di immissione dati, lato web server,
sfruttando le caratteristiche basilari date da questo prodotto.
Nelle
prossime puntate vedremo com’è possibile aggiungere dei controlli
sui singoli dati che sono stati inseriti, com’è possibile aggiungere
dei controlli globali prima e dopo la presentazione di una maschera e com’è
possibile usare del codice javascript e java, sia per controllare i campi,
che per aggiungere delle caratteristiche speciali alle maschere.
Bibliografia
[1]
http://www.lotus.com sito Internet di riferimento per i prodotti Lotus
[2]
http://www.notes.net sito ufficiale di Lotus Domino. Da questo sito è
possibile scaricare tutti gli aggiornamenti di Domino, dalla versione 4.0
all’ultimissima versione disponibile.
[3]
http://www.infomedia.it/artic/Baccan, sito contenente alcuni articoli di
approfondimento degli argomenti trattati.
Esempio
Per
chi volesse provare direttamente il database di esempio presentato nell'articolo
lo può trovare qui
Matteo
Baccan è uno specialista di progettazione e sviluppo in C++,
Java e Lotus Notes, nonché coautore di dBsee 4, dBsee++ ed autore
di dBsee400. Attualmente si occupa dello studio di tecniche avanzate di
programmazione in ambito Internet/Intranet tramite Lotus Notes e Java,
presso ISA Italian Software Agency. Si possono consultare alcune sue pubblicazioni
presso http://www.infomedia.it/artic/Baccan.
Può essere contattato tramite e-mail all'indirizzo baccan@infomedia.it |