insoft-report-executor
-
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.2Instalaçã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.ymlem 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: falseApó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/reportExecutorinformando oiddo registro dain4gr_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.
-
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.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.