Ficha pri2019-e2

Avaliação: Desenvolvimento de Aplicações Web

Processamento e Representação da Informação (MIEI)

O objectivo principal desta ficha é testar os conhecimentos obtidos durante as aulas no desenvolvimento de aplicações Web e outras tarefas afins.

Os resultados finais deverão ser enviados ao docente da seguinte forma:

  • Enviar por email para: jcr@di.uminho.pt
  • Colocar no subject/assunto: PRI2018::Exame::Axxxxx
  • Em que Axxxxx corresponde ao número do aluno;
  • Enviar um ZIP com a resolução. Esse ZIP deverá conter um PR (project record/manifesto) que descreve o que se fez e lista os ficheiros que constituem a solução (à semelhança dos trabalhos de casa);
  • Para os exercícios em que recorrer a mais do que um servidor, por exemplo, servidor node e servidor Mongo, explique como se pode colocar a funcionar a sua App;
  • Em alternativa ao envio do ZIP por email, coloque-o no GitHub ou no WeTransfer e envie o respetivo link por email;
  • No fim, confirme com o docente que tudo foi enviado e recebido como deve ser.

Recursos:

Recursos disponíveis para a realização da ficha:

Exercícios:

  1. Vamos ao cinema
  2. CLAV: Classificação e Avaliação da Informação Pública

A CLAV é uma plataforma em desenvolvimento no DI/UM em parceria e sob encomenda da Direção Geral do Livro, Arquivos e Bibliotecas (DGLAB) que visa a classificação e a avaliação de toda a documentação circulante na administração pública portuguesa.

Uma das faces visíveis do projeto é o catálogo dos processos da administração pública portuguesa, designado por Lista Consolidada.

Já se encontra disponível para consulta online: site de teste .

É sobre este catálogo que irás desenvolver este exercício.

A API de dados disponível contem entre outras as seguintes possibilidades:

  • GET http://clav-test.di.uminho.pt/api/classes - Devolve uma estratura hierárquica em JSON com a informação base de todas as classes/processos da Lista Consolidada. Note que, os níveis 1 e 2 correspondem a funções e subfunções da Administração Pública, existem essencialmente para arrumar a case e facilitar o acesso aos processo, o nível 3 corresponde ao processo e o nível 4 a uma divisão do processo quando, por determinado motivo partes da documentação desse processo têm conservações e destinos diferentes;
  • GET http://clav-test.di.uminho.pt/api/classes/nivel/3 - Devolve uma lista em JSON com a informação base de todos os processos;
  • GET http://clav-test.di.uminho.pt/api/classes/nivel/1 - Devolve uma lista em JSON dos primeiros níveis, funções da AP;
  • GET http://clav-test.di.uminho.pt/api/classes/nivel/2 - Devolve uma lista em JSON dos segundos níveis, subfunções da AP;
  • GET http://clav-test.di.uminho.pt/api/classes/lista - Devolve uma lista em JSON de todas as classes (linearização da árvore inicial);
  • GET http://clav-test.di.uminho.pt/api/classes/c100.10.001 - Devolve em JSON a informação base da classe com código: c100.10.001;
  • GET http://clav-test.di.uminho.pt/api/classes/c100.20/descendencia - Devolve uma lista em JSON das classes filhas da classe passada no pedido, neste caso, C100.20;
  • GET http://clav-test.di.uminho.pt/api/classes/c150.10.702/procRel - Uma classe de nível 3 pode ter relações com outra classe de nível 3. Este pedido devolve uma lista dos processos (classes de nível 3) que têm relações com o processo 150.10.702. São devolvidos: o identificador, o código, o título e o código da relação (deste é possível extrair a designação da relação, a sua parte final);
  • GET http://clav-test.di.uminho.pt/api/classes/c150.10.702/dono - Um processo, classe de nível 3, pode ter um mais donos. Um dono é uma entidade pública que é responsável por aquele processo administrativo. Neste pedido, é devolvida uma lisat de entidades em que cada entidade é caracterizada pelos seguintes campos: id, tipo, sigla e designacao.

Desenvolve então as seguintes alíneas:

  1. Testa a API de dados com o Postman e dá resposta às seguintes questões:
    • Quantos processos (nível 3) e quais são (obtem uma lista em JSON; podes concatenar sublistas invocando várias queries), existem na descendência da classe 700.10?
    • Quantos subprocessos existem? (classes de nível 4) na descendência de 750.10?
    • Quantas subfunções (classes de nível 2) tem a função 700 e quais são os seus títulos/designações?
    • Quantos e quais são os donos de 750.10.002?

Depois deste "aquecimento", desenvolve uma aplicação em nodejs que permita navegar nesta estrutura de classes. :

  1. Na página inicial, para além de um título e outra informação de contexto, deverá aparecer a lista de classes de nível 1;
  2. Todos os campos de informação com códigos de classes devem ser transformados em links que realizam pedidos à tua aplicação de nova página;
  3. Na página de cada classe, deve ser mostrada a informação base da classe, uma lista dos seus descendentes caso existam e, se a classe for de nível 3 uma lista dos seus donos (id, sigla e designação);
  4. Em todas as páginas deverá haver um link para voltar à página inicial e outro para a página anterior (nos casos em que justifique);
  5. Usa a tua imaginação e criatividade...