Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie
Alle gegevenswijzigingen die gebruikers in het systeem aanbrengen, gebeuren meestal via een actie. Dit is vaak in de vorm van het klikken op een knop, zoals een verzendknop in een formulier of een actieknop in een datablok. De gebeurtenis na actie wordt gebruikt om gerelateerde workflows te koppelen aan de acties van deze knoppen, zodat een specifiek proces wordt geactiveerd nadat de gebruikersactie succesvol is voltooid.
Wanneer u bijvoorbeeld gegevens toevoegt of bijwerkt, kunt u de optie 'Koppel workflow' voor een knop configureren. Nadat de actie is voltooid, wordt de gekoppelde workflow geactiveerd.
Op implementatieniveau, aangezien de verwerking van gebeurtenissen na actie zich in de middleware-laag bevindt (Koa's middleware), kunnen HTTP API-aanroepen naar NocoBase ook gedefinieerde gebeurtenissen na actie activeren.
Dit is een ingebouwde plugin, dus installatie is niet nodig.
Wanneer u een workflow aanmaakt, kiest u 'Gebeurtenis na actie' als type:

Voor gebeurtenissen na actie kunt u bij het aanmaken ook de uitvoeringsmodus 'Synchroon' of 'Asynchroon' kiezen:

Als het proces direct na de gebruikersactie moet worden uitgevoerd en een resultaat moet teruggeven, kunt u de synchrone modus gebruiken; anders is de standaardinstelling de asynchrone modus. In de asynchrone modus is de actie direct voltooid nadat de workflow is geactiveerd, en wordt de workflow sequentieel uitgevoerd in de achtergrondwachtrij van de applicatie.
Ga naar het workflow-canvas, klik op de trigger om het configuratievenster te openen en selecteer eerst de collectie die u wilt koppelen:

Selecteer vervolgens de triggermodus; er zijn twee opties: lokale modus en globale modus:

Hierbij geldt:
In de lokale modus worden momenteel de volgende actieknoppen ondersteund voor koppeling:
Als u de globale modus hebt gekozen, moet u ook het actietype selecteren. Momenteel worden 'Gegevens aanmaken' en 'Gegevens bijwerken' ondersteund. Beide acties activeren de workflow nadat de actie succesvol is voltooid.
Als u de gekoppelde gegevens van de triggerende data in latere processen wilt gebruiken, kunt u de relatievelden selecteren die vooraf moeten worden geladen:

Na activering kunt u deze gekoppelde gegevens direct in het proces gebruiken.
Voor acties in de lokale triggermodus, nadat de workflow is geconfigureerd, moet u terugkeren naar de gebruikersinterface en de workflow koppelen aan de formulieractieknop van het corresponderende datablok.
Workflows die zijn geconfigureerd voor de knop 'Verzenden' (inclusief de knop 'Gegevens opslaan') worden geactiveerd nadat de gebruiker het corresponderende formulier heeft ingediend en de gegevensactie is voltooid.

Selecteer 'Koppel workflow' in het configuratiemenu van de knop om het configuratievenster voor koppeling te openen. In dit venster kunt u een willekeurig aantal workflows configureren die moeten worden geactiveerd. Als u er geen configureert, betekent dit dat er geen activering nodig is. Voor elke workflow moet u eerst bepalen of de triggerende gegevens de gegevens van het hele formulier zijn of de gegevens van een specifiek relatieveld in het formulier. Vervolgens selecteert u, op basis van de collectie die overeenkomt met het geselecteerde datamodel, de formulier-workflow die is geconfigureerd om overeen te komen met dat collectiemodel.


De workflow moet zijn ingeschakeld voordat deze in de bovenstaande interface kan worden geselecteerd.
Hier volgt een demonstratie met behulp van de aanmaakactie.
Stel u een scenario voor van een 'Declaratieaanvraag'. We moeten, nadat een medewerker een declaratie heeft ingediend, een automatische controle van het bedrag uitvoeren en een handmatige controle voor bedragen die de limiet overschrijden. Alleen aanvragen die de controle doorstaan, worden goedgekeurd en daarna overgedragen aan de financiële afdeling voor verdere verwerking.
Eerst kunnen we een 'collectie' genaamd 'Declaratie' aanmaken met de volgende velden:
Maak vervolgens een workflow van het type 'Gebeurtenis na actie' aan en configureer het collectiemodel in de trigger als de 'collectie' 'Declaratie':

Nadat u de workflow hebt ingeschakeld, zullen we later terugkomen om de specifieke verwerkingsstappen van het proces te configureren.
Vervolgens maken we op de interface een tabelblok voor de 'collectie' 'Declaratie', voegen we een 'Toevoegen'-knop toe aan de werkbalk en configureren we de corresponderende formuliervelden. In de configuratie-opties van de 'Verzenden'-actieknop van het formulier opent u het configuratiedialoogvenster 'Koppel workflow', selecteert u de volledige formuliergegevens als context, en kiest u de workflow die we eerder hebben aangemaakt:

Nadat de formulierconfiguratie is voltooid, keren we terug naar de logische opzet van de workflow. We willen bijvoorbeeld dat een handmatige controle door een beheerder vereist is wanneer het bedrag hoger is dan €500; anders wordt het direct goedgekeurd. Pas na goedkeuring wordt een declaratierecord aangemaakt en verder verwerkt door de financiële afdeling (weggelaten).

Als we de verdere financiële verwerking buiten beschouwing laten, is hiermee de configuratie van het declaratieaanvraagproces voltooid. Wanneer een medewerker een declaratieaanvraag invult en indient, wordt de corresponderende workflow geactiveerd. Als het declaratiebedrag minder dan €500 is, wordt automatisch een record aangemaakt en wacht het op verdere verwerking door de financiële afdeling. Anders wordt het beoordeeld door een leidinggevende, en na goedkeuring wordt eveneens een record aangemaakt en overgedragen aan de financiële afdeling.
Het proces in dit voorbeeld kan ook worden geconfigureerd op een reguliere 'Verzenden'-knop. U kunt, afhankelijk van het specifieke bedrijfsscenario, beslissen of u eerst een record wilt aanmaken voordat u de verdere processen uitvoert.
Het activeren van gebeurtenissen na actie is niet beperkt tot gebruikersinterface-operaties; het kan ook worden geactiveerd via HTTP API-aanroepen.
Wanneer u een gebeurtenis na actie activeert via een HTTP API-aanroep, moet u ook letten op de ingeschakelde status van de workflow en of de collectieconfiguratie overeenkomt, anders kan de aanroep mislukken of een fout veroorzaken.
Voor workflows die lokaal zijn gekoppeld aan een actieknop, kunt u deze als volgt aanroepen (met de aanmaakknop van de posts-collectie als voorbeeld):
Hierbij is de URL-parameter triggerWorkflows de sleutel van de workflow, waarbij meerdere workflows worden gescheiden door komma's. Deze sleutel kunt u verkrijgen door met de muis over de workflownaam bovenaan het workflow-canvas te zweven:

Nadat de bovenstaande aanroep succesvol is, wordt de gebeurtenis na actie van de corresponderende posts-collectie geactiveerd.
Aangezien externe aanroepen ook gebaseerd moeten zijn op gebruikersidentiteit, moet bij het aanroepen via HTTP API, net als bij verzoeken die vanuit de normale interface worden verzonden, authenticatie-informatie worden verstrekt. Dit omvat de Authorization-requestheader of de token-parameter (de token verkregen bij het inloggen), en de X-Role-requestheader (de huidige rolnaam van de gebruiker).
Als u een gebeurtenis wilt activeren voor een één-op-één relatiegegeven in deze actie (één-op-veel wordt momenteel niet ondersteund), kunt u ! in de parameter gebruiken om de triggerende gegevens van het relatieveld te specificeren:
Nadat de bovenstaande aanroep succesvol is, wordt de gebeurtenis na actie van de corresponderende categories-collectie geactiveerd.
Als de gebeurtenis is geconfigureerd in de globale modus, hoeft u de URL-parameter triggerWorkflows niet te gebruiken om de corresponderende workflow te specificeren. Een directe aanroep van de corresponderende collectie-actie zal deze activeren.
Zoals weergegeven in de onderstaande afbeelding:

Gebeurtenissen na actie en collectie-gebeurtenissen vertonen overeenkomsten; beide zijn processen die worden geactiveerd na gegevenswijzigingen. Hun implementatieniveaus verschillen echter: gebeurtenissen na actie zijn gericht op het API-niveau, terwijl collectie-gebeurtenissen gericht zijn op gegevenswijzigingen binnen de collectie.
Collectie-gebeurtenissen liggen dichter bij de onderliggende laag van het systeem. In sommige gevallen kan een gegevenswijziging veroorzaakt door de ene gebeurtenis een andere gebeurtenis activeren, wat een kettingreactie teweegbrengt. Vooral wanneer gegevens in sommige gekoppelde collecties ook veranderen tijdens de bewerking van de huidige collectie, kunnen gebeurtenissen met betrekking tot de gekoppelde collectie ook worden geactiveerd.
De activering van collectie-gebeurtenissen bevat geen gebruikersgerelateerde informatie. Gebeurtenissen na actie daarentegen staan dichter bij de gebruiker en zijn het resultaat van gebruikersacties. De context van de workflow zal ook gebruikersgerelateerde informatie bevatten, waardoor ze geschikt zijn voor het verwerken van processen die voortvloeien uit gebruikersacties. In het toekomstige ontwerp van NocoBase zullen mogelijk meer gebeurtenissen na actie worden uitgebreid die kunnen worden gebruikt voor activering, daarom wordt het sterker aanbevolen om gebeurtenissen na actie te gebruiken voor het verwerken van processen waarbij gegevenswijzigingen worden veroorzaakt door gebruikersacties.
Een ander verschil is dat gebeurtenissen na actie lokaal kunnen worden gekoppeld aan specifieke formulierknoppen. Als er meerdere formulieren zijn, kunnen de inzendingen van een deel van de formulieren deze gebeurtenis activeren, terwijl andere dit niet doen. Collectie-gebeurtenissen daarentegen zijn gericht op gegevenswijzigingen in de gehele collectie en kunnen niet lokaal worden gekoppeld.