Spring Web Flow - TeeJUG 2008

21
14/04/2008 Mohamed Ahmed SASSI [email protected]

Transcript of Spring Web Flow - TeeJUG 2008

Page 1: Spring Web Flow - TeeJUG 2008

14/04/2008

Mohamed Ahmed [email protected]

Page 2: Spring Web Flow - TeeJUG 2008

14/04/2008

Plan

IntroductionIntroduction

Pourquoi Spring Web Flow ?Pourquoi Spring Web Flow ?

DémoDémo

ArchitectureArchitecture

ExempleExemple

RécapitulatifRécapitulatif

Page 3: Spring Web Flow - TeeJUG 2008

14/04/2008

Qui suis-je ?

Mohamed Ahmed SASSI

� Diplômé de l’INSAT (Génie Logiciel)� Actuellement Consultant JEE chez Oxia

Page 4: Spring Web Flow - TeeJUG 2008

14/04/2008

Qu’est ce que Spring Web Flow

� Spring Web Flow est un sous-projet du projet Spring Framework

� Spring Web Flow permet de construire des modules réutilisable et indépendantsappelés flows

Page 5: Spring Web Flow - TeeJUG 2008

14/04/2008

Pourquoi Spring Web Flow ?

� Définition du flux� Le flux de navigation est clairement visible a travers la définition de flux Web (XML file)

� La définition du flux est totalement indépendantes des spécificités web.

� Définition technique cohérente du webflow� On n’est pas forcé d’utiliser des contrôleurs spécifiques dans des situations très particulières

Page 6: Spring Web Flow - TeeJUG 2008

14/04/2008

Quoi d’autre ?

• Navigation• L'application Web typique est un mélange d'exigences de navigation • Navigation libre

• Stateless• Lors de l’invocation:

• Elle fait le travail demandé• Sélectionne la view à afficher

• Le tout dans une seule request

• Flux contrôlé• Statefull• Guide l'utilisateur avec une progression linéaire • Affiche une view en sollicitant les données demandées par cette dernière

Page 7: Spring Web Flow - TeeJUG 2008

14/04/2008

et puis ??

� Scopes� Anciennes Applications Web

• Request Scope• Session Scope• Application Scope

� Solution Spring Web Flow• Request Scope• Flash Scope• Flow Scope• Conversation Scope

� � Scopes s’adaptent mieux aux uses cases de navigation

Page 8: Spring Web Flow - TeeJUG 2008

14/04/2008

Encore ??!!

� Spring Web Flow (SWF) gère totalement :� Les conversations de l’utilisateur avec l’application Web.

� L’état dans lequel se trouve l’application avec possibilité de sauvegarde sur disque dur pour un retour ultérieur.

� Tous les contrôles de navigation tel que Le retour en arrière et le rafraîchissement …

� Les continuations : SWF peut restaurer l’état dans lequel il était et toutes ses variables avec les anciennes valeurs.

Page 9: Spring Web Flow - TeeJUG 2008

14/04/2008

Architecture

� L’intégration � Spring Web Flow est très indépendant �Il a un point d’entrée spécifique pour les frameworks les plus connus

Page 10: Spring Web Flow - TeeJUG 2008

14/04/2008

Architecture interne

� FlowExecutionManager est la façade centrale responsable de lancer les exécutions de flux pour les clients.

� Chaque exécution d’un flux est une nouvelle conversation avec le serveur.

� chaque conversation prend une structure de données locale propre à elle, appelée flow scope

Page 11: Spring Web Flow - TeeJUG 2008

14/04/2008

Composantes

� Avec Spring Web Flow, la tâche principale des développeurs est le design et la mise en place de la définition du flux.

� Web flow est composé d’un ensemble de states

� Chaque state contient un ou plusieurs transitions utilisés pour aller vers les autres states.

� La transition est déclenché avec un event.

Page 12: Spring Web Flow - TeeJUG 2008

14/04/2008

Flows (Flux)

� Le flux définit une conversation, ou un dialogue, entre les utilisateurs et le serveur

Page 13: Spring Web Flow - TeeJUG 2008

14/04/2008

States (États)

� Les étapes d'un flux sont appelés states.� Action state

• Exécute un code applicatif typiquement délégué à un service dans le middle tier.

� View state• Affiche une vue, permettant ainsi à l'utilisateur de participer au flux en entrant des données ou en voyant un message.

� Subflow state• Appelle un autre flux comme sous-flux (subflow).

� Decision state• Évalue une condition pour conduire une transition à un nouvel état (state).

� Start State• Indique par quel état le flux commence.

� End state• Termine un flux.

Page 14: Spring Web Flow - TeeJUG 2008

14/04/2008

Transitions

� Tous les états, sauf des états finaux (endstates), sont transitionable et maintiennent un jeu d'une ou plusieurs transitions qui définissent "les chemins permis" à d'autres états

� La transition est déclenché avec un event.

Page 15: Spring Web Flow - TeeJUG 2008

14/04/2008

Events (Événements)

� Un événement est traité comme un résultat d'état, il est considéré comme le résultat logique de l'exécution d'un état

� Ce n’est que “Quelque chose qui s’est passé” dans l’état.

Page 16: Spring Web Flow - TeeJUG 2008

14/04/2008

Récapitulons !!

� Les importants avantages de SWF:� capture le flux de navigation d'une façon claire et facilement lisible

� Permet de modéliser la navigation dans une application web avec une manière cohérente.

� Gère tous les contrôles de navigations, assurant le bon fonctionnement de l’application même si l’utilisateur utiliser le retour arrière ou le refresh.

� Permet de packager une partie d’une application web comme un module indépendant et réutilisable.

� offre une gestion sophistiquée d'état, fournissant plusieurs nouveaux scopes pour les données d’une conversation

Page 17: Spring Web Flow - TeeJUG 2008

14/04/2008

L’exemple (Phonebook)

Page 18: Spring Web Flow - TeeJUG 2008

14/04/2008

Principe de l’application

� Permet de chercher un salarié de la sociétéutilisant quelques critères de recherche

� Une fois que la personne trouvée, il est possible de consulter ses informations détaillées (le téléphone, les collègues)

Page 19: Spring Web Flow - TeeJUG 2008

14/04/2008

Application

� Le code source pour l'application phonebook est inclus dans la distribution de Spring Web Flow.

� Vous pouvez aussi essayer l'application phonebook en ligne à :

http://spring.ervacon.com/swf-phonebook/.

Page 20: Spring Web Flow - TeeJUG 2008

14/04/2008

Intégration avec Spring MVC

� Le composant qui fait cette intégration est un contrôleur spécifique de SWF:

org.springframework.webflow.executor.mvc.FlowController

� Ce contrôleur traitera tout le Flux côtéapplication

� Configuration dans phonebook-servlet-config.xml

<bean name="/phonebook.htm" class=

"org.springframework.webflow.executor.mvc.FlowController">

<property name="flowExecutor" ref="flowExecutor"/>

</bean>

Page 21: Spring Web Flow - TeeJUG 2008

14/04/2008

La démo