El Programador de Tareas en el backend de la aplicación AppMaster, como en el caso clásico del backend, crea escenarios de repetición. Por ejemplo, cuando usted necesita hacer una acción específica en un horario. Un ejemplo clásico de este tipo de tareas es la limpieza de archivos temporales en el servidor, las copias de seguridad semanales, la generación de informes según un algoritmo determinado, etc.
Consideremos un ejemplo de uso del programador de tareas en el backend de la aplicación AppMaster. Supongamos que se quiere construir un proceso que cada mañana a las 9.00 horas envíe al usuario el tiempo a su número de teléfono móvil.
Así, la tarea se divide en varias etapas lógicas:
- Instalar y configurar el módulo de envío de mensajes al móvil
- Creación y configuración de un proceso API de solicitud externa
- Configuración de un planificador en el backend de la aplicación
1. El módulo Nexmo le permite integrar en la aplicación AppMaster la capacidad de enviar mensajes SMS a un número seleccionado.
- APIKey - clave de la API que se puede obtener en su cuenta Nexmo(https://dashboard.nexmo.com/settings);
- APISecret - una clave privada que se utiliza junto con la clave API para identificar al usuario. También puede obtenerla en su cuenta Nexmo (https://dashboard.nexmo.com/settings);
- De número - número especificado durante el registro en su cuenta Nexmo.
Los siguientes procesos de negocio se instalan automáticamente con la instalación del módulo:
- Nexmo.Send SMS - permite enviar mensajes al número especificado a través del
módulo Nexmo:
- Teléfono [teléfono] - el número de teléfono al que se enviará el mensaje;
- Contenido [cadena] - mensaje de texto;
2. El recurso web gratuito OpenWeather API se utilizará como fuente de datos meteorológicos(https://openweathermap.org/api). El primer paso es crear una plantilla de solicitud externa de la API. Las plantillas de solicitud API se presentan en la sección Proceso de Negocio de la pestaña Solicitudes API externas. Para crear una nueva plantilla, haga clic en Crear solicitud API.
Tipo de solicitud: GET
Dirección de la solicitud: https: //api.openweathermap.org/data/2.5/weather
Parámetros de consulta:
- Lat [cadena] - latitud
- Lon [cadena] - longitud
- Appid [string] - clave de la API de OpenWeather
Como parte de esta tarea, sólo nos interesan unos pocos campos del cuerpo de la respuesta en el principal(https://openweathermap.org/api/one-call-3).
- Temp [float] - temperatura
- Temp_min [float] - temperatura mínima
- Temp_max [float] - temperatura máxima
- Presión [float] - presión
- Humedad [float] - humedad
3. Antes de configurar el programador de tareas, es necesario crear un Proceso de Negocio que recibirá la información meteorológica a través de la API. El Proceso de Negocio tiene el siguiente aspecto:
- Make Weather Query Model In - crea un modelo de parámetros de solicitud virtual. Lon, lat - coordenadas de la ubicación deseada, appid - clave API del servicio OpenWeather;
- Solicitud API: Weather - el proceso de negocio responsable de interactuar con la API de OpenWeather
- Expandir Weather: Body Model Out - necesario para desplegar el modelo de respuesta Body
- Expandir Weather: Body Model Out_main - expande el modelo principal del cuerpo de la solicitud-respuesta Body para obtener la temperatura (temp).
- To String - convierte el valor del campo temp en un tipo de cadena;
- Nexmo: Send SMS - envía un mensaje con información sobre la temperatura (Content) al número de teléfono especificado (Phone)
Configure un programador en la sección de procesos de negocio de la pestaña Programador.
Los ajustes del programador en la pestaña Programador difieren según su tipo.
Vamos a considerar cada uno de ellos en detalle
1. Diario - permite configurar los horarios diarios
- 2. Hora - define la hora en UTC+0 a la que el programador iniciará el PB seleccionado;
- 3. Días de la semana - define los días de la semana en los que trabajará el programador;
- Inicio automático - si se establece como Verdadero, un nuevo PB no se iniciará si el anterior no se ha completado. Valor por defecto: Falso.
- Reintentar automáticamente - reinicia el proceso automáticamente si se ha interrumpido/no se ha iniciado con éxito.
Reintentar procesamiento de elementos fallidos - número de intentos para reiniciar el proceso;
Esperar antes de cada intento de reintento - tiempo de retraso antes de cada disparo para reiniciar el proceso;
- Forzar salida - terminar forzosamente el proceso si no se completa en unos segundos. Verdadero, por defecto. El número de segundos hasta la finalización es de 3 segundos, por defecto.
2. Mensual - planificador mensual
- 3. Hora - define la hora en UTC+0 a la que el planificador iniciará el PB seleccionado;
- Días de la semana - consiste en dos ajustes:
Frecuencia de repetición:
- Cada primero
- Cada dos
- Cada tres
- Cada cuatro
- Este día
Día de la semana - define el día de la semana
- Mes - se determina el mes
- Arranque automático - Si se establece como Verdadero, no se iniciará un nuevo PSU a menos que se complete pronto. Valor por defecto: Falso.
- Reintentar automáticamente - reinicia el proceso automáticamente si se interrumpió/no se inició
Reintentar el procesamiento de elementos fallidos - el número de reinicios del proceso;
Esperar antes de cada reintento - tiempo de retraso antes de cada intento de reiniciar el proceso;
- Forzar salida - Termina un proceso si no se completa en unos segundos. Verdadero, por defecto. El número de segundos hasta la finalización es de 3 segundos, por defecto.
3. Periódicamente - permite configurar de forma flexible la frecuencia del programador
- Cada - permite configurar la repetición cada N segundos/minutos/horas/días. Por defecto: cada 1 hora.
- 4. Iniciar automáticamente - si se establece como Verdadero, un nuevo PA no se iniciará si el anterior no se ha completado. Valor por defecto: Falso.
- Reintentar automáticamente: reinicia el proceso automáticamente si se ha interrumpido/no se ha iniciado con éxito.
Reintentar procesamiento de elementos fallidos - número de intentos para reiniciar el proceso;
Esperar antes de cada intento de reintento - tiempo de retraso antes de cada disparo para reiniciar el proceso;
- Forzar salida - terminar forzosamente el proceso si no se completa en unos segundos. Verdadero, por defecto. El número de segundos hasta la finalización es de 3 segundos, por defecto.
4. Después de iniciar la aplicación - el planificador de tareas único
- Retraso - define el retraso entre el inicio de la aplicación y el arranque. Por defecto - 0 seg.
- Reintentar automáticamente - reinicia el proceso automáticamente si se interrumpió/no se inició con éxito
Reintentar procesamiento de elementos fallidos - número de intentos para reiniciar el proceso;
Esperar antes de cada intento de reintento - tiempo de retraso antes de cada disparo para reiniciar el proceso;
- Forzar salida - terminar forzosamente el proceso si no se completa en unos segundos. Verdadero, por defecto. El número de segundos hasta la finalización es de 3 segundos, por defecto.
5. Antes de terminar la aplicación - ejecuta el programador cada vez que la aplicación termina
- 6. Reintentar automáticamente - reinicia el proceso automáticamente si se interrumpió/no se inició con éxito
Reintentar el procesamiento de elementos fallidos - número de intentos para reiniciar el proceso;
Esperar antes de cada intento de reintento - tiempo de retraso antes de cada intento de reiniciar el proceso;
- Forzar la salida - terminar forzosamente el proceso si no se completa en unos pocos segundos. Verdadero, por defecto. El número de segundos hasta la finalización es de 3 segundos, por defecto.
En la pestaña Params de la configuración del planificador, también es posible pasar parámetros a la entrada de BP cuando es lanzada por el planificador:
En nuestro ejemplo, la configuración del planificador es la siguiente
- Los mensajes se enviarán todos los días a las 9 am UTC+0
- Intenta automáticamente reiniciar el proceso 3 veces con un retraso de 10 minutos entre los intentos si el proceso no se inició inmediatamente;
- Termina forzosamente un proceso si no se ha completado en tres segundos.
Nuestra aplicación vive y funciona en el backend, por lo que para que funcione basta con publicarla.