Cette documentation a été traduite automatiquement par IA.
Toutes les modifications de données effectuées par les utilisateurs dans le système sont généralement réalisées via une action, qui prend souvent la forme d'un clic sur un bouton. Ce bouton peut être un bouton de soumission dans un formulaire ou un bouton d'action dans un bloc de données. L'événement post-action permet d'associer des flux de travail à ces actions de bouton, afin de déclencher un processus spécifique une fois l'opération de l'utilisateur réussie.
Par exemple, lors de l'ajout ou de la mise à jour de données, vous pouvez configurer l'option « Lier un flux de travail » pour un bouton. Une fois l'action terminée, le flux de travail lié sera déclenché.
Au niveau de l'implémentation, étant donné que la gestion des événements post-action se situe au niveau du middleware (le middleware de Koa), les appels d'API HTTP vers NocoBase peuvent également déclencher des événements post-action définis.
C'est un plugin intégré, aucune installation n'est requise.
Lors de la création d'un flux de travail, sélectionnez « Événement post-action » comme type :

Pour les événements post-action, vous pouvez également choisir le mode d'exécution « Synchrone » ou « Asynchrone » lors de sa création :

Si le processus doit être exécuté et renvoyé immédiatement après l'action de l'utilisateur, vous pouvez utiliser le mode synchrone ; sinon, le mode asynchrone est utilisé par défaut. En mode asynchrone, l'action est terminée immédiatement après le déclenchement du flux de travail, et le flux de travail sera exécuté séquentiellement dans la file d'attente en arrière-plan de l'application.
Accédez au canevas du flux de travail, cliquez sur le déclencheur pour ouvrir la fenêtre contextuelle de configuration, et sélectionnez d'abord la collection à lier :

Ensuite, sélectionnez le mode de déclenchement, qui peut être local ou global :

Où :
En mode local, les boutons d'action qui prennent actuellement en charge la liaison sont les suivants :
Si vous choisissez le mode global, vous devez également sélectionner le type d'action. Actuellement, les actions « Créer des données » et « Mettre à jour des données » sont prises en charge. Ces deux actions déclenchent le flux de travail une fois l'opération réussie.
Si vous avez besoin d'utiliser les données associées aux données déclenchées dans les processus ultérieurs, vous pouvez sélectionner les champs d'association à précharger :

Après le déclenchement, vous pouvez utiliser directement ces données associées dans le processus.
Pour les actions en mode de déclenchement local, une fois le flux de travail configuré, vous devez retourner à l'interface utilisateur et lier le flux de travail au bouton d'action du formulaire du bloc de données correspondant.
Les flux de travail configurés pour le bouton « Soumettre » (y compris le bouton « Enregistrer les données ») seront déclenchés une fois que l'utilisateur aura soumis le formulaire correspondant et que l'action sur les données sera terminée.

Sélectionnez « Lier un flux de travail » dans le menu de configuration du bouton pour ouvrir la fenêtre contextuelle de configuration de la liaison. Dans cette fenêtre, vous pouvez configurer autant de flux de travail à déclencher que vous le souhaitez. Si aucun n'est configuré, cela signifie qu'aucun déclenchement n'est nécessaire. Pour chaque flux de travail, vous devez d'abord spécifier si les données de déclenchement sont les données de l'ensemble du formulaire ou les données d'un certain champ d'association dans le formulaire. Ensuite, en fonction de la collection correspondant au modèle de données sélectionné, choisissez le flux de travail de formulaire qui a été configuré pour correspondre à ce modèle de collection.


Le flux de travail doit être activé avant de pouvoir être sélectionné dans l'interface ci-dessus.
Voici une démonstration utilisant l'action de création.
Imaginons un scénario de « Demande de remboursement ». Après qu'un employé a soumis une demande de remboursement, nous devons effectuer une vérification automatique du montant et une vérification manuelle pour les montants dépassant la limite. Seules les demandes approuvées après vérification sont acceptées, puis transmises au service financier pour traitement.
Tout d'abord, nous pouvons créer une collection « Remboursement » avec les champs suivants :
Ensuite, créez un flux de travail de type « Événement post-action » et configurez le modèle de collection dans le déclencheur pour qu'il soit la collection « Remboursement » :

Après avoir activé le flux de travail, nous reviendrons plus tard pour configurer les nœuds de traitement spécifiques du processus.
Ensuite, nous créons un bloc de tableau pour la collection « Remboursement » dans l'interface, ajoutons un bouton « Ajouter » à la barre d'outils et configurons les champs de formulaire correspondants. Dans les options de configuration du bouton d'action « Soumettre » du formulaire, ouvrez la boîte de dialogue de configuration « Lier un flux de travail » du bouton, sélectionnez toutes les données du formulaire comme contexte, et le flux de travail que nous avons créé précédemment :

