Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie
NocoBase bevat ingebouwde standaard data-acties (toevoegen, verwijderen, bijwerken, bekijken, enz.). Wanneer deze acties niet volstaan voor complexe bedrijfsprocessen, kunt u aangepaste actie-gebeurtenissen gebruiken in een workflow. Door zo'n gebeurtenis te koppelen aan een "Workflow activeren"-knop in een pagina-blok, wordt een aangepaste actie-workflow geactiveerd wanneer een gebruiker erop klikt.
Wanneer u een workflow aanmaakt, kiest u "Aangepaste Actie-gebeurtenis":

v.1.6.0+
Het contexttype bepaalt aan welke knoppen in blokken de workflow kan worden gekoppeld:

Wanneer het contexttype "Enkele record" of "Meerdere records" is, moet u de collectie selecteren waaraan het datamodel moet worden gekoppeld:

Als u de gerelateerde data van de triggerende datarij in de workflow wilt gebruiken, kunt u hier diepere gerelateerde velden selecteren:

Deze velden worden automatisch vooraf geladen in de workflowcontext nadat de gebeurtenis is geactiveerd, zodat ze in de workflow kunnen worden gebruikt.
De configuratie van actieknoppen in verschillende blokken verschilt afhankelijk van het contexttype dat in de workflow is ingesteld.
v.1.6.0+
In de actiebalk en andere datablokken kunt u een "Workflow activeren"-knop toevoegen:



Nadat u de knop heeft toegevoegd, koppelt u de eerder aangemaakte workflow zonder context. Hier is een voorbeeld met een knop in de actiebalk:


In elk datablok kan een "Workflow activeren"-knop worden toegevoegd aan de actiebalk voor een enkele record, zoals in formulieren, tabelrijen, detailweergaven, enz.:



Nadat u de knop heeft toegevoegd, koppelt u de eerder aangemaakte workflow:


Daarna activeert u de aangepaste actie-gebeurtenis door op deze knop te klikken:

v.1.6.0+
In de actiebalk van een tabelblok is er bij het toevoegen van een "Workflow activeren"-knop een extra optie om het contexttype te selecteren: "Geen context" of "Meerdere records":

Wanneer "Geen context" is geselecteerd, is dit een globale gebeurtenis en kan deze alleen worden gekoppeld aan workflows van het type "Geen context".
Wanneer "Meerdere records" is geselecteerd, kunt u een workflow van het type "Meerdere records" koppelen, die kan worden gebruikt voor bulkacties na het selecteren van meerdere records (momenteel alleen ondersteund door tabellen). De beschikbare workflows zijn dan beperkt tot de workflows die zijn geconfigureerd om overeen te komen met de collectie van het huidige datablok:

Wanneer u op de knop klikt om de workflow te activeren, moeten er eerst enkele datarijen in de tabel zijn aangevinkt; anders wordt de workflow niet geactiveerd:

Stel, we hebben een "Monsters"-collectie. Voor monsters met de status "Verzameld" moeten we een "Ter inspectie aanbieden"-actie aanbieden. Deze actie controleert eerst de basisinformatie van het monster, genereert vervolgens een "Inspectierecord" en wijzigt tot slot de status van het monster naar "Ter inspectie aangeboden". Deze reeks processen kan niet worden voltooid met eenvoudige "toevoegen, verwijderen, bijwerken, bekijken"-knopklikken, dus kan een aangepaste actie-gebeurtenis worden gebruikt om dit te realiseren.
Maak eerst een "Monsters"-collectie en een "Inspectierecords"-collectie aan, en voer enkele basis testdata in de "Monsters"-collectie in:

Maak vervolgens een "Aangepaste Actie-gebeurtenis" workflow aan. Als u snelle feedback van het proces nodig heeft, kunt u de synchrone modus kiezen (in synchrone modus kunt u geen asynchrone knooppunten zoals handmatige verwerking gebruiken):

In de triggerconfiguratie selecteert u "Monsters" voor de collectie:

Stel de logica in het proces samen volgens de bedrijfsvereisten. Sta bijvoorbeeld alleen indiening voor inspectie toe wanneer de indicatorparameter groter is dan 90; toon anders een relevante melding:

