• Nenhum resultado encontrado

M´ odulo Java e Op¸c˜ oes de Implementa¸c˜ ao

´

E necess´ario salientar as raz˜oes pela qual levaram a que este m´odulo fosse realizado na linguagem Java. E as raz˜oes residem no facto desta ser a linguagem mais utilizada no desenvolvimento dos projectos da empresa, e por ser tamb´em a linguagem em que eu e a grande maioria dos t´ecnicos de desenvolvimento nos sentimos mais familiar- izados para trabalhar. Esta ´e a maior componente de toda a aplica¸c˜ao Wiki4PGest em termos de tarefas funcionais.

´

E nesta componente que os dados dos projectos registados no PGest s˜ao acedi- dos e tratados, e s˜ao gerados ficheiros com toda essa informa¸c˜ao, para servirem de input ao m´odulo Python, para que este possa proceder `a gera¸c˜ao da p´aginas Wiki e apresent´a-las no sistema MediaWiki. ´E tamb´em nesta componente que s˜ao con- stru´ıdos os gr´aficos estat´ısticos de dados relativos `a gest˜ao dos projectos, para que o m´odulo Python os possa enviar para o MediaWiki e serem apresentados nas p´aginas Wiki dos projectos. Todo o output gerado por esta componente vai servir de input ao m´odulo Python que por sua vez tratar´a de enviar toda a documenta¸c˜ao gerada para o MediaWiki.

Figura 3.9: Execu¸c˜ao do m´odulo Java

Seguidamente, ´e apresentado o Modelo de Classes desta componente, com todas as classes e respectivos m´etodos implementados.

Neste modelo ´e representado o conjunto de pacotes de classes Java e respectivos m´etodos envolvidos na implementa¸c˜ao do Wiki4PGest.

Cap´ıtulo 3. Projecto - Wiki4PGest 21

Cap´ıtulo 3. Projecto - Wiki4PGest 22

As pr´oximas sec¸c˜oes pretendem oferecer uma boa percep¸c˜ao de todas as ex- ecu¸c˜oes que integram este m´odulo do Wiki4PGest.

V˜ao ser apresentadas as op¸c˜oes de implementa¸c˜ao dos v´arios aspectos funcionais deste m´odulo da aplica¸c˜ao, e vamos estudar detalhadamente cada funcionalidade implementada neste m´odulo, de maneira a compreender a finalidade de cada uma e como foram implementadas.

Acesso aos dados do PGest

Na classe main do m´odulo Java do Wiki4PGest, aquando do arranque da aplica¸c˜ao, ´e estabelecida uma liga¸c˜ao `a Base de Dados do PGest usando a classe Properties do Java que permite definir num ficheiro os campos da base de dados a aceder. Esta op¸c˜ao de implementa¸c˜ao permite que facilmente se configure o Wiki4PGest a operar sobre uma qualquer m´aquina onde esteja alojada a base de dados do PGest, bastando apenas alterar neste ficheiro os campos respectivos `a base de dados.

Figura 3.11: Ficheiro Properties

