insoft-report-executor - SYNC mode
-
O modo de operação padrão do insoft-report-executor é ASYNC. Isso significa que os relatórios agendados são executados conforme a fila de agendamentos usando os recursos configurados na aplicação (threads disponíveis etc.). Essa é a maneira como os relatórios das aplicações são gerados: o agendamento é um "processo agendado" que precisa aguardar a geração.
Em algumas ocasiões é necessário ignorar essa fila e fazer a execução do relatório assim que o usuário realiza alguma ação no sistema. Para isso, existe o modo SYNC. Este formato não está documentado no manual de implantação pois é um recurso que deve ser usado somente em último caso.
Um caso de uso do modo SYNC é a aplicação gerador-espelho-ponto da MWM.
Esta aplicação customizada é uma tela onde o usuário informa dados do espelho de ponto a ser gerado, e ao clicar no botão, a aplicação aciona a pontosoft-api, que solicita ao insoft-report-executor a execução do espelho de ponto de forma imediata, onde a response da request acionada pelo usuário contem o espelho de ponto gerado para download do navegador.Para configurar o modo SYNC é necessário seguir os seguintes passos:
- O Tomcat onde roda o insoft-report-executor original (ASYNC) deve se manter como está, sem alterações;
- Instalar um novo Tomcat no servidor do cliente. Este Tomcat conterá apenas um deploy do insoft-report-executor que será específico para o cenário SYNC;
- Adicionar na JVM deste novo Tomcat a variável de ambiente relacionada ao diretório do arquivo de configurações externas deste insoft-report-executor;
- Neste arquivo externalizado do insoft-report-executor do Tomcat novo, usar as mesmas configurações do application.yml do executor padrão que está no Tomcat "oficial", mudando apenas o valor da propriedade grails.serverURL e insoftReportExecutor.mode:
grails.serverURL: "http://localhost:xxxx/insoft-report-executor" # URL deste novo insoft-report-executor (se atentar ao valor da porta deste novo report-executor, que será diferente do report-executor original); insoftReportExecutor.mode: "SYNC" # Modo de operação específico deste executor novoDessa forma, quando o insoft-report-executor novo estiver no ar, ele se registrará ao insoft-report-gateway padrão, que irá usar este insoft-report-executor quando receber um agendamento que deve ser executado imediatamente.

Obs 1: de maneira resumida, essa arquitetura permite o deploy de inúmeros insoft-report-executor que se registram em um mesmo insoft-report-gateway, que acionara o executor disponível de acordo com o modo de operação e priorização das threads.
Obs 2: somente usar SYNC mode quando houver uma rotina que requer execução imediata do relatório para que esteja disponível ao usuário (quando não pode haver o login no sistema para acesso a tela de agendamentos).