Une fois la configuration du formulaire terminée, revenez à l'orchestration logique du flux de travail. Par exemple, nous exigeons une vérification manuelle par un administrateur lorsque le montant est supérieur à 500, sinon il est directement approuvé. Après approbation, un enregistrement de remboursement est créé et traité ultérieurement par le service financier (omis).

En ignorant le traitement ultérieur par le service financier, la configuration du processus de demande de remboursement est maintenant terminée. Lorsqu'un employé remplit et soumet une demande de remboursement, le flux de travail correspondant sera déclenché. Si le montant de la dépense est inférieur à 500, un enregistrement sera automatiquement créé et attendra un traitement ultérieur par le service financier. Sinon, il sera examiné par un superviseur, et après approbation, un enregistrement sera également créé et transmis au service financier pour traitement.
Le processus de cet exemple peut également être configuré sur un bouton « Soumettre » ordinaire. Vous pouvez décider de créer un enregistrement avant d'exécuter les processus ultérieurs en fonction du scénario métier spécifique.
Le déclenchement des événements post-action ne se limite pas aux opérations de l'interface utilisateur ; il peut également être déclenché via des appels d'API HTTP.
Lorsque vous déclenchez un événement post-action via un appel d'API HTTP, vous devez également prêter attention à l'état d'activation du flux de travail et à la correspondance de la configuration de la collection, sinon l'appel pourrait échouer ou une erreur pourrait se produire.
Pour les flux de travail liés localement à un bouton d'action, vous pouvez l'appeler comme ceci (en utilisant le bouton de création de la collection posts comme exemple) :
Où le paramètre d'URL triggerWorkflows est la clé du flux de travail, avec plusieurs flux de travail séparés par des virgules. Cette clé peut être obtenue en survolant le nom du flux de travail en haut du canevas du flux de travail :

Après le succès de l'appel ci-dessus, l'événement post-action de la collection posts correspondante sera déclenché.
Étant donné que les appels externes doivent également être basés sur l'identité de l'utilisateur, lors d'un appel via l'API HTTP, tout comme les requêtes envoyées depuis l'interface normale, des informations d'authentification doivent être fournies, y compris l'en-tête de requête Authorization ou le paramètre token (le jeton obtenu lors de la connexion), ainsi que l'en-tête de requête X-Role (le nom du rôle actuel de l'utilisateur).
Si vous devez déclencher un événement pour des données de relation un-à-un dans cette action (les relations un-à-plusieurs ne sont pas encore prises en charge), vous pouvez utiliser ! dans le paramètre pour spécifier les données de déclenchement du champ d'association :
Après le succès de l'appel ci-dessus, l'événement post-action de la collection categories correspondante sera déclenché.
Si l'événement est configuré en mode global, vous n'avez pas besoin d'utiliser le paramètre d'URL triggerWorkflows pour spécifier le flux de travail correspondant ; un simple appel à l'action de collection correspondante le déclenchera.
Comme illustré ci-dessous :

Les événements post-action et les événements de collection présentent des similitudes en ce sens qu'ils sont tous deux des processus déclenchés après des modifications de données. Cependant, leurs niveaux d'implémentation diffèrent : les événements post-action se situent au niveau de l'API, tandis que les événements de collection concernent les modifications de données au sein de la collection.
Les événements de collection sont plus proches de la couche sous-jacente du système. Dans certains cas, une modification de données causée par un événement peut en déclencher un autre, créant ainsi une réaction en chaîne. En particulier, lorsque des données dans certaines collections associées changent également lors de l'opération sur la collection actuelle, les événements liés à la collection associée peuvent également être déclenchés.
Le déclenchement des événements de collection n'inclut pas d'informations relatives à l'utilisateur. En revanche, les événements post-action sont plus proches de l'utilisateur final, sont le résultat des actions de l'utilisateur, et le contexte du flux de travail inclura également des informations relatives à l'utilisateur, ce qui les rend adaptés au traitement des processus liés aux actions de l'utilisateur. Dans la conception future de NocoBase, davantage d'événements post-action pouvant être utilisés pour le déclenchement pourraient être étendus, il est donc plus recommandé d'utiliser les événements post-action pour gérer les processus où les modifications de données sont causées par les actions de l'utilisateur.
Une autre différence est que les événements post-action peuvent être liés localement à des boutons de formulaire spécifiques. S'il existe plusieurs formulaires, la soumission de certains formulaires peut déclencher l'événement, tandis que d'autres ne le déclenchent pas. Les événements de collection, en revanche, concernent les modifications de données dans l'ensemble de la collection et ne peuvent pas être liés localement.