spring web flow - teejug 2008
TRANSCRIPT
14/04/2008
Mohamed Ahmed [email protected]
14/04/2008
Plan
IntroductionIntroduction
Pourquoi Spring Web Flow ?Pourquoi Spring Web Flow ?
DémoDémo
ArchitectureArchitecture
ExempleExemple
RécapitulatifRécapitulatif
14/04/2008
Qui suis-je ?
Mohamed Ahmed SASSI
� Diplômé de l’INSAT (Génie Logiciel)� Actuellement Consultant JEE chez Oxia
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
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
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
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
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.
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
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
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.
14/04/2008
Flows (Flux)
� Le flux définit une conversation, ou un dialogue, entre les utilisateurs et le serveur
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.
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.
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.
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
14/04/2008
L’exemple (Phonebook)
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)
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/.
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>
14/04/2008
La démo