Catalogue — la page Tâches
La page Tâches représente l'accueil de Nomaflow. Elle s'ouvre par défaut au clic sur Nomaflow dans la barre de navigation supérieure et liste toutes les tâches déclarées — planifiées ou manuelles uniquement, activées ou en pause.
Cette page décrit le rôle de chaque élément, l'effet des actions, et comment la fenêtre Exécuter avec paramètres permet aux opérateurs de surcharger un déclenchement sans modifier la définition de la tâche.
Disposition de la page
La page présente une fiche par tâche. Le catalogue est trié par ordre alphabétique d'identifiant ; il n'existe pas d'ordre manuel — l'identifiant et les étiquettes assurent ce rôle.
La barre d'outils
| Action | Effet |
|---|---|
| + Nouvelle tâche | Ouvre l'éditeur de tâche sur une tâche vierge (/nomaflow/jobs/new). |
| 📅 Vue calendrier | Ouvre la page Planifications — un calendrier des prochains déclenchements de toutes les tâches. |
| ↻ Recharger | Récupère à nouveau le catalogue. À utiliser après modification du TOML sur disque si l'installation l'autorise. |
Le contenu d'une fiche de tâche
Chaque fiche regroupe les neuf mêmes éléments :
| Élément | Emplacement sur la fiche | Signification |
|---|---|---|
| Identifiant | En haut à gauche, en chasse fixe. | L'identifiant de la tâche. Un clic sur le titre de la ligne ouvre le détail. |
| Badge de dernière exécution | Après l'identifiant. | Pastille colorée (SUCCEEDED, FAILED, RUNNING, CANCELED). Un clic ouvre le détail de l'exécution correspondante. |
| Étiquettes | Après le badge. | Libellés libres issus de la définition — etl, nightly, legal. |
| Bascule d'activation | En haut à droite. | Verte quand active. Le clic bascule l'indicateur enabled de la tâche et recharge le planificateur. Un indicateur d'activité tourne pendant l'enregistrement — il s'agit d'un véritable enregistrement, pas d'un affichage optimiste. |
| Description | Sous la ligne de titre. | Texte libre issu de la définition. |
| Pastille de planification | Ligne de méta, icône ⏱. | Expression cron en chasse fixe, ou manuel uniquement si aucune planification. |
| Indication de prochaine exécution | Ligne de méta, icône 📅. | Délai relatif jusqu'au prochain déclenchement (dans 14 m). Le survol affiche l'horodatage absolu. |
| Indication de dernière exécution | Ligne de méta. | Délai relatif depuis la dernière fin d'exécution. |
| Nombre d'étapes | Ligne de méta. | Nombre d'étapes que comporte la tâche. |
La rangée d'actions, en dessous, regroupe ▶ Lancer maintenant, ✕ Annuler (uniquement pendant une exécution en cours) et ✎ Modifier.
Activer / désactiver
La bascule d'activation en haut à droite de chaque fiche contrôle la prise en compte du cron par le planificateur. Comportements :
| État | Le cron déclenche ? | Le ▶ Lancer manuel fonctionne ? |
|---|---|---|
| Activée | Oui — chaque correspondance cron crée une exécution. | Oui. |
| Désactivée | Non — le planificateur ignore la tâche. | Oui — les opérateurs gardent la main pour déclencher manuellement. |
La bascule n'est pas un changement optimiste : son clic réécrit la configuration de tâche enregistrée avec la nouvelle valeur et déclenche un rechargement du planificateur. Le bouton affiche un indicateur d'activité le temps de l'aller-retour — généralement moins d'une seconde, mais l'indicateur reflète fidèlement ce qui se passe.
Modèle courant : figer une tâche pendant une fenêtre de maintenance en la désactivant, puis la réactiver une fois le système rétabli. L'historique de la tâche reste conservé ; seuls les déclenchements automatiques s'arrêtent.
▶ Lancer maintenant
Le clic sur Lancer maintenant déclenche une exécution de la tâche, en plus de toute planification. La suite dépend du contenu de la tâche :
| Situation | Conséquence |
|---|---|
| Tâche à une seule étape, sans paramètres ni op_kwargs. | La tâche se déclenche immédiatement. La fiche passe à RUNNING. |
| La tâche comporte des paramètres partagés ou une étape Python avec op_kwargs ou plus d'une étape. | La fenêtre Exécuter avec paramètres s'ouvre. |
| Une exécution est déjà en cours pour cette tâche. | Le bouton est désactivé — une seule exécution à la fois par tâche. |
La source de déclenchement de l'exécution produite est user:<votre-compte> — visible sur la page de détail et utilisée pour la piste d'audit.
Annuler une exécution
Quand l'état de la dernière exécution est RUNNING, un bouton ✕ Annuler apparaît dans la rangée d'actions. Son clic envoie un signal d'annulation à l'exécuteur :
- L'étape en cours reçoit une demande d'annulation — la suite dépend du type d'étape :
- Étapes SQL : la connexion sous-jacente est fermée ; la transaction de base de données est annulée.
- Étapes Python : la tâche asyncio est annulée ; les appels
awaiten cours lèventCancelledError. - Étapes HTTP / LDAP : l'appel réseau est interrompu.
- Les étapes restantes ne s'exécutent pas.
- L'état de l'exécution passe à
CANCELED.
L'annulation se fait au mieux — une étape Python bloquée sur un appel non asynchrone (un sleep de thread, un pilote BDD bloquant) ne s'arrête qu'à son prochain point de contrôle. Concevez les longues étapes Python pour vérifier l'annulation périodiquement ; le guide Python personnalisé décrit le modèle.
Mises à jour en direct
Le catalogue interroge le serveur toutes les 2 secondes dès qu'une exécution est en cours, ce qui signifie :
- Une tâche en
RUNNINGpasse à son état final sans rechargement manuel. - Une nouvelle exécution déclenchée par un cron apparaît sur la fiche avec son badge
RUNNINGen ~2 secondes. - Quand rien n'est en cours, l'interrogation s'arrête pour garder la page silencieuse.
Si la page semble obsolète, cliquez sur ↻ Recharger dans la barre d'outils — un rafraîchissement immédiat est forcé.
Exécuter avec paramètres
Quand vous cliquez sur ▶ Lancer maintenant pour une tâche qui contient des params, des op_kwargs sur une étape Python ou plus d'une étape, la fenêtre Exécuter avec paramètres s'ouvre.
Contenu de la fenêtre
| Section | Contenu |
|---|---|
| Niveau de journal | Liste déroulante : INFO ou DEBUG. Pré-rempli avec la valeur enregistrée. |
| Paramètres partagés | Une ligne par clé du bloc params de la tâche. Saisies typées (nombre / booléen / texte / sélecteur de connecteur). Masqué si la tâche n'a aucun paramètre. |
| Section par étape | Une par étape de la tâche. Chacune comporte le nom de l'étape, une case activée et (pour les étapes Python) une ligne par op_kwarg. |
Calcul du différentiel
La fenêtre n'envoie que le différentiel — les valeurs réellement modifiées. Les champs intacts reprennent la valeur enregistrée. Cliquer sur ▶ Lancer sans rien changer déclenche donc la tâche exactement comme un ▶ Lancer maintenant rapide.
Sélecteurs de connecteurs
Toute clé connector ou se terminant par _connector (par ex. source_connector, target_connector) s'affiche comme un sélecteur de recherche alimenté par les connecteurs du framework. Cela évite les fautes de frappe — et permet de découvrir des noms de connecteurs insoupçonnés.
Bascule d'activation par étape
Chaque étape dispose d'une case à cocher. La décocher indique à l'exécuteur de sauter cette étape pour ce déclenchement uniquement :
- L'étape figure dans l'historique avec l'état
CANCELEDet la raisonskipped: disabled. - Les étapes restantes s'exécutent normalement.
C'est la porte de sortie de l'opérateur pour les tâches enchaînées — relancer une tâche après correction de la donnée à l'étape 6, sans rejouer les étapes 1 à 5.
Cas d'usage
| Modèle | Apport de la fenêtre |
|---|---|
| Tester sur un bac à sable | Forcer target_connector à nomasx1-sandbox pour un déclenchement. |
| Réinjecter un tenant précis | Forcer apps_id depuis la valeur de production vers le tenant cible. |
| Rejouer uniquement la phase en échec | Désactiver les étapes 1 à 5 (déjà jouées), garder l'étape 6 active. |
| Diagnostiquer une étape instable | Basculer log_level sur DEBUG pour un déclenchement et voir le SQL complet. |
Recherche et filtrage
Le catalogue affiche l'identifiant, la description et les étiquettes de la tâche sur la fiche ; un Ctrl/Cmd+F du navigateur retrouve n'importe quoi rapidement. Aucune barre de recherche n'est intégrée à l'application aujourd'hui — la plupart des installations comptent moins de 50 tâches et la recherche navigateur suffit.
Pour les installations avec des centaines de tâches, plusieurs pistes :
- Adopter une convention de préfixe d'identifiant (
nomajde-…,nomasx1-…,reporting-…). - Étiqueter par fréquence (
hourly,daily,monthly) et par propriétaire (team-data,team-security).
Pour aller plus loin
- Créer une tâche — l'éditeur de tâche complet.
- Planifications — la syntaxe cron, la vue calendrier, l'aperçu agenda.
- Exécutions → Historique — destination du clic sur un badge de dernière exécution.
- Notifications — Slack / e-mail / webhook en cas de succès ou d'échec.