spring web flow

21
Spring Web Flow Desvendando o Spring Web Flow Thiago Baesso Procaci

Upload: thiagoprocaci

Post on 25-May-2015

4.525 views

Category:

Technology


2 download

DESCRIPTION

Apresetação sobre o spring web flow

TRANSCRIPT

Page 1: Spring Web Flow

Spring Web Flow

Desvendando o Spring Web Flow

Thiago Baesso Procaci

Page 2: Spring Web Flow

Spring Web Flow

Agenda

Apresentar o Spring Web Flow.

Testes unitários com o Spring Web Flow.

Page 3: 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.

Page 4: Spring Web Flow

Spring Web Flow

Exemplo fluxo livre de navegação

Links para direcionar o usuário.

Page 5: Spring Web Flow

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.

Page 6: Spring Web Flow

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.

Page 7: Spring Web Flow

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...

Page 8: Spring Web Flow

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.

Page 9: Spring Web Flow

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

Page 10: Spring Web Flow

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.

Page 11: Spring Web Flow

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.

Page 12: Spring Web Flow

Spring Web Flow

Funcionamento geral do fluxo

Tela busca

Tela detalhe

Tela listagem

Page 13: Spring Web Flow

Spring Web Flow

Máquina de estados no web flow

Estado inicial

Tela busca

Tela detalhe

Tela listagem

Page 14: Spring Web Flow

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

Page 15: Spring Web Flow

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

Page 16: Spring Web Flow

Spring Web Flow

Tela de listagem

telaListagem.xhtml

Page 17: Spring Web Flow

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.

Page 18: Spring Web Flow

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.

Page 19: Spring Web Flow

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

Page 20: Spring Web Flow

Spring Web Flow

Page 21: Spring Web Flow

Spring Web Flow

Fim