Documentation Frappe Framework

Frappe Framework

Déclencheurs et conditions

Dix types vont de la création au lancement manuel. Les étapes tournent plus tard, avec les droits de Run As. Installations et migrations sautent les flux.

3 min de lectureMis à jour le Source : docs.frappe.io

Rôle

Sur le formulaire Automation Flow, le déclencheur décide quand le flux est considéré. Les champs de correspondance et la condition décident si le document est retenu. Émettre un événement depuis une application est décrit dans Étendre les automatisations.

Types

TypeMomentIl faut
Doc CreatedInsertionDocument Type
Doc UpdatedEnregistrement d’un document déjà là, pas à l’insertionDocument Type
Field Value ChangedUn champ change à l’enregistrementDocument Type et Trigger Field
Doc DeletedSuppressionDocument Type
Doc SubmittedSoumission d’un document soumissibleDocument Type
Doc CancelledAnnulation d’un document soumissibleDocument Type
Date BasedUn champ date est à N jours d’aujourd’huiDocument Type et Date Field
ScheduledUne expression cron arrive à échéanceCron Expression
Custom EventUne app appelle frappe.automation_engine.emit()Nom Custom Event
ManualQuelqu’un lance le fluxRien

Field Value Changed : Trigger Field, et en option From Value et To Value. Vide signifie n’importe quelle valeur. status vers Closed part à chaque clôture, quel que soit l’ancien statut.

Date Based : Date Field, Date Offset (Days), Date Direction. Trois jours Before renewal_date vise un renouvellement dans trois jours. Un jour After due_date vise un retard depuis hier. Le contrôle est horaire. Chaque document part au plus une fois par jour.

Scheduled : cinq champs, par exemple 0 9 * * 1 pour 9 h le lundi. Next Run s’affiche après l’enregistrement. Sans Document Type, le flux part une fois, sans document : digest ou API externe. Avec un type, il part une fois pour chaque document qui correspond. Si le planificateur a manqué plusieurs échéances, un seul rattrapage a lieu, pour la plus récente.

Custom Event : le nom doit être exactement celui émis, par exemple crm.deal_won. Avec un Document Type, seuls les événements de ce type sont pris.

Manual : jamais tout seul. L’application appelle frappe.automation_engine.api.run_manually, par exemple depuis un bouton. L’appelant doit pouvoir écrire le flux et lire le document.

Correspondance

Match Fields reprend l’éditeur de filtres de la liste. Toutes les lignes doivent être vraies. Exemple sur un Lead : Status égal à Open, Source renseigné, Annual Revenue supérieur à 1000000. Sans ligne, tous les documents du type correspondent.

Advanced Expression using Python reçoit doc et l’évaluateur sûr, donc les aides de frappe.utils. Les deux exemples : doc.status == "Open" or doc.priority == "High", et doc.grand_total > 50000 and doc.customer_group != "Internal". Champs et expression doivent être vrais ensemble. Une erreur d’expression exclut le document et part dans l’Error Log.

Au moment de l’exécution

Le déclencheur est vu à l’enregistrement, les étapes partent un peu plus tard dans un worker. Revalidate on Run reteste champs et condition juste avant. Si ça ne correspond plus, l’exécution est Skipped. Utile si un statut est posé puis annulé tout de suite.

Run As :

  • Automation User, par défaut : l’utilisateur du champ Automation User, Administrator tant qu’on ne le change pas ;
  • Triggering User : celui dont l’action a déclenché ;
  • Document Owner : le propriétaire du document.

Chaque étape contrôle les droits de cet utilisateur. La note conseille un utilisateur dédié, avec seulement les rôles nécessaires, plutôt que Administrator.

Les flux sont sautés pendant les installations, migrations et patches, si Disable Automations est coché dans Automation Settings, et si automation_disabled est dans site_config.json. Un import peut les couper :

python
from frappe.automation_engine import skip_automations

with skip_automations():
    doc.save()

Point d’attention

Doc Updated ne part pas à l’insertion. Un cron manqué plusieurs fois ne rattrape que la dernière échéance.