Het "Antwoordbericht" knooppunt kan worden gebruikt in synchrone aangepaste actie-gebeurtenissen om een melding aan de client te retourneren. Het kan niet worden gebruikt in asynchrone modus.
Nadat u de workflow heeft geconfigureerd en geactiveerd, keert u terug naar de tabelinterface en voegt u een "Workflow activeren"-knop toe in de actiekolom van de tabel:

Kies vervolgens in het configuratiemenu van de knop om een workflow te koppelen en open het configuratievenster:

Voeg de eerder geactiveerde workflow toe:

Na het indienen wijzigt u de knoptekst naar de naam van de actie, bijvoorbeeld "Ter inspectie aanbieden". De configuratie is nu voltooid.
Om het te gebruiken, selecteert u een willekeurige monsterdata in de tabel en klikt u op de knop "Ter inspectie aanbieden" om de aangepaste actie-gebeurtenis te activeren. Zoals eerder in de logica is ingesteld, wordt de volgende melding weergegeven als de indicatorparameter van het monster kleiner is dan 90:

Als de indicatorparameter groter is dan 90, wordt het proces normaal uitgevoerd, wordt een "Inspectierecord" gegenereerd en wordt de status van het monster gewijzigd naar "Ter inspectie aangeboden":

Hiermee is een eenvoudige aangepaste actie-gebeurtenis voltooid. Op vergelijkbare wijze kunnen complexe bedrijfsprocessen, zoals orderverwerking of het indienen van rapporten, worden geïmplementeerd met behulp van aangepaste actie-gebeurtenissen.
Het activeren van aangepaste actie-gebeurtenissen is niet beperkt tot gebruikersinterface-acties; het kan ook worden geactiveerd via HTTP API-aanroepen. Specifiek bieden aangepaste actie-gebeurtenissen een nieuw actietype voor alle collectie-acties om workflows te activeren: trigger, dat kan worden aangeroepen met de standaard actie-API van NocoBase.
Een workflow die, zoals in het voorbeeld, door een knop wordt geactiveerd, kan als volgt worden aangeroepen:
Aangezien deze actie betrekking heeft op een enkele record, moet u bij het aanroepen van bestaande data de ID van de datarij opgeven en het <:id>-gedeelte in de URL vervangen.
Als het wordt aangeroepen voor een formulier (bijvoorbeeld voor het aanmaken of bijwerken), kunt u de ID weglaten voor een formulier dat nieuwe data aanmaakt, maar u moet wel de ingediende data doorgeven als de uitvoeringscontext:
Voor een updateformulier moet u zowel de ID van de datarij als de bijgewerkte data doorgeven:
Als zowel een ID als data worden doorgegeven, wordt eerst de datarij geladen die overeenkomt met de ID, en vervolgens worden de eigenschappen uit het doorgegeven data-object gebruikt om de oorspronkelijke datarij te overschrijven, om zo de uiteindelijke triggerdata-context te verkrijgen.
Als gerelateerde data wordt doorgegeven, zal deze ook worden overschreven. Wees extra voorzichtig bij het verwerken van inkomende data als het vooraf laden van gerelateerde data-items is geconfigureerd, om onverwachte overschrijvingen van gerelateerde data te voorkomen.
Bovendien is de URL-parameter triggerWorkflows de sleutel van de workflow; meerdere workflows worden gescheiden door komma's. Deze sleutel kunt u verkrijgen door met de muis over de workflownaam bovenaan het workflowcanvas te bewegen:

Na een succesvolle aanroep wordt de aangepaste actie-gebeurtenis voor de corresponderende samples-collectie geactiveerd.
Aangezien externe aanroepen ook gebaseerd moeten zijn op de gebruikersidentiteit, moet u bij het aanroepen via HTTP API, net als bij verzoeken die vanuit de reguliere interface worden verzonden, authenticatie-informatie verstrekken. Dit omvat de Authorization-requestheader of 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 gerelateerde data (één-op-veel wordt momenteel niet ondersteund) binnen deze actie, kunt u ! in de parameter gebruiken om de triggerdata van het gerelateerde veld te specificeren:
Na een succesvolle aanroep wordt de aangepaste actie-gebeurtenis voor de corresponderende categories-collectie geactiveerd.
Wanneer u een actie-gebeurtenis activeert via een HTTP API-aanroep, moet u ook letten op de geactiveerde status van de workflow en of de collectieconfiguratie overeenkomt; anders kan de aanroep mislukken of een fout veroorzaken.