Executando um script
Sabemos que um script pode ter várias versões, pois são artefatos que passaram por modificações, alterações por algum motivo. Para visualizar como ficou determinada alteração, é necessário pressionar o botão EXECUTAR.
Ao clicar no botão mencionado acima abrirá a tela de execução de um script. Existem duas opções de execuções que podem ser habilitadas, a primeira delas denomina-se como Pública, ao executar o artefato com esse item marcado serão exibidos para todos os usuários que possuem esse script. Habilitando a opção Enviar por e-mail, é enviado o artefato via e-mail para os usuários inseridos logo abaixo do item mencionado.
Para executar marque as opções desejadas e pressione o botão EXECUTAR.
As opções de execução ficam ocultas podendo ser acessadas quando desejado pelo usuário, essa melhoria tem o intuito de diminuir as informações apresentadas na tela de execução. Para visualizar as opções de execução pressione o botão OPÇÕES.
Marcando as opções desejadas, aparece um indicador de campo quando as informações estão ocultas.
Quando as opções estiverem ocultas e houver opções com campos obrigatórios não preenchidos é exibido uma indicação de alerta.
Todas as execuções são apresentadas na tela central e as informações são distribuídas em colunas.
No ícone de engrenagem são apresentadas outras ações disponíveis no que diz respeito ao script executado.
- Reexecutar
Todas as reexecuções de extensões passam a considerar sempre a última versão da mesma. Quando a reexecução é solicitada a partir de uma versão desatualizada, é apresentada uma mensagem informativa para o usuário, conforme imagem abaixo.
Caso algum parâmetro não possa ser preenchido da execução devido incompatibilidade de tipos entre as versões, é exibido uma notificação na tela.
- Parâmetros
Possibilita a visualização dos parâmetros criados pelo usuário desenvolvedor.
- Métricas
Um script quando executado pode ter mais de um ativo no banco de dados, possibilitando visualizar os ativos/recursos do script que foram acionados, Número de execuções, Duração da execução, Tamanho do payload (pacote de dados de envio ou entrega por uma API) e APDEX (métrica que mede a performance de uma API).
Clicando sobre o ícone mostrado na imagem abaixo são apresentadas as informações da Duração, Tamanho do payload e APDEX.
Clicando na engrenagem, a ferramenta disponibiliza uma amostragem da execução do campo exibindo detalhadamente todos os dados.
- Log execução
Neste item é possível visualizar todo o conteúdo do log de execução de um script.
- Trace execução
O trace basicamente expõem algumas informações da execução de uma extensão, sendo particularmente útil em extensões que tem muitas dependências (um script que chama outro, ou faz uso de componentes, por exemplo), pois permite entender o passo a passo da execução de uma extensão.
- Execução pública
Marcando o parâmetro, a execução pública é exibida para todos os usuários que possuem acesso a esse script. Caso esteja desmarcado, apenas o usuário logado que executou o script pode visualizar o resultado da execução.
- Número de protocolo
De acordo com o número de protocolo os usuários conseguem obter detalhes da execução através de um ambiente público https://consulta-execucoes.cloud.betha.com.br/#/. Para visualizar todos os detalhes, copie o número do protocolo e acesse o link.
Insira o número do protocolo para obter todos os detalhes da execução.
É possível consultar o protocolo da execução para obter informações importantes e relevantes acerca da execução realizada através do botão CONSULTAR localizado em Execuções > Ações disponíveis > Protocolo.
Ao clicar no botão mencionado é possível visualizar todos os detalhes da execução, inclusive as opções APDEX de uma execução, proporcionando melhor visualização do desempenho das ferramentas da empresa através de uma legenda com cores diferenciadas e o Trace, que visa facilitar a observação do tempo gasto nas execuções, obtendo assim maior controle da qualidade do código executado.
Na opção MARCADORES, são apresentadas informações dos marcadores customizados na aplicação. Logo abaixo, são mostradas informações relacionadas ao contexto da execução: Sistema e Entidade.
É possível também visualizar todos os eventos realizados durante a execução de um script, exemplo: o usuário que executou, data e hora de início e fim do mesmo.
Segue abaixo a lista dos eventos.
Além das informações apresentadas acima, há também a opção Agendado por, que mostra a identificação do agendamento de forma programática.
Todas as execuções recentes ficam disponíveis em uma aba específica do lado esquerdo da tela, para visualizá-las basta clicar no local mencionado.
Salvando parâmetros mais utilizados
Na tela de execução de script o usuário encontra os parâmetros cadastrados para que sejam preenchidos. Ao término do preenchimento dos itens desejados, é possível salvar os parâmetros. Para isso, pressione a flecha no botão EXECUTAR, facilitando assim, a visualização dos parâmetros mais utilizados.
Insira uma descrição e clique em SALVAR ou SALVAR E EXECUTAR para gravar e executar o script. para anular a ação, pressione CANCELAR.
Os parâmetros salvos ficam disponíveis no lado esquerdo da tela. Para visualizá-los clique em Parâmetros salvos e para carregá-los clique no parâmetro desejado.
Com esse recurso, a ferramenta possibilita que o usuário possua uma lista de parâmetros com informações salvas para quando desejar reexecutar o script. Também é possível editar as informações já cadastradas, basta alterar as informações e salvar novamente.
Os parâmetros salvos não estão vinculados a uma versão específica da extensão, portanto, se o usuário editar e publicar uma nova, nada será modificado. A única alteração que terá é ao incluir um campo novo, a informação aparecerá na ferramenta sem informação nenhuma, ou seja, em branco. Para que a informação seja apresentada é necessário inserir o conteúdo no campo e salvar novamente.
Agendando scripts
A ferramenta dispõe de um recurso facilitador para os usuários, são os agendamentos, possibilitando que seja programada uma execução para um determinado script. Clicando em Ações disponíveis no botão EXECUTAR existe a possibilidade de Agendar os Scripts.
São apresentados 4 abas a serem preenchidas para que o agendamento se concretize, veja em detalhes abaixo.
Configurando opções
Na primeira aba Configurar opções encontram-se as opções de execuções e se algum parâmetro for cadastrado aparecerá nessa tela para preenchimento.
Definindo recorrência
Na segunda aba Definir recorrência são apresentados as informações referentes às repetições que esse script será executado. Perceba que todos os campos são de preenchimento obrigatórios e os campos comuns são Recorrência, Início e Termina.
No campo Recorrência, as opções de escolha são: diária, semanal, mensal, anual ou personalizada.
No campo Início, informe uma data que dará início a execução e o envio do mesmo.
No campo Termina o usuário precisa escolher entre as opções Nunca (não tem fim), Após algumas ocorrências (um novo campo é aberto para que seja informado a quantidade de ocorrências) e Em uma data específica (necessário informar a data de término).
Dependendo da opção escolhida no campo Recorrência, outros campos são apresentados. Confira abaixo os detalhes de cada item:
Diária: optando por essa recorrência, o campo Repete a cada (dias) é exibido, é necessário que o usuário insira a quantidade de dias em que será repetido a execução do script.
Semanal: informe os dias da semana que será executado e enviado o script.
Mensal: neste item, dois novos campos são apresentados, onde o usuário informará os dias do mês e o(s) mês(es) de envio do script.
Anual: escolhendo essa opção aparecerá apenas campos comuns a todas as opções, porém será executado e enviado o script 1 vez ao ano na data e hora estipulados no campo Início e terá um fim marcando o campo Termina.
Personalizado: optando por essa recorrência, o campo Expressão de agendamento CRON é exibido, a expressão CRON é uma expressão que determina um agendamento que pode ser horários, datas, repetições periódicas, intervalos fixos ou apenas um agendamento para uma determinada data.
Atualmente os agendamentos suportados são de expressões no formato CRON Quartz e com intervalo mínimo entre execuções de 15 minutos. No exemplo a seguir, está especificado uma CRON de repetição para cada hora:
Para facilitar a construção dessas expressões, existem diversas ferramentas e documentações na internet, como por exemplo o site Cron Maker, que permite montar de acordo com grupos de horário e dias da semana. Abaixo seguem alguns exemplos de expressões Cron e seus significados.
Condição | Expressão |
Executar a cada 30 minutos | 0 0/30 * 1/1 * ? * |
Executar a cada 12 horas | 0 0 0/12 1/1 * ? * |
Executar todo dia da semana às 18h | 0 0 18 ? * MON-FRI * |
Somente nas sextas-feiras e sábados, às 8h | 0 0 8 ? * FRI,SAT * |
Primeiro dia a cada 2 meses, às 13h | 0 0 13 1 1/2 ? * |
Primeira segunda feira de Maio às 12h | 0 0 12 ? 5 MON#1 * |
Gerenciando notificações
O recurso Gerenciar notificações, administra os avisos de execuções dos relatórios, controlando o que será possível visualizar e para quem irá enviar as notificações. Quando o parâmetro Omitir notificações está desabilitado é possível inserir os usuários que receberão as notificações.
Quando o parâmetro está habilitado, o campo Notificar usuários do sistema desaparece, ou seja, ao executar um artefato não será enviado nenhum tipo de notificação para os usuários.
Resumo
Esta guia mostra o resumo de todas as informações inseridas nas guias anteriores, através do campo Título é inserido um nome para o agendamento e ainda é possível realizar um agendamentos sistêmico que tem por objetivo agendar execuções vinculadas ao sistema e não a um usuário específico.
É necessário que o usuário seja administrador da entidade para realizar os Agendamentos sistêmicos.
A ferramenta permite que seja realizado o cancelamento de uma execução sistêmica por um administrador. Esta funcionalidade está disponível através da engrenagem Mais opções > Cancelar, porém só aparecerá a opção de cancelar quando o script estiver sendo executado, caso contrário não aparece essa alternativa.
Agendando scripts de forma programática
É possível realizar agendamentos automáticos nos scripts, ou seja, de forma programática. Portanto, agora há duas maneiras de realizar um agendamento: de forma visual e programática.
As sugestões de uso dessa funcionalidade são:
- Esperar o processamento de um lote enviado para algum serviço;
- No lugar de parar a execução atual, utilizando o método esperar, basta agendar o mesmo ou outro script passando os parâmetros necessários para a consulta;
- Executar um processo incremental sem a necessidade de fazer um agendamento customizado;
- De forma geral, em todos os lugares onde hoje se utiliza o esperar.
Como realizar um agendamento?
Utilizando o comando Script.identificador.agendar('1m') onde o Script é palavra reservada, seguida do identificador do script a ser agendado e o método agendar(), que pode receber os paramentos da execução, juntamente com o tempo de agendamento, ou simplesmente o tempo.
Todos os agendamentos ficam em uma guia exclusiva no Gerenciador de Scripts facilitando a visualização e realizando possíveis alterações. No lado direito da tela na opção Ações disponíveis é permitido Editar, Excluir ou Desativar quando o script estiver ativado.
Executando uma extensão utilizando dados de outras entidades
Os usuários técnicos podem executar uma extensão dentro do ambiente de desenvolvimento de outras entidades, facilitando o fluxo de desenvolvimento. Porém, esse usuário precisa ter acesso a outra entidade destino (necessário ser administrador) para que seja realizada essa execução.
Esse recurso está disponível nas ferramentas de Relatórios e Scripts através da opção Executar no contexto de outra entidade. Habilitando essa opção, o usuário necessita selecionar a entidade. Para isso, basta clicar no espaço abaixo que logo, será mostrado as alternativas.
A entidade selecionada será usada no momento da busca nos campos de seleção com dados dinâmicos.
Ainda, no caso dos campos de seleção terem seus valores preenchidos e a entidade de execução ser alterada, estes serão limpos, evitando que valores inválidos sejam enviados para processamento.
Exemplificando: partindo do cenário onde temos para seleção uma lista de obras da entidade, ao selecionar para executar em outro contexto e selecionado outra entidade, a lista de obras terá seu valor selecionado limpo e serão dispostos apenas as obras que pertencerem à entidade selecionada.
- Somente será exibido a opção de execução em outro contexto para usuários técnicos e somente serão listadas as entidades que o usuário é administrador e possui acesso técnico;
- Execuções em outro contexto serão automaticamente classificadas como execuções privadas.
Monitorando em tempo real as execuções
Dando continuidade às melhorias de desempenho e escalabilidade no monitoramento das execuções de relatórios e scripts, estamos disponibilizando uma opção para monitoramento em tempo real, o qual possibilita a visualização dos logs* e métricas antes do término da execução.
* disponível somente para scripts.
O monitoramento em tempo real, propicia o acompanhamento dos logs e métricas no decorrer da execução.
Caso seja necessário habilitar o monitoramento para uma execução que já esteja em andamento, é possível selecionar a opção de mesmo nome, que está disponível no ícone representado por uma engrenagem.
Ao selecionar a opção monitoramento em tempo real para uma execução que já esteja em andamento, os logs e métricas pararão a ser sincronizados e disponibilizados para consulta após alguns instantes.
Adicionado propriedade para recuperar a lista de e-mails configurados para serem notificados na execução de um Script
Adicionado a propriedade “emailsNotificacao” ao contexto do script. Esta propriedade retornará a lista de e-mails configurados na etapa de "Opções de execução". No caso de não haver sido configurado nenhum e-mail, será retornado um objeto nulo.
Na prática, a propriedade permitirá, por exemplo, que o desenvolvedor crie regras onde ao ocorrer falha de validação ou de execução, os usuários configurados para receberem a notificação poderão ser informados via programação conforme o desejado.
Exemplo:
if (contextoExecucao.emailsNotificacao != null) {
remetente = "ped@betha.com.br"
contextoExecucao.emailsNotificacao.each {
email = Email.novo()
email.de (remetente, "Email de ${remetente}")
.para(it, "Para ${it}")
.assunto("Execução de Script")
.mensagem("Você está recebendo este e-mail, pois está configurado nas opções de execução do agendamento")
.enviar()
}
}