Spring E Spring Web Flow Nel Progetto Jug Avis Web
1. Spring e Spring Web Flow
nel progetto Jug Avis Web
(Aka Magic Box)
Java Summer Meeting Cagliari 16 Luglio 2005
Massimiliano Dess狸
desmax74@yahoo.it
massimiliano.dessi@gruppoatlantis.com
1 auth: Massimiliano Dess狸 desmax74@yahoo.it
2. Funzionamento
Progetto Jug Avis:
Nato come applicazione Swing per il solo centro Avis di
Sestu
Funzionamento come Wizard
Importazione file contenente numeri di telefono , prodotto da
altre applicazioni in dotazione all Avis Sestu
Inserimento messaggio
Spedizione sms a tutti i numeri telefonici presenti nel file
2 auth: Massimiliano Dess狸 desmax74@yahoo.it
3. Pregi e difetti
1. Pro:
-Modellato sulle esigenze del centro di Sestu
Contro:
-Utilizzabile solo dall un utente sulla macchina su cui 竪
installato
-Necessit di installazione su pi湛 macchine in caso si renda
necessario effettuare la spedizione da pc diversi.
-Necessit del runtime java su ogni macchina.
-Non semplicemente adattabile per altri centri con richieste
simili ma non uguali (una applicazione per ogni centro)
3 auth: Massimiliano Dess狸 desmax74@yahoo.it
4. Caratteristiche Magic Box
In principio identico funzionamento e funzionalit della
applicazione swing
Testabile (Junit)
Controllo della qualit del codice (Code Coverage, Metrics)
Funzionamento su server, utilizzabile da pi湛 persone (Tomcat)
Costruita con componenti fortemente disaccopiati, in modo da
avere una veloce personalizzazione per altri centri avis. (IoC)
4 auth: Massimiliano Dess狸 desmax74@yahoo.it
5. Monitorabile e gestibile (JMX)
Documntazione file di configurazione (Spring BeanDoc)
Possibilit di schedulazione operazioni (JMX, Quartz)
Possibilit di reperimento dati da dispositivi legacy (JCA)
Se necessario multilingua (l10n, i18n)
Report eventuali (pdf, excel).
5 auth: Massimiliano Dess狸 desmax74@yahoo.it
6. Framework scelto
L unico framework che possedesse tutte le caratteristiche
richieste senza portare pesanti scelte architetturali in caso di
rapidi cambiamenti di alcune parti funzionali delle eventuali
nuove richieste di altri centri.
6 auth: Massimiliano Dess狸 desmax74@yahoo.it
7. Spring Web Flow
Spring fornisce nella parte MVC , per la realizzazione di wizard, un
controller (AbstractWizardFormController), oppure un
modulo che permette una configurazione ancora pi湛 elegante e
facilmente configurabile e riusabile per la gestione di flussi di
elaborazione distribuiti su pi湛 pagine:
7 auth: Massimiliano Dess狸 desmax74@yahoo.it
8. Design Pattern applicati in Spring Web Flow
State
Builder
Abstract Factory
Observer
Memento
Strategy
Facade
Adapter
Chain of Responsiblity
8 auth: Massimiliano Dess狸 desmax74@yahoo.it
9. Descrizione Jug Avis Web (Magic Box)
versione 0.1
9 auth: Massimiliano Dess狸 desmax74@yahoo.it
12. Alternative
Il flusso di esecuzione poteva essere scritto anche da codice.
Si 竪 preferito la configurazione su file essendo autoesplicativa, oltre a
permette modifiche pi湛 veloci del flusso di funzionamento.
Risulta evidente la possibilit di riutilizzo dei componenti che
formano il flusso, che sono autocontenenti, e funzionanti in base al
contratto definito nel file di configurazione.
12 auth: Massimiliano Dess狸 desmax74@yahoo.it
13. Struttura (vers. 0.1)
10 classi 1 interfaccia (escluse classi
di test e mock object)
3 Jsp/JSTL (esclusa la index.jsp)
13 auth: Massimiliano Dess狸 desmax74@yahoo.it
14. Qualit codice progetto
Quello che non c竪 non si rompe e non aggiunge peso
Antico proverbio della ingegneria motociclistica
Validissimo per il software !
Non deve essere scritto codice inutile che aumenta la possibilit di errori e rallenta
anche il funzionamento.
Questo risultato si ottiene accompagnando il codice da quanti pi湛 possibili test,
meglio se scritti prima del codice (TDD).
Il codice deve essere misurato con strumenti di profiling e di misurazione
metrica.
Refactoring come abitudine !
14 auth: Massimiliano Dess狸 desmax74@yahoo.it
18. Strumenti visuali di sviluppo
Gaijin Studio for Spring Web Flow
18 auth: Massimiliano Dess狸 desmax74@yahoo.it
19. Evoluzione progetto Magic Box
Vers.0.1: versione minimale con soli requisiti centro Avis Sestu
Versioni successive:
Tutte le classi gestibili e monitorabili attraverso: JMX
Accesso database: Jdbc, JDO, Ibatis
Autenticazione: Acegi , AOP
Schedulazione operazioni: Quartz, JMX
Logging: AOP
Template engine per varie operazioni: Velocity
Mail
19 auth: Massimiliano Dess狸 desmax74@yahoo.it
20. Articoli italiani
Inversion of Control o Dependency Injection
Spring Framework
Spring Web Flow
Spring Bean Doc
Spring e Jetspeed2
Recensioni libri Spring
Disponibile lista link ai vari articoli (Jug e Mokabyte) alla pagina:
http://www.jugsardegna.org/vqwiki/jsp/Wiki?MassimilianoDessi
20 auth: Massimiliano Dess狸 desmax74@yahoo.it
21. Riferimenti
Spring framework: http://www.springframework.org/
Spring Web Flow:
http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Home
Spring Bean Doc:
http://opensource.atlassian.com/confluence/spring/display/BDOC/Home
Gaijin-studio:http://gaijin-studio.sourceforge.net
Spring IDE :http://springide.org/project
Clover: http://www.cenqua.com/clover/
Metrics : http://metrics.sourceforge.net/
Eclipse : http://www.eclipse.org/
21 auth: Massimiliano Dess狸 desmax74@yahoo.it
22. Fine
We believe not only that J2EE development should be much
simpler than the mixture of drudgery
and complexity its often made out to be, but that developing
J2EE applications should be fun
Rod Johnson
22 auth: Massimiliano Dess狸 desmax74@yahoo.it