ERPNext
Tâches de transition de workflow
Une tâche de transition s'exécute pendant le changement d'état. En synchrone, un échec annule la transition. En asynchrone, elle part après.
Annonce de version
La page d'origine indique en tête que la fonction est à ajouter en version 16, puis décrit son fonctionnement.
À quoi sert une tâche
Les tâches de transition de workflow (Workflow Transition Tasks) sont des actions lancées pendant un changement d'état. Chaque transition peut être liée à un ensemble de tâches.
Chaque tâche est d'un de ces types :
- Actions définies par l'application, déclarées par chaque application Frappe dans
hooks.py. - Scripts serveur. La page renvoie à la documentation framework : Server Script.
- Webhooks. La page renvoie à Webhooks.
Deux modes :
- Synchrone, le mode par défaut. Les tâches s'enchaînent quand la transition démarre. Si l'une échoue, la transition est annulée.
- Asynchrone, via la case Asynchronous. Chaque tâche part après la fin de la transition. Elle n'influence pas la réussite de l'état, et tourne dans son propre travail d'arrière-plan.
Actions définies par l'application
Chaque application les déclare avec le hook workflow_methods. La page renvoie aux hooks.
La méthode, en chemin pointé, doit accepter doc: Document, le document sur lequel la transition s'applique. Exemple de la source :
# hooks.py
workflow_methods = [{"name": "Create a customer", "method":
"myapp.shop.doctype.kirana.create_customer"}]
# myapp/shop/doctype/kirana.py
def create_customer(doc):
customer = frappe.new_doc("Customer")
customer.customer_name = "Customer " + doc.name
customer.customer_type = "Individual"
customer.save()Ces actions apparaissent dans la liste Tâches si une application les fournit. Un utilisateur final ne peut pas les créer lui-même. Il passe par un script serveur.
Scripts serveur
Ils prennent aussi le paramètre doc: Document. On les définit avec le type de script Workflow Task, puis on les lie à la tâche de transition.
Webhooks
On les crée en mettant le champ événement du document (Doc Event) du webhook à workflow_transition, puis on les lie à la tâche.
