Navegação

    Fórum Técnico Insoft4

    • Login
    • Pesquisar

    insoft-report-gateway

    Aplicações Auxiliares
    gerador-relatorios
    1
    4
    30
    Carregando Mais Posts
    • Mais Antigo para Mais Recente
    • Mais Recente para Mais Antigo
    • Mais Votados
    Responder
    • Responder como tópico
    Entre para responder
    Este tópico foi deletado. Apenas usuários com privilégios de moderação de tópico podem vê-lo.
    • jhartmann
      jhartmann Banido última edição por Felipe Dietrich

      Insoft Report Gateway

      API destina a servir como comunicador entre as aplicações que solicitarem agendamento ou execução de relatórios e os Executores.

      Deve existir somente uma instância por banco.

      Compatibilidade

      Sistema Versão
      GTSoft 3.0.0.0 > *
      Pontosoft Enterprise 7.0.0.0 > *
      Akitasoft 7.0.0.0 > *
      Pontosoft Express -

      Informações técnicas

      Descrição
      Versão 1.0.3
      Deploy O:\Sistemas_Java\Insoft-Report-Gateway
      Repositório https://gitlab.insoft4.com.br/apis/insoft-report-gateway

      Tecnologias usadas

      JDK 11
      Grails 5.2.2

      Instalação

      Para que o sistema funcione é necessário realizar as configurações descritas abaixo e que as aplicações codependentes (Executor e aplicação final com os plugins Insoft Report Generator e Insoft Report Generator UI) estejam instaladas.

      Configuração externalizada

      Para realizar a configuração externalizada basta criar um arquivo com o nome application.yml em uma das seguintes opções:

      • home do usuário/.grails/insoft-report-gatewayConfig/application.yml
      • diretório base de configurações/insoft-report-gatewayConfig/application.yml

      Configuração

      Configurações que são utilizadas para o correto funcionamento da geração dos relatórios. Para o funcionamento correto, todos os itens abaixo devem ser configurados.

      insoftReportGateway.clearCron: Recebe uma cron que indicará o tempo em que deve buscaros registros e arquivos antigos para apagá-los.
      insoftReportGateway.daysToKeep: Funciona em paralelo com a Cron, servido de data de corte para apagar os registros e arquivos. Por padrão assume 0. Quando zerado não deleta arquivos.
      insoftReportGateway.scheduleTime: Valor inteiro que indica o intervalo de tempo, em minutos, que realizará a busca por novos registros de agendamento. Por padrão assume 1.
      insoftReportGateway.executeTime: Valor inteiro que indica o intervalo de tempo, em segundos, do disparo da execução para um Executor. Por padrão assume 10.
      insoftReportGateway.isAliveTime: Valor inteiro que indica o intervalo de tempo, em minutos, para a verificação de conexão com os Executores e Aplicações registradas. Por padrão assume 2.
      insoftReportGateway.directory: Valor em String que indica o diretório que os arquivos gerados serão salvos.
      insoftReportGateway.imageAppReport.PONTOSOFT: Valor em String, informando o caminho para a imagem da aplicação Pontosoft. Esta só será usada por Agendamentos realizados através do sistema Pontosoft Enterprise. Imagem localizada no canto direito do cabeçalho dos relatórios PDF.
      insoftReportGateway.imageAppReport.AKITASOFT: Valor em String, informando o caminho para a imagem da aplicação Akitasoft. Esta só será usada por Agendamentos realizados através do sistema Akitasoft. Imagem localizada no canto direito do cabeçalho dos relatórios PDF.
      insoftReportGateway.imageAppReport.GTSOFT: Valor em String, informando o caminho para a imagem da aplicação GTSoft. Esta só será usada por Agendamentos realizados através do sistema GTSoft. Imagem localizada no canto direito do cabeçalho dos relatórios PDF.
      insoftReportGateway.imageAppReport.PSEXPRESS: Valor em String, informando o caminho para a imagem da aplicação Pontosoft Express. Esta só será usada por Agendamentos realizados através do sistema Pontosoft Express. Imagem localizada no canto direito do cabeçalho dos relatórios PDF.
      insoftReportGateway.imageReport: Valor em String, informando o caminho para a imagem do cliente. Imagem localizada no canto esquerdo do cabeçalho dos relatórios PDF.
      insoftReportGateway.scheduling.enabled: Valor booleano informando se o Gateway está preparado para agendamentos.
      insoftReportGateway.execution.enabled: Valor booleano informando se o Gateway está preparado para execuções imediadas de agendamentos.
      api.authenticator.url: Valor em String, apontando para o insoft-auth para que o download dos arquivos gerados sejam liberados somente para quem tiver a devida permissão.
      

      Banco de Dados

      Informar valores para realizar a conexão com o banco no arquivo application.yml.

      Deve ser o mesmo da Aplicação e Executores conectados.

      dataSource:
        url: url.para.banco.de.dados
        username: "usuario"
        password: "senha"
        properties:
          initialSize: 3
          maxActive: 10
          minIdle: 3
          maxIdle: 5
          maxWait: 15000
          maxAge: 3600000
          timeBetweenEvictionRunsMillis: 30000
          minEvictableIdleTimeMillis: 90000
          validationQuery: "SELECT 1 FROM DUAL"
          validationQueryTimeout: 3
          validationInterval: 60000
          testOnBorrow: true
          testWhileIdle: true
          testOnReturn: false
      

      Após isso basta subir o projeto e configurar a URL nas aplicações e Executores, que estes irão iniciar a comunicação.

      Funcionamento

      O sistema funciona em conjunto com o Executor (uma ou mais instâncias) e Aplicação final (uma ou mais instâncias) com os plugins Insoft Report Generator e Insoft Report Generator UI instalados.

      O gateway consistem em uma API que realiza a busca de registros na in4gr_agendamentos para distribuir para os Executores realizarem a execução do relatório agendado, dessa forma não sendo necessário esperar o mesmo gerar durante a utilização da Aplicação Final.

      O Gateway mantém salvo instâncias das Aplicações e Executores.

      Registro de Aplicações

      Nesse passo o Gateway recebe informações sobre a aplicação que está se cadastrando, como URL em que ela está rodando, o nome do sistema e a versão do sistema.

      Esses valores são armazenados para serem informados aos Executores que se registraram para buscar as mensagens internacionalizadas para os relatórios.

      Registro de Executores

      Nesse passo o Gateway recebe informações sobre o Executor, como a URL em que ele está rodando e o total de relatórios que podem ser executados simultaneamente por ele.

      Com isso é adicionado uma referência interna para esse Executor, que posteriormente receberá os relatórios para executá-los.

      Aqui é retornado uma lista com todas as aplicações cadastradas no Gateway, caso existam.

      Validação de Conexão

      ExecutorIsAliveTask

      Essa tarefa consiste em realizar uma checagem de conexão com todos os Executores e Aplicações cadastrados no Gateway, caso de erro em alguma requisição esse perderá a conexão.

      O tempo de intervalo da tarefa é definido conforme valor configurado em insoftReportGateway.isAliveTime (valor em minutos);

      Execução de Agendamentos

      ScheduleTask

      Essa tarefa consiste em realizar a busca dos registros da tabela in4gr_agendamentos onde o status seja PENDENTE, com isso eles são adicionados em uma fila de execução e seu status é atualizado para AGUARDANDO_GERACAO.

      O tempo de intervalo da tarefa é definido conforme valor configurado em insoftReportGateway.scheduleTime (valor em segundos);

      ExecuteTask

      Essa tarefa irá realizar um request para um executor livre passando o id do próximo agendamento da fila.

      O tempo de intervalo da tarefa é definido conforme valor configurado em insoftReportGateway.executeTime (valor em segundos);

      Limpeza de Agendamentos Antigos

      ClearTask

      Essa tarefa realiza uma varredura nos arquivos e registros antigos, para realizar a limpeza de dados obsoletos, usando o tempo máximo de vida de cada arquivo/registro definido em insoftReportGateway.daysToKeep.

      O tempo de intervalo da tarefa é definido conforme valor configurado em insoftReportGateway.clearCron (valor é uma CRON).

      Caso o valor de insoftReportGateway.daysToKeep seja igual a ZERO ou não haja uma cron definida em insoftReportGateway.clearCron não haverá limpeza de Agendamentos Antigos.

      Verificação de Registro

      Executor

      Nessa etapa o Gateway recebe uma requisição do Executor informando a URL e total de relatórios que pode executar simultaneamente para validar se ele ainda continua registrado.

      Aplicação

      Nessa etapa o Gateway recebe uma requisição da Aplicação Final informando a URL, nome do sistema e versão para validar se ela ainda continua registrada.

      Busca de Imagens para execução

      Possui 2 endpoints direcionados para a utilização do Executor, eles retornam as imagens que devem ser usadas nos arquivos de relatórios gerados em PDF.

      São disponibilizados em 2 endpoints /v1/reportScheduling/imageAppReport e /v1/reportScheduling/imageReport

      imageAppReport

      Recebe o nome do sistema do relatório que está sendo executado para retornar a imagem correta, o valor da busca será insoftReportGateway.imageAppReport.NOME_DO_SISTEMA.

      Essa imagem fica no canto direito do cabeçalho.

      imageReport

      Retorno a imagem definida na configuração insoftReportGateway.imageReport.

      Essa imagem fica no canto esquerdo do cabeçalho.

      Disparo de Scheduling

      Nessa etapa a Aplicação Final, após salvar o registro de agendamento no banco, realiza uma requisição para o Gateway, para que seja realizado o disparo da ScheduleTask, evitando tempo de ociosidade.

      Save dos arquivos

      Após o fim da execução de um Agendamento pelo Executor, o Gateway recebe uma request do Executor informando a finalização.

      Aqui o Gateway realiza a limpeza do Executor em questão, tornando disponpível novamente para a execução de novos relatórios e também realiza o save do arquivo recebido pelo Executor.

      O nome do arquivo se monta da seguinte forma DATA_HORA_DA_GERACAO + _ + ID + EXTENSAO, o resultado fica 20230516_163105_123.pdf.

      Download de Arquivos

      Possui um endpoint para realizar o download dos arquivos gerados, esse endpoint é protegido via token, o mesmo da aplicação, dessa forma somente quem mandou executar o relatório ou um administrador pode realizar o download do arquivo.

      1 Resposta Última resposta Responder Citar 2
      • jhartmann
        jhartmann Banido última edição por jhartmann

        🚀 1.0.1

        🐞 OS10461

        • Adicionar utilização do plugin insoft-fw-domains, para evitar repetição de código.

        • Corrigir imports para o plugin correto.

        • Atualização dos plugins insoft-core, insoft-api-security e insoft-gr.

        1 Resposta Última resposta Responder Citar 0
        • jhartmann
          jhartmann Banido última edição por jhartmann

          🚀 v1.0.2

          🐞 OS10102

          • Atualizar versão do plugin insoft-gr.
          • Corrigir README.
          • Implementar disparo imediato de exeução de agendamentos.
          • Retornar status correto caso não tenha acesso ao relatório solicitado para download.
            Segundo as RFCs dos dois status (401 e 403), para uma solicitação onde as credenciais são insuficientes o status correto para retorno é 403. Isso resolve o problema de deslogar do sistema, quando a request feita pelo frontend.
          1 Resposta Última resposta Responder Citar 0
          • jhartmann
            jhartmann Banido última edição por

            🚀 1.0.3
            🐞 OS10469

            • Aumentar limite de tamanho para relatórios recebidos na request.
            • Usar logs conforme padrão definido.
            1 Resposta Última resposta Responder Citar 0
            • Primeiro post
              Último post
            Powered by NodeBB | Contributors