Déclencheurs
L'écran Déclencheurs vous permet de démarrer une exécution d'agent chaque fois qu'un événement métier est publié sur un sujet, éventuellement seulement quand le contenu de l'événement respecte un filtre, puis de supprimer ces déclencheurs. Chemin dans le portail : /agents/triggers. Les développeurs, les responsables d'application et les administrateurs du tenant branchent leurs agents sur des événements. L'écran est dessiné par portal/src/screens/agents.tsx.
Ce que montre l'écran
- Tableau Déclencheurs, lu par
GET /v1/triggers(tous les déclencheurs du tenant en un appel, les plus anciens d'abord). Colonnes : Identifiant, Sujet, Identifiant d'agent, Filtre, Activé. - Liste vide : Aucun déclencheur, avec l'aide Démarrez des agents à partir d'événements métier. et le bouton Nouveau déclencheur.
- Le menu de ligne Voir le détail affiche tous les champs de la ligne dans un panneau latéral.
- Nouveau déclencheur ouvre un panneau latéral avec les champs Sujet (obligatoire, exemple
erp.invoice.created), Identifiant d'agent (obligatoire) et Filtre (exempletype=invoice && currency!=USD, aidepath=value && path!=value).
Actions
| Bouton ou action | Ce qu'il fait | Appel d'API | Rôles |
|---|---|---|---|
| Actualiser (icône) | Recharge la liste. | GET /v1/triggers | Tout membre du tenant |
| Nouveau déclencheur | Crée le déclencheur après avoir vérifié le sujet et le filtre. | POST /v1/triggers | tenant_admin, developer, application_owner |
| Menu Voir le détail | Affiche la ligne dans un panneau latéral. | Aucun | Tout membre du tenant |
| Menu Supprimer | Ouvre Confirmer une action destructive ; saisissez l'identifiant du déclencheur, puis Confirmer. | GET /v1/lineage/graph, puis DELETE /v1/triggers/{trigger_id} | tenant_admin, developer, application_owner |
| Réessayer (état d'erreur) | Relance la lecture qui a échoué. | Même appel | Mêmes rôles |
La grammaire du filtre (services/control-plane/src/eai/domains/agents/scheduler.py) est une liste de clauses path=value ou path!=value reliées par && ; le chemin suit les points dans le contenu de l'événement. Avec le filtre ci-dessous, un événement ne démarre l'agent que si type vaut invoice et currency ne vaut pas USD :
type=invoice && currency!=USD
Le sujet suit les règles NATS ; un sujet de déclencheur peut utiliser les jokers * (un segment) et > (le reste). Les applications publient leurs événements avec POST /v1/events/publish.
Rôles
Le portail ne masque aucun bouton. La création et la suppression contrôlent WRITE_ROLES (tenant_admin, developer, application_owner) dans services/control-plane/src/eai/domains/agents/routes.py ; la liste demande seulement un tenant. La publication d'un événement contrôle OPS_ROLES (tenant_admin, developer, agent). platform_admin passe tous les contrôles de rôle.
Tâches courantes
Démarrer un agent à la création d'une facture
- Choisir le sujet. Le sujet est le nom de l'événement que publie le connecteur ERP ou l'application. Convenez-en avec l'émetteur, par exemple
erp.invoice.created. Résultat attendu : un sujet par type d'événement. En cas d'échec : un sujet avec des espaces ou des segments vides est refusé avecinvalid_subject. - Créer le déclencheur. Le déclencheur relie le sujet à l'agent. Cliquez sur Nouveau déclencheur, remplissez Sujet et Identifiant d'agent, ajoutez un Filtre si seuls certains événements comptent, puis cliquez sur Créer. Résultat attendu : le message Créé et une nouvelle ligne. En cas d'échec :
invalid_filter(422) signifie qu'une clause n'a ni=ni!=, ou a un chemin vide. - Vérifier la première exécution. Le prochain événement qui correspond démarre une exécution. Après la publication d'un événement, ouvrez l'écran Exécutions. Résultat attendu : une exécution de l'agent apparaît. En cas d'échec : comparez le contenu de l'événement au filtre ; un chemin absent du contenu fait échouer une clause
=, et les valeurs sont comparées comme du texte.
Retirer un déclencheur
- Le supprimer. Un déclencheur supprimé ne démarre plus d'exécution. Dans le menu de ligne, cliquez sur Supprimer, saisissez l'identifiant du déclencheur, puis cliquez sur Confirmer. Résultat attendu : le message Terminé et la ligne disparaît. En cas d'échec :
trigger_not_found(404) signifie qu'il a déjà été supprimé ; cliquez sur Actualiser.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
invalid_subject (422) : « Sujet d'événement invalide : ... » | Le sujet n'est pas un sujet NATS valide. | Utilisez des segments séparés par des points, sans espace, comme erp.invoice.created. |
invalid_filter (422) : « Filtre de déclencheur invalide. » | Une clause n'a ni = ni !=, ou son chemin est vide. | Écrivez des clauses path=value ou path!=value reliées par &&. |
agent_not_found (404) sur Créer | Identifiant d'agent ne désigne aucun agent du tenant. | Copiez l'identifiant ou le nom depuis le Registre. |
trigger_not_found (404) sur Supprimer | Le déclencheur n'existe plus. | Cliquez sur Actualiser. |
forbidden (403) avec required_roles | Vos rôles ne sont pas tenant_admin, developer ou application_owner. | Demandez l'un de ces rôles à un administrateur du tenant. |
| Des événements sont publiés mais aucune exécution ne démarre | Le filtre ne correspond pas au contenu, ou l'agent n'est pas actif. | Vérifiez les chemins du contenu et le statut de l'agent. |