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.
Interface CalculosPesquisa
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:
- Distribuição das cotas de Pesquisa
- Cálculo do IPI dos docentes
- 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.
Configuração dos Itens do Relatório de Produtividade
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.
Configuração dos filtro de docentes
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.
Classes Persistentes e Tabelas Envolvidas
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 |
Classes Não Persistentes e Interfaces Envolvidas
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 |