2.4 TECNOLOGIAS UTILIZADAS 13 !
2.4.5 HIBERNATE 20 !
O Hibernate é um framework para o mapeamento objeto-relacional escrito na linguagem Java, mas também é disponível em .Net como o nome NHibernate. Este framework facilita o mapeamento dos atributos entre uma base tradicional de dados relacionais e o modelo objeto de uma aplicação, mediante o uso de arquivos (XML) ou anotações Java.
2.4.6 jQuery
jQuery é uma biblioteca de código aberto cuja sintaxe foi desenvolvida para tornar mais simples a navegação do documento HTML, a seleção de elementos DOM, criar animações, manipular eventos e desenvolver aplicações AJAX. A biblioteca também oferece a possibilidade de criação de plug-ins sobre ela. Fazendo uso de tais facilidades, os desenvolvedores podem criar camadas de abstração para interações de mais baixo nível, simplificando o desenvolvimento de aplicações Web dinâmicas de grande complexidade.
Principais funcionalidades do jQuery:
• Resolução da incompatibilidade entre os navegadores; • Redução de código;
• Reutilização do código através de plug-ins;
• Utilização de uma vasta quantidade de plug-ins criados por outros desenvolvedores;
• Trabalha com AJAX e DOM;
• Implementação segura de recursos do CSS1, CSS2 e CSS3.
2.4.7 Tiles
Apache Tiles é um framework de composição de modelo de layouts. O Tiles foi originalmente criado para simplificar o desenvolvimento de interfaces de aplicativos Web em Java, mas não está mais restrito ao ambiente Web Java EE.
Tiles permite aos desenvolvedores definir fragmentos de páginas que podem ser montados como uma única página completa em tempo de execução. Estes fragmentos, ou tiles, pode ser utilizado como simples “includes” para reduzir a duplicação de elementos comuns entre as páginas ou incorporado dentro de outros tiles para desenvolver uma série de modelos reutilizáveis. Esses modelos agilizam o desenvolvimento, permitindo ter uma aparência consistente na aplicação como um todo.
2.4.8 Maven
O Apache Maven é uma poderosa ferramenta utilizada para gerenciar projetos Java. O Maven fornece todo o controle de compilação da aplicação, controle de bibliotecas, deployment e relatórios estatísticos. A configuração do Maven se baseia em um arquivo chamado pom.xml (Project Object
Model), onde são declaradas todas as dependências do projeto. Depois de feita a
configuração, o Maven se encarrega de analisar as dependências declaradas, fazer o download de todas as elas a partir de um repositório, e utilizá-las para compilar, empacotar e distribuir o artefato que pode ser um JAR, WAR ou EAR.
Algumas características
• Facilitar e unificar o processo de build;
• Fornecer mais qualidade de informação sobre o projeto; • Permitir transparente migração para novas versões; • Ajudar com boas práticas no desenvolvimento.
2.4.9 Git
Git é um sistema de controle de versão distribuído e um sistema de gerenciamento de código fonte, com ênfase em velocidade. O Git foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel Linux, mas foi adotado por muitos outros projetos.
Normalmente a maioria dos controles de versão guardam as mudanças do código como alterações de um determinado arquivo. Ou seja, a cada mudança no arquivo, o sistema guarda essa mudança apenas e não o arquivo inteiro.
O Git pensa um pouco diferente: ele trata os dados como snapshots. Cada vez que commitamos (commitar é enviar alterações para o controle de versão) ou salva o estado do projeto no Git, ele basicamente guarda um snapshot de como todos os arquivos estão naquele momento e guarda a referência desse estado. Para os arquivos que não foram modificados, ele não guarda uma nova versão, ele apenas faz um link para a versão anterior idêntica que já foi guardada em outro
momento.
2.4.10 JasperReports e IReport
O JasperReports é um framework para a geração de relatórios. É uma ferramenta totalmente open source e gratuita, e a mais utilizada com esse propósito atualmente. Entre as funcionalidades do JasperReports pode-se destacar:
• É capaz de exportar relatórios para diversos formatos diferentes, tais como PDF, HTML, XML, XLS, etc;
• Aceita diversas formas de entrada de dados, tais como um arquivo XML ou CSV, conexão com o banco de dados, uma sessão do Hibernate, uma coleção de objetos em memória, etc;
• Permite o uso de diagramas, gráficos, e até códigos de barras.
Um aspecto importante do JasperReports é que o layout do relatório é definido em um arquivo XML, geralmente com a extensão .jrxml. Este XML possui todas as informações de formatação do relatório, e além disso, possui os campos que serão preenchidos posteriormente, de acordo com a fonte de dados utilizada (data source). Como dito anteriormente, a fonte de dados pode variar, e ser uma tabela em uma base de dados, ou ser um arquivo CSV, porém a formatação do relatório será a mesma em ambos os casos.
Os passos para gerar um relatório são bem simples. O primeiro passo é compilar o relatório em XML. Depois da compilação, o resultado é um objeto do tipo JasperReport. O próximo passo é preencher o relatório com os dados, e o resultado dessa etapa fica armazenado em um objeto do tipo JasperPrint. Esse objeto já representa o relatório finalizado, e a partir dele pode-se enviar para impressão diretamente, ou exportar para um outro formato, tal como PDF por exemplo. Veja na figura 8 um diagrama ilustrando o processo completo:
Figura 8 Processo de exportação para formato PDF
Fonte: http://www.k19.com.br/artigos/wp-content/uploads/2010/11/diagrama.png
O iReport é uma ferramenta desenvolvida pela mesma empresa do JasperReports, a JasperForge, e por isso é muito comum ver os dois sendo usados em conjunto. Uma das dificuldades ao trabalhar com os relatórios, está na definição do layout. É complicado escrever o layout totalmente em XML, sem ter que se aprofundar em todas as tags e atributos possíveis, e além disso posicionar todos os elementos corretamente. Na prática, é muito raro alguém editar o JRXML manualmente, e sim apenas para fazer alguns pequenos ajustes quando necessários. O processo normal é utilizar alguma ferramenta para gerar o JRXML automaticamente, e o iReport é utilizado com esse propósito.
O iReport é um aplicativo gráfico, que permite que você “desenhe” um relatório, utilizando uma palheta, e arrastando e soltando componentes, de forma bem parecida com a criação de interfaces e janelas para programas. Ao salvar, automaticamente será gerado um JRXML que você poderá utilizar na aplicação que estiver desenvolvendo. A vantagem é que não é necessário que você conheça a fundo o XML a ser editado, economizando tempo de desenvolvimento. Ele também traz um conjunto pronto de modelos que você já pode utilizar diretamente, ou então, escrever seus próprios modelos e reaproveitá-los sempre que precisar criar um novo tipo de relatório.
3. ESTUDO DE CASO
3.1 DESCRIÇÃO DO PROBLEMA
Todo ano, centenas de instituições de assistência social de todo o Brasil, pertencentes a um movimento religioso nacional, reúnem-se em Brasília, no período da páscoa, durante três dias, para traçarem as metas de atividades que serão implantadas em suas cidades no próximo ano exercício.
Esse grupo, atua na disseminação e na propagação da Promoção Social Espírita, auxiliando a todos as instituições que participam desse evento a se organizarem como instituições referenciais no atendimento de crianças, jovens e adultos, na prevenção e tratamento de vícios e apoio a família.
Essas atividades são divididas em comissões de trabalho, agrupadas de acordo com a finalidade e/ou público alvo. Assim existem comissões específicas para infância, juventude, caridade, esclarecimento, dentre outras.
Cada atividade, possui uma metodologia para aplicação, material de apoio e objetivo específico, proposto e adaptado de acordo com o resultado obtido em anos anteriores pelas instituições que já implantaram a mesma atividade através da troca de experiências.
O processo no qual cada instituição escolhe as suas metas de implantação para o ano é chamado rodízio. O rodízio tem esse nome devido ao formato que é utilizado a mais de dez anos, onde cada comissão oferece facilitadores, que são pessoas com conhecimento avançado e específico dessa comissão, que auxiliam as instituições interessadas na implantação das atividades em suas dúvidas sobre como implantar, ou como se planejar para uma implantação parcial ou futura. Hoje esses facilitadores se dividem em seis grupos por comissão, capazes de atender até doze instituições/cidades por período. No total são catorze comissões, divididas em 28 salas, cada sala com 3 grupos, num total de 84 grupos. Com capacidade de atendimento efetivo de 168 instituições por período.
No rodízio cada período é composto por 12 minutos. Cada cidade presente com suas instituições é direcionada a um grupo de facilitadores. Ocupando
assim todos os 84 grupos presentes. Ao dar início ao rodízio, as instituições começam a preencher suas fichas com as atividades que querem implantar em suas cidades. A quantidade de atividades disponíveis por comissão, variam de 15 à 90 atividades aproximadamente. A cada término de período, as instituições são direcionadas para a troca de facilitadores para poder contratar as atividades de outra comissão e assim se repete até que se tenha passado por facilitadores das catorze comissões.
Hoje, todo processo é feito em folhas carbonadas (vide Anexo IV), onde ao término de cada período a instituição deixa uma cópia com a o facilitador e leva o original consigo. A instituição decide qual atividade irá implantar, quando irá implantar e se será completa ou parcialmente.
Como o passar dos anos, o número de instituições tem aumentado consideravelmente, chegando hoje perto de 300 instituições. Devido a dificuldades de local, que não permite que seja expandido o número de facilitadores, e de tempo, que não permite que se estenda o tempo de atendimento, o processo acaba sobrecarregando os facilitadores que em determinados períodos chegam a atender mais de 30 instituições, causando quase sempre um prejuízo na coleta das informações.
Outro ponto de dificuldade está na base histórica. Devido a quantidade de fichas guardadas, letras incompreensíveis, falhas nas cópias carbonadas, não é possível resgatar os dados, sendo estas fichas usadas apenas para orientação da própria instituição no sentido do que haveria de ser feito ou não. Mas o responsável por cada comissão a nível nacional, acaba não tendo controle sobre as atividades que foram contratadas, nem sobre quais estão implantadas ou não.
Convidado pelos organizadores do evento a avaliar a possibilidade de utilização das tecnologias disponíveis no mercado para melhorar o processo, planejamos e desenvolvemos o Sistema de Acompanhamento de Metas, que será descrito nos próximos capítulos.