SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
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 it’s often made out to be, but that developing
                 J2EE applications should be fun”
                           Rod Johnson



22                                            auth: Massimiliano Dessì desmax74@yahoo.it

Contenu connexe

Tendances

Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftAsp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
 
Utilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperUtilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperStefano Ottaviani
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailStefano Ottaviani
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringMarcello Teodori
 
Node.js – Convincing the boss
Node.js – Convincing the bossNode.js – Convincing the boss
Node.js – Convincing the bossClaudio Cicali
 

Tendances (7)

Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftAsp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
 
Utilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperUtilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software Developer
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
Yagwto
YagwtoYagwto
Yagwto
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
Node.js – Convincing the boss
Node.js – Convincing the bossNode.js – Convincing the boss
Node.js – Convincing the boss
 

Similaire à Spring E Spring Web Flow Nel Progetto Jug Avis Web

Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockoutDotNetCampus
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS DevicesAndrea Picchi
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveCommit University
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTfirenze-gtug
 
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.NetAlessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.NetAlessandro Forte
 
Sharepoint 2010 JQuery
Sharepoint 2010  JQuerySharepoint 2010  JQuery
Sharepoint 2010 JQueryDecatec
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue jsGianfranco Castro
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
Oltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetOltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetVito Flavio Lorusso
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoGiuneco S.r.l
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
TDD e Continuous Delivery sull'infrastruttura
TDD e Continuous Delivery sull'infrastrutturaTDD e Continuous Delivery sull'infrastruttura
TDD e Continuous Delivery sull'infrastrutturaFilippo Liverani
 
Tdd e continuous delivery sull'infrastruttura
Tdd e continuous delivery sull'infrastrutturaTdd e continuous delivery sull'infrastruttura
Tdd e continuous delivery sull'infrastrutturaCodemotion
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
Enterprise ASP.NET Web Forms 4.0
Enterprise ASP.NET Web Forms 4.0Enterprise ASP.NET Web Forms 4.0
Enterprise ASP.NET Web Forms 4.0Codemotion
 

Similaire à Spring E Spring Web Flow Nel Progetto Jug Avis Web (20)

Mobile UI Design
Mobile UI DesignMobile UI Design
Mobile UI Design
 
Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockout
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al Prgressive
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Ddive Xpage852
 
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.NetAlessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Sharepoint 2010 JQuery
Sharepoint 2010  JQuerySharepoint 2010  JQuery
Sharepoint 2010 JQuery
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue js
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
Oltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetOltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale Set
 
Wpo extended
Wpo extendedWpo extended
Wpo extended
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo Greco
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
3DD 1e Reconfig
3DD 1e Reconfig3DD 1e Reconfig
3DD 1e Reconfig
 
TDD e Continuous Delivery sull'infrastruttura
TDD e Continuous Delivery sull'infrastrutturaTDD e Continuous Delivery sull'infrastruttura
TDD e Continuous Delivery sull'infrastruttura
 
Tdd e continuous delivery sull'infrastruttura
Tdd e continuous delivery sull'infrastrutturaTdd e continuous delivery sull'infrastruttura
Tdd e continuous delivery sull'infrastruttura
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Enterprise ASP.NET Web Forms 4.0
Enterprise ASP.NET Web Forms 4.0Enterprise ASP.NET Web Forms 4.0
Enterprise ASP.NET Web Forms 4.0
 

Plus de Massimiliano Dessì

When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...Massimiliano Dessì
 
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome Massimiliano Dessì
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudMassimiliano Dessì
 
Web Marketing Training 2014 Community Online
Web Marketing Training 2014 Community OnlineWeb Marketing Training 2014 Community Online
Web Marketing Training 2014 Community OnlineMassimiliano Dessì
 
Vert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMVert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMMassimiliano Dessì
 
Reactive applications Linux Day 2013
Reactive applications Linux Day 2013Reactive applications Linux Day 2013
Reactive applications Linux Day 2013Massimiliano Dessì
 
Scala Italy 2013 extended Scalatra vs Spring MVC
Scala Italy 2013 extended Scalatra vs Spring MVCScala Italy 2013 extended Scalatra vs Spring MVC
Scala Italy 2013 extended Scalatra vs Spring MVCMassimiliano Dessì
 
Codemotion 2013 scalatra_play_spray
Codemotion 2013 scalatra_play_sprayCodemotion 2013 scalatra_play_spray
Codemotion 2013 scalatra_play_sprayMassimiliano Dessì
 
Why we cannot ignore functional programming
Why we cannot ignore functional programmingWhy we cannot ignore functional programming
Why we cannot ignore functional programmingMassimiliano Dessì
 
Three languages in thirty minutes
Three languages in thirty minutesThree languages in thirty minutes
Three languages in thirty minutesMassimiliano Dessì
 

Plus de Massimiliano Dessì (20)

Code One 2018 maven
Code One 2018   mavenCode One 2018   maven
Code One 2018 maven
 
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
 
Hacking Maven Linux day 2017
Hacking Maven Linux day 2017Hacking Maven Linux day 2017
Hacking Maven Linux day 2017
 
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloud
 
Docker dDessi november 2015
Docker dDessi november 2015Docker dDessi november 2015
Docker dDessi november 2015
 
Docker linuxday 2015
Docker linuxday 2015Docker linuxday 2015
Docker linuxday 2015
 
Openshift linuxday 2014
Openshift linuxday 2014Openshift linuxday 2014
Openshift linuxday 2014
 
Web Marketing Training 2014 Community Online
Web Marketing Training 2014 Community OnlineWeb Marketing Training 2014 Community Online
Web Marketing Training 2014 Community Online
 
Vert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMVert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVM
 
Reactive applications Linux Day 2013
Reactive applications Linux Day 2013Reactive applications Linux Day 2013
Reactive applications Linux Day 2013
 
Scala Italy 2013 extended Scalatra vs Spring MVC
Scala Italy 2013 extended Scalatra vs Spring MVCScala Italy 2013 extended Scalatra vs Spring MVC
Scala Italy 2013 extended Scalatra vs Spring MVC
 
Codemotion 2013 scalatra_play_spray
Codemotion 2013 scalatra_play_sprayCodemotion 2013 scalatra_play_spray
Codemotion 2013 scalatra_play_spray
 
Why we cannot ignore functional programming
Why we cannot ignore functional programmingWhy we cannot ignore functional programming
Why we cannot ignore functional programming
 
Scala linux day 2012
Scala linux day 2012 Scala linux day 2012
Scala linux day 2012
 
Three languages in thirty minutes
Three languages in thirty minutesThree languages in thirty minutes
Three languages in thirty minutes
 
MongoDB dessi-codemotion
MongoDB dessi-codemotionMongoDB dessi-codemotion
MongoDB dessi-codemotion
 
MongoDB Webtech conference 2010
MongoDB Webtech conference 2010MongoDB Webtech conference 2010
MongoDB Webtech conference 2010
 
RESTEasy
RESTEasyRESTEasy
RESTEasy
 
Spring Roo Internals Javaday IV
Spring Roo Internals Javaday IVSpring Roo Internals Javaday IV
Spring Roo Internals Javaday IV
 

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 it’s often made out to be, but that developing J2EE applications should be fun” Rod Johnson 22 auth: Massimiliano Dessì desmax74@yahoo.it