Ho iniziato tre anni fa a parlare di Ajax, per poi affrontare il framework Dojo... ed ora cosa ci aspetta per il futuro? Quante cose nuove dovremo imparare per le nostre applicazioni Web?
Le Xpages permettono di realizzare le applicazioni Web con estrema facilità e con una maggiore semplicità manutentiva rispetto al passato.
La sessione mostrerà l'utilizzo di questa tecnologia partendo da un'applicazione demo che verrà "smontata" e spiegata nel dettaglio.
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Xpages, cosa ci sarà in questa nuova tecnologia
1. Xpages
Cosa ci sarà in questa nuova tecnologia
Autore: DanieleGrillo
Professione: Domino Developer
2. domino point day2009
Agenda
•Cosa sono le Xpages
•Da dove arrivano
•Componenti fondamentali
•Linguaggio di sviluppo ( Client Side / Server Side)
•Esempio Applicazione ( Catalog.nsf)
•Utilizzo in locale ( novità della 8.5.1)
•Suggerimenti
•Cosa ci aspetta per il futuro?
2
3. domino point day2009
Cosa sono le Xpages
• Un componente aggiuntivo di Lotus Designer
• Un framework di sviluppo basato su componenti ( come i più
comuni linguaggi visuali di programmazione)
• Tecnologia JSF ( java server faces)
• Sfruttano il back-end dei dati Lotus Domino (per ora...)
• Una soluzione Easy per lo sviluppo di applicazioni Web
• Estensione engine HTTP di Domino
• Nascono con la R 8.5 ( meglio usarle nella 8.5.1)
3
5. domino point day2009
Modello MVC
Le Xpages utilizzano il concetto di Model View Control
• L’MVC è la separazione della base dati, dalla logica applicativa di
un’applicazione e dall’interfaccia .
• Impone al programmatore ( ed è un bene) a separare
nettamente la logica applicativa dall’interfaccia e i dati.
• E’ Più facile mantenere nel tempo l’applicazione
• E’ un concetto...
5
6. domino point day2009
MVC a confronto
Control
Control Lotusscript + @formulas
Javascrip ( server-side + front side) +Agenti
View View
Sono le Xpages Sono le Form, Viste, Navigatori,
Frameset, Pages, Agent
Model
Sono le Form di Notes Model
( per ora) Sono le Form di Notes
XPAGES DOMINO CLASSICO
6
7. domino point day2009
Da dove arrivano
• Progetto IBM Workplace nato nel 2002 ed
abbandonato nel 2007
• Xpages sono la Lotus Component Designer
• Component Designer Runtime diventa XSP
Runtime
7
8. domino point day2009
Da cosa sono composte
• Controlli ( Core, Container, Altri)
• Componenti ( blocchi di codice riutilizzabili,
concetto simile alle sub.form)
• Sorgente dati ( per ora Form di domino e
viste)
• Altro ( CSS, codice X/HTML aggiuntivo, JS)
8
9. domino point day2009
I Controlli
Oggetti già pronti all’uso
che si inseriscono nella
Xpages con semplici
trascinamenti sulla
pagina ( drag&drop)
9
11. domino point day2009
Sorgente dati
Rappresenta la
sorgente dati alla
quale ci si collega
per gestire il
binding dei dati
dalla Xpages al
back-end.
Il bindig è l’associazione con la sorgente dati....non è
più “ovvia” la relazione FORM/CAMPO
11
12. domino point day2009
Codice X/HTML nel sorgente XML
12
13. domino point day2009
I TEMI
Meta fogli di stile che vengono applicati al
rendering delle xpages prima che vengano
applicati i fogli di stile delle stesse.
Prima ancora di essere mandato al browser viene
applicato il tema che può eseguire codice JSS
per decidere cosa servire...esempio in base
Browser utilizzato nell’header di una richiesta
13
15. domino point day2009
Variabili Scope
Permettono finalmente di utilizzare variabili d’ambiente senza utilizzare campi,
documenti profilo o workaround vari (cookies etc..)
• SessionScope: variabili di sessione validi per ogni sessione istanziata da ogni
utente collegato ( vive all’apertura della sessione e muore alla chiusura)
• ApplicationScope variabile globale fin tanto che è aperta l’applicazione è
globale a qualunque sessione utente
• ViewScope variabile valida localmente nella componente View corrente
• RequestScope variabile che esiste per la pagina corrente
15
17. domino point day2009
View Component
• Ha le funzioni 1:1 vista Domino ( checkbox,
ordinamenti, valori)
• E’ personalizzabile
• Ha diverse proprietà per effettuare ricerche,
filterbyCategory
• Ha un pager di navigazione personalizzabile
• Valore colonne programmabili dinamicamente
17
19. domino point day2009
Repeater Component
Un componente (fantastico! N.d.r) che può scorrere i seguenti
oggetti ( come un ciclo FOR)
• Viste
• DocumentCollection
• Array (es. La risultante di una @dbcolumn)
• Vettore (un elemento a dimensione dinamica )
n.b. La variabile del repeater è case sensitive, e dobbiamo stare
attenti a generare il codice HTML corretto in funzione del repeat
19
21. domino point day2009
Core Component
Nome Componente Binding Domino
EditBox Text/Number Field
Date Time Picker Date Time Field
Label Computed Text
RichText RichText Field
File Upload RichText Filed
File Download RichText Field
ListBox ListBox Field
CheckBox CheckBox Field
RadioButton RadioButton Field
Button Button
21
23. domino point day2009
Come agire sui controlli...
In tutte le proprietà di un componente programmabili ( se appare un rombo azzurro a
fianco della proprietà allora è possibile manipolare la stessa) è possibile agire con JSS
(javascript server side) per manipolare per esempio:
• Visibilità
• Default Value
• URL ( componente link o immagine)
• e tutte le proprietà programmabili
23
24. domino point day2009
JSS ( javascript server side)
Non stravolge il modo di programmare Lotus, in quanto sono state messe a
disposizione tutte le classi Domino (identiche a quelle LotusScript) e oltre il
90% delle @formulas con la stessa nomenclatura di metodi e proprietà!
Inoltre JSS da la possibilità di utilizzare estensioni Java
(Esempio: John Mackey ha utilizzato la libreria JDBC per mettere insieme DB
relazionali insieme ai dati Domino sulla stessa pagina)
24
25. domino point day2009
Demo – catalog.nsf
Obiettivo: Un catalogo delle applicazioni alimentato dai BP
accreditati consultabile dagli utenti web
Ruolo BP: Avere un pannello di controllo per inserire nuove
applicazioni
Ruolo Utente: Accesso anomimo che sfoglia le applicazioni per
categoria o per data
25
27. domino point day2009
Demo Live!
Link Applicazione
27
28. domino point day2009
Da cosa è composta
Lato Domino ( back-End)
- FormBP
- Form Applicazione
- Form Configurazione
Lato Xpages ( front-End)
- HomePage
- ApplicationByCategory
- BusinessPartner
- Application
28
29. domino point day2009
BP type
CodeBP [text]
NameBP [text]
AddressBP [text] 1:n Application type
CodeBP [text]
CapBP [text]
ApplicationDate [date/time]
CityBP [text]
ApplicationName [text]
ReferenceB [text]
P ApplicationCategory [listbox]
URL Web [text] ApplicationDescription [richtext]
Site
ApplicationLogo [richtext]
LogoBP [richtext]
ApplicationScrenShot [richtext]
Username [names]
ApplicationBrochure [richtext]
Ogni Bp registrato potrà inserire N applicazioni nel sistema
29
30. domino point day2009
Pagina di partenza + layout
4 Custom Control collegati:
BannerDojo
MenuBar
ViewHomePage
FooterApplication
<div id="content">
<div id="header">
</div> <!--end header -->
<div id="menu">
</div> <!--- end menubar -->
<div id="wrapper">
<div id="menusx">
MENU ACTION
</div> <!--end menusx -->
Template html
<div id="centerbody">
BODY OUTPUT
</div> <!--centerbody -->
</div> <!--end wrapper -->
<div id="footer">
FOOTER
</div> <!--end footer -->
</div> <!--end content -->
30
37. domino point day2009
Come funziona Ajax login...
Esempio proposto da Jake Howlett blogger di CodeStore e codice
scritto da Declan Lynch nel suo tutorial delle Xpages.
Utilizza la dijit.Dialog di Dojo per la finestra di inserimento delle
credenziali
Effettua una chiama xhr.Post di Dojo ( ajax posting) per inviare le
credenziali
37
40. domino point day2009
var a="<a
href="javascript:dijit.byId('lo
ginDialog').show()">Log in
Ajax</a>";
return a;
40
41. domino point day2009
Colonna dinamica in una vista
Il logo e le informazioni del BP di una particolare
applicazione viene tirato su dinamicamente
eseguendo codice JSS di esempio
41
43. domino point day2009
Proprietà
CategoryFilt
er
ViewScope
43
44. domino point day2009
Validare i campi
E’ tutto più facile con i componenti
44
45. domino point day2009
Debug applicazione...
Per avere un debugger verboso e non il classico errore 500 ...
45
46. domino point day2009
Novità con la 8.5.1
• Migliorate le performance!
• Xpages eseguibili dal client Notes ( Xul Runner
embeddato basata sull’engine Firefox 1.5)
• SSO credenziali nel client
• Editor JSS migliorato
• Maggior stabilità ( nessun crash nello sviluppo
applicativo!)
• Dojo 1.3.2
46
47. domino point day2009
Gzipping Html
Tramite Proprierties dell’applicazione
47
48. domino point day2009
Vantaggi Xpages
• Possibilità di “relazionare” in unica pagina dati proveniente da diverse
sorgenti dati
• Utilizzare le variabili Scopes
• Utilizzare @formulas ( Sintassi Javascript)
• Utilizzare tutte le classi Domino ( JS )
• Richiamare le classi Java
• Supporto Cross-browser ( grazie a Dojo)
• Utilizzare widget dojo non implementati dai componenti esistenti
• Temi
• Inserire codice HTML nel Sorgente XML
48
49. domino point day2009
Svantaggi Xpages
• Il packaging di Dojo (meno request=performance migliori)
• La libertà di controllare l’output dei controlli ( Output SEO
compliance)
• Performance Java vs Agenti LS ( nella 8.5.1 è migliorato molto)
• Il motore lato client è due generazioni indietro rispetto a
quello Web ( Firefox 1.5)
• Widget di Notes usano IE ( se devo fare una Xpages che sia
usata come Widget devo far fronte a IE)
49
50. domino point day2009
Cosa ci sarà nelle Rnext?
• Binding diretto con Database relazionali
• Come annunciato a Lotussphere ’09 supporto
per Mobile Blackberry ( firmware 5.x)
• Miglioramento di Dojo Package?
• Miglioramento perfomance
50