Navegação

    Fórum Técnico Insoft4

    • Login
    • Pesquisar

    insoft-report-executor

    Aplicações Auxiliares
    gerador-relatorios
    1
    3
    25
    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

      API destina a servir como executor de relatórios, solicitados pelas aplicações.

      Pode existir N instâncias.

      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.2.0
      Deploy O:\Sistemas_Java\Insoft-Report-Executor
      Repositório https://gitlab.insoft4.com.br/apis/insoft-report-executor

      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 (Gateway 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-executorConfig/application.yml
      • diretório base de configurações/insoft-report-executorConfig/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.

      insoftReportExecutor.totalThreads: recebe um valor inteiro para indicar quantos relatórios podem ser executados simultaneamente na instancia do Executor. Por padrão assume 1;
      insoftReportExecutor.gateway: recebe uma string para indicar o link do sistema Gateway;
      insoftReportExecutor.implementation: recebe um valor do ReportExecutorImplementationEnum para indicar se tomará a abordagem padrão ou referente ao Express. Por padrão assume ReportExecutorImplementationEnum.DEFAULT.getValue();
      insoftReportExecutor.intervalRegister: recebe um valor inteiro para indicar o tempo de intervalo, em minutos, para tentar registrar-se no Gateway;
      insoftReportExecutor.intervalStillRegistered: recebe um valor inteiro para indicar o tempo de intervalo, em minutos, para validar se ainda permanece registrado no Gateway;
      insoftReportExecutor.intervalIsAlive: recebe um valor inteiro para indicar o tempo de intervalo, em minutos, para certificar-se que o Gateway permanece em execuçã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 Gateway.

      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 que o Gateway esteja acessível, ou seja, com um link onde o Executor consiga realizar as requisições necessárias para o funcionamento.

      Funcionamento

      O sistema funciona em conjunto com o Gateway e Aplicação final com os plugins Insoft Report Generator e Insoft Report Generator UI instalados.

      O Executor consiste em uma API que realiza a execução de um relatório de maneira Agendada, não sendo necessário ficar esperando pela execução do mesmo pelo navegador, visto que ao solicitar a execução o sistema disparará uma série de ações que levarão ao recebimento de execução nesta aplicação aqui.

      Após o termino da execução é criada uma notificação da aplicação e informado ao Gateway do fim da execução, este por sua vez realiza o salvamento do arquivo e disponibiliza para o download do usuário.

      Cadastro no Gateway

      Para o funcionamento das execuções as seguintes Tasks serão inicializadas.

      IsAliveTask

      Nesse passo o Executar realiza uma requisição simples para o Gateway, caso a resposta seja de sucesso, significa que o Gateway está rodando perfeitamente, se não for de sucesso o Executor identificará que o Gateway está fora de execução e tentará o contato novamente após o intervalo de execução passar.

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

      RegisterTask

      Nesse passo o Executor irá enviar as suas informações para o Gateway onde o mesmo receberá a instância e registrará como disponível para execução conforme totalidade de processos que podem ser executados simultaneamente.

      Dados enviados para o registro

      • URL Atual: URL onde o executor está rodando, o valor deve ser configurado em grails.serverURL;
      • Total de execuções simultâneas: número de execuções que um executor pode realizar de maneira simultânea, valor configurado em insoftReportExecutor.totalThreads.

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

      StillRegisteredTask

      Nesse passo o Executor faz uma requisição para Gateway buscando validar se ainda está registrado, para isso a URL atual e o total de execuções simultâneas permitidas são enviadas, caso a referência que o Gateway tinha tenha sido perdida o Executar tentará realizar o registro novamente na próxima execução de RegisterTask.

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

      Execução

      A execução de um relatório se da quando é recebida uma requisição no endpoint /v1/reportExecutor informando o id do registro da in4gr_agendamentos, com isso o Executor põe em usa fila interna a execução do relatório e atualiza o status do registro de banco para GERANDO.

      ReportQueueTask

      Tarefa interna que busca os registros da fila interna do executor para realizar a execução, dispara a cada 5 segundos.

      Quando a tarefa acima encontra um registro ela realiza a chamada do método de execução que realizará toda a lógica de execução do relatório.

      Após isso uma notificação é criada para que o usuário saiba que seu agendamento terminou e o status do registro na in4gr_agendamentos é atualizado para DISPONÍVEL ou ERRO, de acordo com a situação da execução.

      Após criar a notificação uma requisição é realizada para o Gateway, informando que a execução do Agendamento foi finalizada e para o mesmo salvar o arquivo gerado.

      Log

      Salvas informações das ações tomadas no sistema, como, por exemplo, o registro realizado no Gateway.

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

        🚀 v1.1.0

        ✨ OS10102

        • Aplicar funcionalidade de de execução de relatórios JRXML.
        • Adicionar tratativa de erros.
        • Atualizar plugins insoft-gr e insoft-db-objects.
        • Utilizar plugins insoft-fw-domains.
          • Para evitar recriar classes de dominio do in4fw_*.
        • Utilizar plugin Barbecue da Sourceforge.
          • Para fazer uso de código de barras nos relatórios JRXML.
        • Criar Job para realizar atualização das mensagens internacionalizadas.
        • Validação para evitar criar relatórios vazio.
        • Adicionar relatórios JRXML do GTSoft.
        • Adicionar relatórios JRXML do Akitasoft.
        1 Resposta Última resposta Responder Citar 0
        • jhartmann
          jhartmann Banido última edição por

          🚀 1.2.0
          ✨ OS10469

          • Adicionar relatórios JRXML do Pontosoft Enterprise.
          • Melhorar tratativa que evita a criação de relatórios em branco.
          • Usar logs conforme padrão definido.
          1 Resposta Última resposta Responder Citar 0
          • Primeiro post
            Último post
          Powered by NodeBB | Contributors