Spring Web Flow

5,113 views

Published on

Apresetação sobre o spring web flow

Published in: Technology, News & Politics
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,113
On SlideShare
0
From Embeds
0
Number of Embeds
2,576
Actions
Shares
0
Downloads
41
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Spring Web Flow

  1. 1. Desvendando o Spring Web Flow Thiago Baesso Procaci
  2. 2. <ul><li>Agenda </li></ul><ul><li>Apresentar o Spring Web Flow. </li></ul><ul><li>Testes unitários com o Spring Web Flow. </li></ul>
  3. 3. <ul><li>Tipos de Aplicações Web </li></ul><ul><li>Aplicações com fluxo livre de navegação. </li></ul><ul><li>São apresentados ao usuário um conjunto de links ou botões e o usuário escolhe onde ir (websites). </li></ul><ul><li>Conversação unilateral. O usuário só diz onde quer ir e a aplicação o redireciona. </li></ul>
  4. 4. Exemplo fluxo livre de navegação Links para direcionar o usuário.
  5. 5. <ul><li>Tipos de Aplicações Web </li></ul><ul><li>Aplicações com interações com o usuário sofisticadas. </li></ul><ul><li>A aplicação guia o usuário com base na conversação estabelecida com ele. </li></ul><ul><li>A aplicação faz perguntas e dependendo das respostas do usuário ela o direciona para um determinado conteúdo. </li></ul><ul><li>São as aplicações que geralmente desenvolvemos. </li></ul>
  6. 6. <ul><li>Definindo fluxos web em nossas aplicações </li></ul><ul><li>Definir fluxos web é uma tarefa trabalhosa. </li></ul><ul><li>Framewoks usados no mercado: </li></ul><ul><li>Spring MVC </li></ul><ul><li>JSF </li></ul><ul><li>Struts </li></ul><ul><li>Entre outros. </li></ul>
  7. 7. <ul><li>Problemas com fluxos no Struts, JSF e Spring MVC. </li></ul><ul><li>Forçam o desenvolvedor a representar fluxos através de simples controllers e páginas JSPs ou xhtml. </li></ul><ul><li>Vejamos o Struts... </li></ul>
  8. 8. <ul><li>Abordagem Struts.... </li></ul><ul><li>Mapear uma requisição web a uma ação no controller. </li></ul><ul><li>A ação decide para qual página o usuário irá posteriormente. </li></ul><ul><li>É simples e funcional construir fluxos com o Struts porém, ele possui uma desvantagem: Todo o fluxo web é representado em um único arquivo de configuração (struts-config.xml). </li></ul><ul><li>Outro problema é a falta de flexibilidade quando precisa-se de reutilizar fluxos. </li></ul>
  9. 9. JSF e Spring MVC  Possuem algumas diferenças do Struts, mas a idéia é praticamente a mesma para representar fluxos. faces-config.xml (JSF) Mesma idéia do struts-config.xml
  10. 10. <ul><li>Como funciona o Spring Web Flow </li></ul><ul><li>Permite manipular a funcionalidade a ser implementada como uma máquina de estado. </li></ul><ul><li>A representação dessa máquina de estado é feita através de arquivos XML. </li></ul><ul><li>Mais flexível na representação de fluxos. </li></ul>
  11. 11. Exemplo prático. Considere o seguinte fluxo para manipulação de usuário (representado através de uma máquina de estados). Tela busca Tela detalhe Tela listagem As arestas são as transições de estado. q0, q1 e q2 são os estados. O funcionamento de estado + transições compõem o fluxo.
  12. 12. Funcionamento geral do fluxo Tela busca Tela detalhe Tela listagem
  13. 13. Máquina de estados no web flow Estado inicial Tela busca Tela detalhe Tela listagem
  14. 14. Analisando um estado View: referencia para telaBusca.xhtml As actions dos botões ou links disparam as transições. Bind com a variável nome. xhtml XML do fluxo
  15. 15. Disparando uma transição Tela busca Click em buscar Bean do container do spring na ação on render. Variáveis de bind transição Tela listagem Datatable iterando na variavel usuarioList
  16. 16. Tela de listagem telaListagem.xhtml
  17. 17. Meu controller é stateless. Não tem mais save state. Responsabilidade do spring web flow O reuso de fluxo, pode ser obtido através de herança ou subfluxos. O spring web flow permite.
  18. 18. <ul><li>Testes unitários de fluxos </li></ul><ul><li>Garantir qualidade significa testar. </li></ul><ul><li>O spring web flow permite fazer testes unitários das definições dos fluxos nos XML. </li></ul>
  19. 19. Como testar um fluxo? Classe de apoio para os testes Instancia o mock (Mockito) Bean do fluxo XML com o fluxo a ser testado
  20. 21. Fim 

×