Le planificateur de tâches dans le backend de l'application AppMaster, comme dans le cas classique du backend, crée des scénarios répétitifs. Par exemple, lorsque vous devez effectuer une action spécifique selon un calendrier. Un exemple classique de telles tâches est le nettoyage des fichiers temporaires sur le serveur, les sauvegardes hebdomadaires, la génération de rapports selon un algorithme donné, etc.
Considérons un exemple d'utilisation du planificateur de tâches dans le backend de l'application AppMaster. Supposons que vous vouliez construire un processus qui, chaque matin à 9h00, enverra à l'utilisateur la météo sur son numéro de téléphone mobile.
La tâche est donc divisée en plusieurs étapes logiques :
- Installation et configuration du module d'envoi de messages mobiles.
- Création et configuration d'un processus API de requête externe
- Mise en place d'un planificateur dans le backend de l'application.
1. Installation et configuration du module d'envoi de messages mobiles Le module Nexmo permet d'intégrer à l'application AppMaster la possibilité d'envoyer des SMS à un numéro sélectionné.
- API Key - clé API qui peut être obtenue dans votre compte Nexmo(https://dashboard.nexmo.com/settings);
- API Secret - une clé privée qui est utilisée en conjonction avec la clé API pour identifier l'utilisateur. Vous pouvez également l'obtenir dans votre compte Nexmo(https://dashboard.nexmo.com/settings);
- Du numéro - numéro spécifié lors de l'enregistrement dans votre compte Nexmo.
Les processus d'affaires suivants sont installés automatiquement avec l'installation du module :
- Nexmo.Send SMS - permet d'envoyer des messages au numéro spécifié par le biais du module Nexmo.
module Nexmo :
- Phone [phone] - le numéro de téléphone auquel le message sera envoyé ;
- Content [string] - message texte ;
2. La ressource web gratuite OpenWeather API sera utilisée comme source de données météorologiques(https://openweathermap.org/api). La première étape consiste à créer un modèle de demande API externe. Les modèles de demande API sont présentés dans la section Processus métier de l'onglet Demandes API externes. Pour créer un nouveau modèle, cliquez sur Créer une demande API.
Type de demande : GET
Adresse de la requête : https://api.openweathermap.org/data/2.5/weather
Paramètres de la requête :
- Lat [string] - latitude
- Lon [string] - longitude
- Appid [string] - Clé API OpenWeather
Dans le cadre de cette tâche, nous ne nous intéressons qu'à quelques champs du corps de la réponse dans la partie principale(https://openweathermap.org/api/one-call-3).
- Temp [float] - température
- Temp_min [float] - température minimale
- Temp_max [float] - température maximale
- Pressure [float] - pression
- Humidity [float] - humidité
3. Avant de configurer le planificateur de tâches, vous devez créer un processus métier qui recevra les informations météorologiques via l'API. Le processus d'entreprise se présente comme suit :
- Make Weather Query Model In - crée un modèle virtuel de paramètres de requête. Lon, lat - coordonnées de l'emplacement souhaité, appid - clé API du service OpenWeather ;
- Demande API : Weather - le processus métier responsable de l'interaction avec l'API OpenWeather.
- Expand Weather : Body Model Out - nécessaire afin de déployer le modèle de réponse Body
- Expand Weather : Body Model Out_main - développe le modèle principal du corps de la requête-réponse Body afin d'obtenir la température (temp).
- To String - convertit la valeur du champ temp en type de chaîne ;
- Nexmo : Send SMS - envoie un message contenant des informations sur la température (Content) au numéro de téléphone spécifié (Phone).
Configurez un planificateur dans la section Processus d'affaires de l'onglet Planificateur.
Les paramètres du planificateur dans l'onglet Planificateur diffèrent en fonction de leur type.
Examinons chacun d'entre eux en détail
1. Daily - permet de configurer des planifications quotidiennes
- Heure - définit l'heure en UTC+0 à laquelle le planificateur démarrera le BP sélectionné ;
- Jours de la semaine - définit les jours de la semaine où le planificateur doit travailler ;
- Démarrage automatique - si la valeur est True, un nouveau BP ne démarrera pas si le précédent n'est pas terminé. Valeur par défaut : False.
- Automatically retry - redémarre automatiquement le processus s'il a été interrompu/ne s'est pas lancé avec succès.
Réessayer le traitement des éléments ayant échoué - nombre de tentatives pour relancer le processus ;
Wait before each retry attempt - délai avant chaque tentative de redémarrage du processus ;
- Forcer la sortie - termine de manière forcée le processus s'il n'est pas terminé dans les quelques secondes. Vrai, par défaut. Le nombre de secondes avant l'achèvement est de 3 secondes, par défaut.
2. Monthly - planificateur mensuel
- Time - définit l'heure en UTC+0 à laquelle le planificateur démarrera la BP sélectionnée ;
- Jours de la semaine - consiste en deux paramètres :
Fréquence de répétition :
- Chaque premier
- Chaque deuxième
- Tous les trois
- Tous les quatre
- Ce jour
Jour de la semaine - définit le jour de la semaine
- Mois - le mois est déterminé
- Auto Start (Démarrage automatique) - S'il est défini sur True, un nouveau PSU ne sera pas démarré s'il n'est pas terminé bientôt. Valeur par défaut : False.
- Automatically retry - redémarre automatiquement le processus s'il a été interrompu/non démarré
Retenter le traitement des éléments ayant échoué - le nombre de redémarrages du processus ;
Wait before each retry - délai avant chaque tentative de redémarrage du processus ;
- Force Quit - met fin à un processus s'il n'est pas terminé dans les quelques secondes qui suivent. Vrai, par défaut. Le nombre de secondes avant l'achèvement est de 3 secondes, par défaut.
3. Périodiquement - permet de configurer de manière flexible la fréquence de l'ordonnanceur.
- Chaque - la possibilité de définir la répétitivité toutes les N secondes/minutes/heures/jours. Par défaut : toutes les 1 heure.
- Démarrage automatique - si cette option est définie sur True, une nouvelle BP ne démarrera pas si la précédente n'est pas terminée. Valeur par défaut : False.
- Automatically retry - redémarre automatiquement le processus s'il a été interrompu ou n'a pas été lancé avec succès.
Réessayer le traitement des éléments ayant échoué - nombre de tentatives pour relancer le processus ;
Wait before each retry attempt - délai avant chaque tentative de redémarrage du processus ;
- Force quit - met fin de manière forcée au processus s'il n'est pas terminé dans les quelques secondes qui suivent. Vrai, par défaut. Le nombre de secondes avant l'achèvement est de 3 secondes, par défaut.
4. Après le démarrage de l'application - le planificateur de tâches à temps unique
- Delay - définit le délai entre le démarrage de l'application et le démarrage. Par défaut - 0 sec
- Automatically retry - redémarre automatiquement le processus s'il a été interrompu/ne s'est pas lancé avec succès
Réessayer le traitement des éléments ayant échoué - nombre de tentatives pour relancer le processus ;
Wait before each retry attempt - délai avant chaque tentative de redémarrage du processus ;
- Force quit - met fin de manière forcée au processus s'il n'est pas terminé dans les quelques secondes qui suivent. Vrai, par défaut. Le nombre de secondes avant l'achèvement est de 3 secondes, par défaut.
5. Avant de terminer l'application - exécute le planificateur chaque fois que l'application se termine.
- Réessayer automatiquement - redémarre automatiquement le processus s'il a été interrompu ou n'a pas été lancé avec succès.
Réessayer le traitement des éléments ayant échoué - nombre de tentatives pour relancer le processus ;
Wait before each retry attempt - délai avant chaque tentative de redémarrage du processus ;
- Forcer la sortie - termine de force le processus s'il n'est pas terminé dans quelques secondes. Vrai, par défaut. Le nombre de secondes avant l'achèvement est de 3 secondes, par défaut.
Dans l'onglet Params des paramètres de l'ordonnanceur, il est également possible de passer des paramètres à l'entrée BP lorsqu'elle est lancée par l'ordonnanceur :
Dans notre exemple, les paramètres du planificateur ressemblent à ceci :
- Les messages seront envoyés tous les jours à 9 heures UTC+0.
- Essaie automatiquement de redémarrer le processus 3 fois avec un délai de 10 minutes entre les tentatives si le processus n'a pas démarré immédiatement ;
- Termine de force un processus s'il n'a pas été achevé dans les trois secondes.
Notre application vit et fonctionne dans le backend, donc pour qu'elle fonctionne, il suffit de la publier.