際際滷

際際滷Share a Scribd company logo
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
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
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
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
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
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
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
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
Descrizione Jug Avis Web (Magic Box)
                 versione 0.1




9                              auth: Massimiliano Dess狸 desmax74@yahoo.it
Flusso di esecuzione


<<StartState, ViewState>>
     selectFile.view                                       <<ActionState>>
                             <<ActionState>>
                                                            insert.donors
                             bindAndValidate   Success                                Success


                Error


                Error


       <<ViewState>>
           exit              <<ActionState>>                  <<ViewState>>
                                 sendSms                  confirmation.viewTest
                                               Success
                   Success




  10                                                     auth: Massimiliano Dess狸 desmax74@yahoo.it
sms-flow.xml




11                  auth: Massimiliano Dess狸 desmax74@yahoo.it
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
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
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
Code Coverage (Clover)




15                    auth: Massimiliano Dess狸 desmax74@yahoo.it
Code Metrics




16                  auth: Massimiliano Dess狸 desmax74@yahoo.it
File configurazione dei bean (Spring BeanDoc)




17                                  auth: Massimiliano Dess狸 desmax74@yahoo.it
Strumenti visuali di sviluppo
Gaijin Studio for Spring Web Flow




18                                      auth: Massimiliano Dess狸 desmax74@yahoo.it
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
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
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
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

More Related Content

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
  • 10. Flusso di esecuzione <<StartState, ViewState>> selectFile.view <<ActionState>> <<ActionState>> insert.donors bindAndValidate Success Success Error Error <<ViewState>> exit <<ActionState>> <<ViewState>> sendSms confirmation.viewTest Success Success 10 auth: Massimiliano Dess狸 desmax74@yahoo.it
  • 11. sms-flow.xml 11 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
  • 15. Code Coverage (Clover) 15 auth: Massimiliano Dess狸 desmax74@yahoo.it
  • 16. Code Metrics 16 auth: Massimiliano Dess狸 desmax74@yahoo.it
  • 17. File configurazione dei bean (Spring BeanDoc) 17 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