Este acesso ´e feito usando o JDBC(Java Data Base Connection) para sistemas Informix. Com esta liga¸c˜ao pretende-se ter acesso aos dados dos projectos registados na aplica¸c˜ao PGest para se proceder `a recolha dos dados dos projectos a apresen- tar nas p´aginas Wiki. Esta informa¸c˜ao ´e adquirida atrav´es da classe QueriesMan- ager.java por via de interroga¸c˜oes `a base de dados usando comandos SQL. Antes de implementar esta classe, foi feita a sua interface Java QueriesManagerInterface.java de forma a moldar os m´etodos de interroga¸c˜ao `a base de dados necess´arios a imple- mentar.

Cap´ıtulo 3. Projecto - Wiki4PGest 23

Estrutura¸c˜ao dos dados recolhidos do PGest

Os dados recolhidos do PGest s˜ao estruturados por classes implementadas que d˜ao a no¸c˜ao de projecto, fase e tarefa. Estas s˜ao respectivamente: FullProjectInfo.java, SimpleProjectInfo.java, Phase.java, Task.java e SimpleTask.java. S˜ao nos objectos destas classes que toda a informa¸c˜ao ´e organizada para depois ser utilizada para es- crever nos ficheiros de output. Estas classes s˜ao utilizadas e manipuladas conforme os dados a apresentar nas p´aginas Wiki a construir. Por exemplo, as classes Full- ProjectInfo.java e Task.java sendo classes que representam cada projecto e tarefa de um forma completa, s˜ao usadas apenas nas p´aginas Wiki que iram apresentar os dados completos de projecto e tarefas, enquanto que as classes SimpleProject- Info.java e SimpleTask.java que s˜ao classes que representam os projectos e tarefas de um forma mais simplificada, s˜ao usadas apenas nas p´aginas que apenas apresentar˜ao informa¸c˜ao de uma forma mais simplificada.

Gera¸c˜ao de P´aginas Wiki

A classe PagesGenerator.java do package wikipages ´e a respons´avel pelo controlo e pela escrita do c´odigo WikiText e HTML nos ficheiros de output, de toda a in- forma¸c˜ao recolhida do PGest. Durante o processo de constru¸c˜ao dos ficheiros de output, esta classe faz tamb´em o controlo do c´odigo WikiText e HTML respons´avel pelo Layout das p´aginas que iram ser geradas atrav´es destes ficheiros. Nesta classe tamb´em foram implementados m´etodos que tratam de realizar a convers˜ao de to- dos os caracteres especiais dos dados do PGest para codifica¸c˜ao UTF-82, visto que o Bot pagefromfile.py que vai gerar as p´aginas Wiki atrav´es dos ficheiros de output do Java, apenas opera com ficheiros em que o seu conte´udo esteja codificado em UTF-8.

Escrita de P´aginas em Ficheiros

Os ficheiros onde ´e escrito todo o c´odigo WikiText s˜ao respectivamente: histori- cal.wiki, projects.wiki, individualProjects.wiki e individualTasks.wiki. Estes ficheiros contˆem todo o c´odigo de todas as p´aginas Wiki a serem geradas para o MediaWiki. O ficheiro historical.wiki contem a p´agina Wiki respons´avel por apresentar todos os projectos terminados e em fase de manuten¸c˜ao, o ficheiro projects.wiki contem a p´agina que apresenta os projectos ainda em curso na empresa, o ficheiro individual- Projects.wiki contem todas as p´aginas individuais de todos os projectos, e o ficheiro individualTasks.wiki todas as p´aginas individuais de todas as tarefas associadas aos

2Tipo de codifica¸ao Unicode que pode representar qualquer caracter universal padr˜ao do Uni-

Cap´ıtulo 3. Projecto - Wiki4PGest 24

projectos. Estes dois ´ultimos ficheiros tˆem o c´odigo das v´arias p´aginas Wiki sep- arados por delimitadores para que o Bot pagefromfile.py respons´avel por gerar as p´aginas saiba onde come¸ca e acaba cada p´agina a ser gerada. O delimitador que representa o in´ıcio de uma p´agina ´e a string ”xxxx”, e o que representa o final da p´agina ´e a string ”yyyy”.

Na sec¸c˜ao Apˆendices ´e apresentado uma parcela do conte´udo do ficheiro individual- Projects.wiki com os delimitadores referidos.

As figuras 3.12, 3.13 e 3.14 apresentam exemplos de p´aginas no MediaWiki geradas pelos Bots com estes ficheiros de input.

Figura 3.12: Projectos em Curso

Gera¸c˜ao de Gr´aficos Estat´ısticos

Existe tamb´em a classe respons´avel por gerar os dois gr´aficos estat´ısticos de esfor¸co de cada projecto. Estes gr´aficos s˜ao criados usando a API JFreeChart. O primeiro gr´afico denominado por ”Esfor¸co Previsto/Real”, consiste num gr´afico cartesiano de barras que apresenta o esfor¸co estimado e real das horas de trabalho consumidas

Cap´ıtulo 3. Projecto - Wiki4PGest 25

Figura 3.13: P´agina de Detalhe de um Projecto

Cap´ıtulo 3. Projecto - Wiki4PGest 26

para a realiza¸c˜ao do respectivo projecto. Este gr´afico tem tamb´em uma componente dinˆamica que muda a cor da barra entre verde e vermelho, consoante o valor real de esfor¸co estiver dentro ou n˜ao do prazo estimado. A figura 3.15 apresenta um exemplo de um gr´afico em que o esfor¸co real encontra-se dentro do valor previsto e um gr´afico em que o valor do esfor¸co real excede o valor previsto.

Figura 3.15: Gr´aficos Esfor¸co Previsto/Real

O gr´afico de ”Distribui¸c˜ao de Esfor¸co”consiste igualmente num gr´afico cartesiano mas agora de representa¸c˜ao linear, em que apresenta cronologicamente a distribui¸c˜ao do esfor¸co consumido ao longo do tempo. O espa¸co temporal ´e apresentado em v´arias representa¸c˜oes, consoante a dura¸c˜ao do projecto em quest˜ao: di´ario se for menos de 31 dias, semanal se for entre 31 e 182 dias, mensal se for entre 182 e 365, e trimestral se tiver uma dura¸c˜ao superior a um ano.

A figura 3.16 apresenta um exemplo de um gr´afico deste g´enero, em que a dura¸c˜ao do projecto representado ´e compreendido entre 182 e 365 dias, atribuindo assim ao gr´afico um intervalo de tempo mensal.

Cap´ıtulo 3. Projecto - Wiki4PGest 27

Figura 3.16: Distribui¸c˜ao de Esfor¸co

Controlo de Redundˆancia de P´aginas Wiki

Durante a fase de testes do Wiki4PGest, tornou-se evidente de que a opera¸c˜ao de gera¸c˜ao de p´aginas para o MediaWiki de todos os projectos e tarefas do PGest, traduzia-se numa opera¸c˜ao bastante demorada (cerca de 9 horas), visto haver uma grande quantidade de projectos, e principalmente de tarefas. Realmente n˜ao fazia muito sentido o Wiki4PGest ser redundante ao ponto de gerar p´aginas de projectos e tarefas que n˜ao sofreram altera¸c˜oes nos seus dados desde a sua ´ultima gera¸c˜ao. Ent˜ao pensou-se numa maneira de contornar esta situa¸c˜ao, e a solu¸c˜ao passou por criar hashes dos dados de cada projecto e tarefa de cada vez que o Wiki4PGest corre, e comparar com o valor que se encontra armazenado numa tabela criada no PGest para o efeito com valores de hashes geradas anteriormente que correspondem `

