spring web flow
DESCRIPTION
Apresetação sobre o spring web flowTRANSCRIPT
Spring Web Flow
Desvendando o Spring Web Flow
Thiago Baesso Procaci
Spring Web Flow
Agenda
Apresentar o Spring Web Flow.
Testes unitários com o Spring Web Flow.
Spring Web Flow
Tipos de Aplicações Web
Aplicações com fluxo livre de navegação.
São apresentados ao usuário um conjunto de links ou botões e o usuário escolhe onde ir (websites).
Conversação unilateral. O usuário só diz onde quer ir e a aplicação o redireciona.
Spring Web Flow
Exemplo fluxo livre de navegação
Links para direcionar o usuário.
Spring Web Flow
Tipos de Aplicações Web
Aplicações com interações com o usuário sofisticadas.
A aplicação guia o usuário com base na conversação estabelecida com ele.
A aplicação faz perguntas e dependendo das respostas do usuário ela o direciona para um determinado conteúdo.
São as aplicações que geralmente desenvolvemos.
Spring Web Flow
Definindo fluxos web em nossas aplicações
Definir fluxos web é uma tarefa trabalhosa.
Framewoks usados no mercado:
1. Spring MVC
2. JSF
3. Struts
Entre outros.
Spring Web Flow
Problemas com fluxos no Struts, JSF e Spring MVC.
Forçam o desenvolvedor a representar fluxos através de simples controllers e páginas JSPs ou xhtml.
Vejamos o Struts...
Spring Web Flow
Abordagem Struts....
Mapear uma requisição web a uma ação no controller.
A ação decide para qual página o usuário irá posteriormente.
É 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).
Outro problema é a falta de flexibilidade quando precisa-se de reutilizar fluxos.
Spring Web Flow
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
Spring Web Flow
Como funciona o Spring Web Flow
Permite manipular a funcionalidade a ser implementada como uma máquina de estado.
A representação dessa máquina de estado é feita através de arquivos XML.
Mais flexível na representação de fluxos.
Spring Web Flow
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.
Spring Web Flow
Funcionamento geral do fluxo
Tela busca
Tela detalhe
Tela listagem
Spring Web Flow
Máquina de estados no web flow
Estado inicial
Tela busca
Tela detalhe
Tela listagem
Spring Web Flow
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
Spring Web Flow
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
Spring Web Flow
Tela de listagem
telaListagem.xhtml
Spring Web Flow
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.
Spring Web Flow
Testes unitários de fluxos
Garantir qualidade significa testar.
O spring web flow permite fazer testes unitários das definições dos fluxos nos XML.
Spring Web Flow
Como testar um fluxo?Classe de apoio para os testes
Instancia o mock (Mockito)
Bean do fluxo
XML com o fluxo a ser testado
Spring Web Flow
Spring Web Flow
Fim