O Scheduler de tarefas no backend da aplicação AppMaster, como no caso clássico do backend, cria cenários repetitivos. Por exemplo, quando é necessário realizar uma acção específica numa agenda. Um exemplo clássico de tais tarefas é um exemplo de limpeza de ficheiros temporários no servidor, backups semanais, geração de relatórios de acordo com um determinado algoritmo, etc.
Vamos considerar um exemplo de utilização do agendador de tarefas no backend da aplicação AppMaster. Suponha que pretende construir um processo que todas as manhãs às 9h00 enviará ao utilizador o tempo para o seu número de telemóvel.
Assim, a tarefa é dividida em várias fases lógicas:
- Instalação e configuração do módulo para o envio de mensagens móveis
- Criação e configuração de um processo API de pedido externo
- Criação de um programador no backend da aplicação
1. Instalação e configuração do módulo de envio de mensagens móveis. O módulo Nexmo permite integrar na aplicação AppMaster a capacidade de enviar mensagens SMS para um número seleccionado.
- API Key - Chave API que pode ser obtida na sua conta Nexmo(https://dashboard.nexmo.com/settings);
- API Secret - uma chave privada que é utilizada em conjunto com a chave API para identificar o utilizador. Pode também obtê-la na sua conta Nexmo(https://dashboard.nexmo.com/settings);
- Do número - número especificado durante o registo na sua conta Nexmo.
Os seguintes processos empresariais são instalados automaticamente com a instalação do módulo:
- Nexmo.Send SMS - permite-lhe enviar mensagens para o número especificado através do
Módulo Nexmo:
- Telefone [telefone] - o número de telefone para o qual a mensagem será enviada;
- Conteúdo [string] - mensagem de texto;
2. O recurso web gratuito OpenWeather API será utilizado como fonte de dados meteorológicos(https://openweathermap.org/api). O primeiro passo é criar um modelo API de pedido externo. Os modelos de pedido de API são apresentados na secção Processo Comercial do separador Pedidos de API Externa. Para criar um novo modelo, clicar em Criar pedido de API.
Tipo de pedido: GET
Endereço para pedido: https://api.openweathermap.org/data/2.5/weather
Consultar Parames:
- Lat [string] - latitude
- Lon [fio] - longitude
- Appid [string] - Chave API OpenWeather
Como parte desta tarefa, estamos apenas interessados em alguns campos do organismo de resposta na sua maioria(https://openweathermap.org/api/one-call-3).
- Temp [flutuar] - temperatura
- Temp_min [float] - temperatura min
- Temp_max [float] - temperatura máxima
- Pressão [bóia] - pressão
- Humidade [flutuar] - humidade
3. Antes de criar o agendador de tarefas, é necessário criar um Processo Comercial que receba informações meteorológicas através do API. O Processo de Negócio tem o seguinte aspecto:
- Make Weather Query Model In - cria um modelo de parâmetros de pedido virtual. Lon, lat - coordenadas do local desejado, appid - chave API do serviço OpenWeather;
- Pedido de API: Weather - o processo empresarial responsável pela interacção com OpenWeather API
- Expandir o tempo: Body Model Out - necessário para a implementação do modelo de resposta Body
- Expandir o tempo: Body Model Out_main - expande o modelo principal do corpo do corpo de resposta ao pedido, a fim de obter a temperatura (temp).
- Para String - converte o valor do campo de temperatura em tipo string;
- Nexmo: Enviar SMS - envia uma mensagem com informação sobre a temperatura (Conteúdo) para o número de telefone especificado (Telefone)
Estabelecer um agendador na secção de processos empresariais do separador Agendador.
As definições do agendador no separador Agendador diferem consoante o seu tipo.
Vamos considerar cada uma delas em detalhe
1. Diário - permite a configuração de horários diários
- Tempo - define o tempo em UTC+0 em que o programador iniciará o BP seleccionado;
- Dias da semana - define os dias da semana em que o agendador irá trabalhar;
- Início automático - se definido para True, um novo BP não começará se o anterior não tiver sido completado. Valor por defeito: Falso.
- Tentativa automática - reinicia o processo automaticamente se tiver sido interrompido/não iniciado com sucesso.
Tentativa de novo processamento de itens falhados - número de tentativas para reiniciar o processo;
Aguardar antes de cada tentativa de nova tentativa - tempo de atraso antes de cada tentativa para reiniciar o processo;
- Force quit - termina o processo à força se não for concluído em poucos segundos. Verdade, por defeito. O número de segundos até à conclusão é de 3 segundos, por defeito.
2. Mensal - planeador mensal
- Tempo - define o tempo em UTC+0 em que o programador iniciará o BP seleccionado;
- Dias da semana - consiste em duas definições:
Frequência de repetição:
- Cada primeira
- A cada segundo
- A cada três
- A cada quatro
- Este dia
Dia da semana - define o dia da semana
- Mês - o mês é determinado
- Arranque Automático - Se definido para True, uma nova PSU não será iniciada, a menos que esteja concluída em breve. Valor por defeito: Falso.
- Tentativa automática - reinicia automaticamente o processo se este for interrompido/não iniciado
O novo processamento de itens falhados - o número de processos recomeça;
Esperar antes de cada nova tentativa - adiar o tempo antes de cada tentativa de reiniciar o processo;
- Force Quit - encerra um processo se este não for concluído em poucos segundos. Verdade, por defeito. O número de segundos até à conclusão é de 3 segundos, por defeito.
3. Periodicamente - permite configurar flexivelmente a frequência do agendador
- Cada - a capacidade de definir a repetibilidade a cada N segundos/minutos/horas/dia. Default: a cada 1 hora.
- Início automático - se definido para True, um novo BP não começará se o anterior não tiver sido completado. Valor por defeito: Falso.
- Tentativa automática - reinicia o processo automaticamente se tiver sido interrompido/não iniciado com sucesso.
Tentativas de reiniciar o processo - número de tentativas de reiniciar o processo;
Aguardar antes de cada tentativa de nova tentativa - tempo de atraso antes de cada tentativa para reiniciar o processo;
- Forçar a desistir - terminar forçosamente o processo se não for concluído em poucos segundos. Verdade, por defeito. O número de segundos até à conclusão é de 3 segundos, por defeito.
4. Depois de iniciar a aplicação - o planeador de tarefas de tempo único
- Atraso - define o atraso entre o início da aplicação e o arranque. Default - 0 seg
- Tentativa automática - reinicia automaticamente o processo se este for interrompido/não iniciado com sucesso
Tentativas de reiniciar o processo - número de tentativas de reiniciar o processo;
Aguardar antes de cada tentativa de nova tentativa - tempo de atraso antes de cada tentativa para reiniciar o processo;
- Forçar a desistir - terminar forçosamente o processo se não for concluído em poucos segundos. Verdade, por defeito. O número de segundos até à conclusão é de 3 segundos, por defeito.
5. Antes de terminar a aplicação - executar o agendador cada vez que a aplicação termina
- Tentativa automática - reinicia automaticamente o processo se este for interrompido/não iniciado com sucesso
Processamento de itens falhados - número de tentativas para reiniciar o processo;
Aguardar antes de cada tentativa de nova tentativa - tempo de atraso antes de cada tentativa de reiniciar o processo;
- Forçar a desistência - terminar forçosamente o processo se não for concluído em poucos segundos. Verdade, por defeito. O número de segundos até à conclusão é de 3 segundos, por defeito.
No separador Params das definições do agendador, é também possível passar parâmetros para a entrada do BP quando este é lançado pelo agendador:
No nosso exemplo, as definições do agendador têm este aspecto:
- As mensagens serão enviadas todos os dias às 9 horas UTC+0
- Tenta automaticamente reiniciar o processo 3 vezes com um atraso de 10 minutos entre tentativas, se o processo não tiver começado imediatamente;
- Termina forçosamente um processo se este não tiver sido concluído em três segundos.
A nossa aplicação vive e trabalha no backend, por isso, para que funcione, basta publicá-la.