Notícias
JSF 2.0 Scrum Demo

26/06/2009

O Projeto





Vinicius Nunes Vinicius Senger

Este projeto começou no TDC Floripa 2008, onde o instrutor Vinicius Rodrigues Nunes (Vinny) apresentou uma palestra sobre os novos recursos de JSF 2.0 e, para isto, desenvolveu uma aplicação demo.

Nós da Globalcode sempre estivemos muito envolvidos com JSF, desde os projetos FacesAnnotations e SuperCRUD criados pelo Vinicius, o curso AW4 - Desenvolvimento com JSF de minha autoria, o Core Web criado originalmente pelo Vinicius Senger e mantido por vários instrutores: Alberto Lemos (Spock), Melissa Vilella, Kleber Xavier... entre tantos outros minicursos onde todos nós colaboramos, sem contar as diversas consultorias e treinamentorings que envolvem JSF e outros frameworks.


Desta forma, como grandes fãs e usuários desta tecnologia, eu, Yara Senger, sempre procurei participar da sala de JSF no IRC e convidar outras pessoas para ficar em contato com pessoas que estão desenvolvendo e também o pessoal da specificação. Um belo dia, lendo um blog atrasado do Ed Burns vi a seguinte chamada:


"Need real-world JSF 1.2 sample app: Win a free rockstar book!"


Ed Burns Yara Senger

E pensei comigo, isto é a nossa cara, porque o Ed Burns não me falou diretamente, agora alguém já deve ter feito!

Entrei no IRC na mesma hora e conversei com ele, ninguém tinha respondido a chamada, era a nossa chance. Conversei com o Vinicius Rodrigues Nunes (Vinny) e achamos que seria uma excelente oportunidade de melhorar a aplicação de Scrum, juntando duas áreas que acreditamos: JSF 2.0 e métodos ágeis, e concordamos em doar a aplicação! Apesar da chamada ser para JSF 1.2 eles tinham os planos de migrar para JSF 2.0 e nossa aplicação já era JSF 2.0.


Além disto, havia outra ligação especial entre JSF e Scrum, pois havíamos participado do Yahoo! Open Hack Day, onde ganhamos o prêmio Bridging the Gap, pelos 4 projetos entregues no evento em 2008:

  • Renderizador JSF para a linguagem Blueprint
  • Aplicação para celular que permite estimar estórias com o jogo de Poker/Scrum criada utilizando o renderizador
  • Plugin para NetBeans para dar suporte a Blueprint!
  • Integração das aplicações geradas pelo SuperCRUD com Flickr!

O nosso time era grande, mas vale reforçar a participação do Wagner Santos, Rafael Nunes e Eder Magalhães no time. Veja mais informações na página Bridging the Gap.


Assinamos os formulários de colaboração e começamos o trabalho. O Vinny fez diversos ajustes na aplicação e fizemos o primeiro commit para análise do código e das funcionalidades.


O André Frota, designer da Globalcode, já estava colaborando, criando o layout e as imagens necessárias. Como a aplicação tem vários skins foi bastante trabalhoso, porque era necessário criar todas as imagens em todas as cores.


Apareceram diversas solicitações de alteração: não era permitido usar nenhuma API de terceiros, tem que usar Maven, tem que rodar no Glassfish. E o tempo corria. Corria, corria.


Dr. Spock André Frota

Após atendermos todos os requisitos do projeto inicial, ficamos sabendo que a aplicação se tornaria uma das demonstrações oficiais a ser incorporada na implementação de referência do JSF 2.0. Como somos perfeccionistas e vaidosos, resolvemos promover novas mudanças, então, mudamos, mudamos, mudamos para melhorar ... ah, e depois mudamos mais um pouco.

O Spock nos ajudou ao refatorar para simplificar toda a camada de persistência e componentes de negócios para managed beans com os recursos novos do JSF 2.0. Para tornar independente de bibliotecas de terceiros, ele também migrou a base de dados de MySQL para JavaDB, de Tomcat para Glassfish e de Hibernate para EclipseLink como JPA provider. Também foi adicionado o suporte ao Maven para permitir a compilação e empacotamento automatizados, além de facilitar o acesso ao projeto através das IDEs NetBeans e Eclipse. Enquanto isso, eu e o André trabalhávamos nas telas para melhorar o layout, imagens, cores, fontes, internacionalização, o suporte a skins e a ap?icação de componentes compostos.


Ana Abrantes Elaine Silva

A Ana Abrantes e o Vinicius Senger nos ajudaram bastante no preparo do ambiente de execução baseado no Glassfish num servidor virtualizado para homologação. Por fim, quase no final até a instrutura Elaine Quintino se envolveu com o projeto e realizou algumas coreções importantes. Foram várias horas de dedicação junto com o time, ou melhor, longe do time já que o desenvolvimento era totalmente remoto com os integrantes em cidades diferentes e até em país diferente.


Até o Ed Burns acabou colaborando, implementando validação com Bean Validation na nossa aplicação. Foi então, que o Ed Burns perguntou se poderia usar a aplicação demo no Hands-on Labs que ele ia ministrar no JavaOne: CLARO QUE PODE, nós dissemos!


E finalmente chegou o JavaOne, onde tivemos a oportunidade de conhecer pessoalmente várias pessoas do JSF Expert Group, do IRC e do Glassfish e várias delas conheciam nossa aplicação.


Foi muito interessante participar deste projeto, foi muito interessante colaborar com uma tecnologia que acreditamos, foi muito interessante colaborar com Open Source trabalhando com este time cheio de energia e com muita disposição para investir em suas horas livres neste projeto! Parabéns a todo o time!



A Aplicação de Scrum

Os requisitos da aplicação pareciam simples: usar banco de dados, ter um CRUD e usar o máximo possível de recursos de JavaServer Faces 2.0, então... então resolvemos ampliar um pouco a aplicação originalmente criada pelo Vinicius Rodrigues Nunes (Vinny), instrutor da V.Office em Floripa e fã de JSF.


Basicamente, temos uma aplicação que gerencia um projeto de acordo com Scrum, ou seja, cada PROJETO tem 0..N SPRINTs, cada SPRINT tem 0..N ESTORIAS, cada ESTORIA tem 0..N TAREFAS:

  • Gerenciar projeto (CRUD)
  • Gerenciar Sprints do projeto (CRUD)
  • Gerenciar Estórias do Sprint (CRUD)
  • Gerenciar Tarefas da Estória (CRUD)
  • Visualizar a DashBoard, que mostra todas as Tarefas de um Sprint separado pelo status da Tarefa, que pode ser TO DO, DOING ou DONE

A aplicação foi criada para utilizar:

  • JSF 2
  • JPA
  • Glassfish V2 e V3
  • Java DB
  • Maven

As seguintes novidades de JSF 2.0 foram utilizadas:

  • Facelets
  • Suporte a AJAX
  • Composite Components
  • Navegação implícita
  • Configuração por annotations e configuração no faces-confg.xml
  • Novas tags <body>, <h:head>, etc...
  • BeanValidation (contribuição do próprio Ed Burns)
  • Injeção de Entity Manager
  • ManagedProperties
  • <h:body><h:head>


Tela de Sprints Tela de Formulário
Tela de Skins Tela de Dashboard

O Time

Vinicius Nunes Yara Senger Vinicius Senger Dr. Spock Ana Abrantes Elaine Silva André Frota Ed Burns
Vinicius Nunes Yara Senger Vinicius Senger Alberto Lemos (Spock) Ana Abrantes Elaine Quintino André Frota Ed Burns