Dit document is vertaald door AI. Raadpleeg de Engelse versie voor nauwkeurige informatie.
NocoBase heeft ingebouwde algemene gegevensacties (toevoegen, verwijderen, bewerken, bekijken, enz.). Wanneer deze acties niet voldoen aan complexe zakelijke behoeften, kunt u de aangepaste actie-gebeurtenis in een workflow gebruiken en deze gebeurtenis koppelen aan de knop "Workflow activeren" in een paginablok. Wanneer een gebruiker hierop klikt, wordt een aangepaste actie-workflow geactiveerd.
Selecteer bij het aanmaken van een workflow "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.
v1.6.0+
In het actiepaneel en andere gegevensblokken 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 het actiepaneel:


In elk gegevensblok kan een "Workflow activeren"-knop worden toegevoegd aan de actiebalk voor een enkele record, zoals in formulieren, tabelrijen, details, 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:

v1.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 zonder 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 gegevens (momenteel alleen ondersteund door tabellen). De beschikbare workflows zijn beperkt tot de workflows die zijn geconfigureerd om overeen te komen met de collectie van het huidige gegevensblok:

Wanneer u op de knop klikt om de workflow te activeren, moeten er eerst enkele gegevensrijen 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.
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).
Workflows zonder context moeten worden geactiveerd op de workflows-resource:
Een workflow die door een knop wordt geactiveerd, zoals in het voorbeeld, 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 u een aanroep doet voor een formulier (zoals toevoegen of bijwerken), hoeft u voor een formulier voor nieuwe gegevens geen ID door te geven, maar moet u de ingediende gegevens doorgeven als contextgegevens voor de uitvoering:
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.
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.
Vergelijkbaar met de aanroepmethode voor een enkele record, maar de doorgegeven gegevens hebben alleen meerdere primaire-sleutelparameters (filterByTk[]) nodig en er hoeft geen data-gedeelte te worden doorgegeven:
Deze aanroep activeert de aangepaste actie-gebeurtenis in de modus voor meerdere records en gebruikt de gegevens met ID 1 en 2 als gegevens in de triggercontext.