a ´ultima altera¸c˜ao dos respectivos dados. Assim apenas s˜ao geradas novas p´aginas de projectos e tarefas novas, e p´aginas com dados que sofreram altera¸c˜oes.

Batch Files

A execu¸c˜ao dos Bots com os ficheiros de output do Java, ´e feita a partir de batch files gerados tamb´em pelo Java, e pelo batch file wiki4pgest.bat escrito com o prop´osito de correr todos estes batch files que desencadeiam as v´arias execu¸c˜oes dos Bots. Ou seja, o ficheiro wiki4pgest.bat contem as instru¸c˜oes que fazem correr os Bots para os v´arios ficheiros que contem o c´odigo das p´aginas Wiki.

Para melhor compreender o seu funcionamento, a figura 3.17 apresenta uma ilus- tra¸c˜ao que esclarece toda a interac¸c˜ao destes Batch Files com os Bot, e o c´odigo das instru¸c˜oes escritas no batch file wiki4pgest.bat.

Cap´ıtulo 3. Projecto - Wiki4PGest 28

Figura 3.17: Batch Files

Figura 3.18: wiki4pgest.bat

O ficheiro makegraphics.bat referenciado no wiki4pgest.bat, ´e o ficheiro que con- tem as instru¸c˜oes que executa o Bot upload.py para todos os gr´aficos gerados pelo m´odulo Java. `A medida que o m´odulo Java gera cada gr´afico, ´e escrito neste ficheiro a instru¸c˜ao que trata de executar o Bot para esse respectivo gr´afico.

Cap´ıtulo 3. Projecto - Wiki4PGest 29

Documentos relacionados