Personalização do Módulo de Pesquisa

O módulo de pesquisa possui funcionalidades que comumente serão diferentes entre as instituições da rede IFES, como por exemplo, o algoritmo de distribuição de cotas de pesquisa, o cálculo do IPI (Índice de Produtividade Individual). Para permitir uma simples personalização evitando gerar qualquer conflito de código, o módulo de pesquisa foi projetado com vários pontos de extensão fazendo uso de padrões como Factory, Strategy e outros. Esses pontos de personalização referentes ao módulo de pesquisa são explicados neste documento.

Os pontos de extensão do módulo de pesquisa estão organizados em dois grupos principais, a saber: a interface CalculosPesquisa e a configuração dos itens do relatório de produtividade.

O primeiro ponto de extensão do módulo de pesquisa é a interface CalculosPesquisa (br.ufrn.sigaa.pesquisa.negocio.CalculosPesquisa) que possui a declaração dos métodos que implementam os algoritmos do módulo, são eles:

  1. Distribuição das cotas de Pesquisa
  2. Cálculo do IPI dos docentes
  3. Cálculo do FPPI dos docentes

Esta interface por padrão é implementada pela classe CalculosPesquisaImplUFRN (br.ufrn.sigaa.pesquisa.negocio.CalculosPesquisaImplUFRN) e possui a implementação de acordo com o regulamento da UFRN. Caso estas operações precisem ser personalizadas para alguma instituição da rede é necessário criar uma nova classe que irá implementar o novo comportamento e configurar que a nova classe que está implementando a interface no paramêtro 2_10800_24 - IMPLEMENTACAO_COMPORTAMENTOS_PESQUISA. Este paramêtro configura exatamente qual a implementação da interface CalculosPesquisa que deve ser utilizada.

O segundo ponto de extensão do módulo de pesquisa é a possibilidade de personalizar quais os itens do relatório de produtividade. Os itens do relatório de produtividade são definidos em edital por cada instituição que define quais são os itens e qual a pontuação de cada item assim como a pontuação máxima do item e do grupo ao qual o item pertence.

Para configurar os itens que serão utilizados para gerar o relatório de produtividade é necessário:

  • O desenvolvedor deve adicionar um registro na tabela prodocente.item_relatorio_produtividade e indicar na coluna producao_mapper a classe que irá realizar o processamento deste item. Além disso deve ser informado na coluna producao_intelectual se este item representa um item que é cadastrado como produção intelectual ou se é alguma atividade do docente que é registrada no sistema em qualquer módulo, e que contabiliza para a produção intelectual dele.
  • O desenvolvedor deve implementar esta classe que:
    • Caso seja um item do tipo produção intelectual, então deverá ser uma classe que herda de AbstractMapperProducaoIntelectual e consequentemente implementa a interface ProducaoMapper. É necessário implementar basicamente o construtor e o método isAtendeCriterios() que verifica se o item que está sendo processado possui a caracteristica representada pelo item do relatório em questão. Um exemplo desta classe é este: MapperArranjoMusical
    • Caso seja um item do tipo atividade, ou seja, orientação ou então carga horária de aula ministrada, etc a classe deverá herdar de AbstractMapperAtividade e consequentemente implementa a interface AtividadeMapper. Neste caso precisa implementar apenas o método buscarAtividades(), neste método o desenvolvedor deverá implementar consultas ao banco de dados que retornem as atividades representadas pelo item do relatório. Ver exemplo aqui: MapperAtividadeCoordBasePesquisa

Feito isso o item já pode ser utilizado em algum relatório e terá seu processamento executado conforme o que foi programado. Observe que caso não haja diferença dos itens do relatório da instituição e da UFRN não é necessário nenhuma alteração no que diz sentido a isso. A implementação destes itens só será necessário caso sejam diferentes do da UFRN. É importante que as implementações da UFRN sejam mantidas intactas e qualquer modificação seja realizada através da implementação de novas classes para mapearem os itens, pois assim será garantido a evolução sem conflito do código.

Um outro ponto de extensão é a configuração do filtro de docentes que é utilizado no caso de uso de gerar relatório de produtividade, acessível a partir deste caminho: SIGAA > Pesquisa > Produção Intelectual > Geração de Índices de Produtividade > Cálculo do Índice de Produção dos Docentes (Relatório-Espelho)

Ao permitir configurar os filtros de docentes torna-se possível criar, por exemplo, um filtro de docente por área de pesquisa e fazer a distribuição das cotas de pesquisa de um edital por área.

Para criar um novo filtro do docentes é necessário realizar os seguintes passos: - Criar um novo TipoFiltroDocentes, esta entidade é persistida na tabela SIGAA.prodocente.tipo_filtro_docentes. Na coluna SIGAA.prodocente.tipo_filtro_docentes.classe é necessário informar o caminho completo da classe que irá implementar este filtro. - Criar a classe que foi informada no passo anterior que deve herdar da interface br.ufrn.sigaa.prodocente.negocio.relatorioprodutividade.FiltroDocente e implementar o método public Collection<Servidor> getDocentes(List<Integer> editaisSelecionados) definido nesta interface com o comportamento esperado para este filtro.

Seguindo estes passos o filtro aparecerá imediatamente no caso de uso de geração dos relatórios de produtividade e estarão disponíveis para uso.

Classe Tabela
br.ufrn.sigaa.prodocente.relatorios.dominio.ItemRelatorioProdutividade SIGAA.prodocente.item_relatorio_produtividade
br.ufrn.sigaa.prodocente.relatorios.dominio.TipoFiltroDocentes SIGAA.prodocente.tipo_filtro_docentes
Classe
br.ufrn.sigaa.prodocente.negocio.relatorioprodutividade.ProducaoMapper
br.ufrn.sigaa.prodocente.negocio.relatorioprodutividade.AtividadeMapper
br.ufrn.sigaa.prodocente.negocio.relatorioprodutividade.AbstractMapperProducaoIntelectual
br.ufrn.sigaa.prodocente.negocio.relatorioprodutividade.AbstractMapperAtividade
br.ufrn.sigaa.prodocente.negocio.relatorioprodutividade.FiltroDocente
br.ufrn.sigaa.prodocente.negocio.RelatorioHelper
  • desenvolvimento/especificacoes/sigaa/pesquisa/personalizacao_do_modulo.txt
  • Última modificação: 2017/04/03 18:13
  • (edição externa)