====== 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 getDocentes(List 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 |