Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen
NocoBase har inbyggda vanliga dataåtgärder (lägg till, ta bort, uppdatera, visa, etc.). När dessa åtgärder inte räcker till för komplexa affärsbehov kan ni använda anpassade åtgärdshändelser i ett arbetsflöde. Genom att koppla denna händelse till en "Utlös arbetsflöde"-knapp i ett sidblock, kommer ett arbetsflöde för anpassade åtgärder att utlösas när en användare klickar på den.
När ni skapar ett arbetsflöde, välj "Anpassad åtgärdshändelse":

v.1.6.0+
Kontexttypen avgör vilka blockknappar arbetsflödet kan kopplas till:

När kontexttypen är Enkel post eller Flera poster, behöver ni välja den samling som datamodellen ska kopplas till:

Om ni behöver använda relationsdata från den utlösande dataraden i arbetsflödet, kan ni välja djupa relationsfält här:

Dessa fält kommer automatiskt att förladdas till arbetsflödets kontext efter att händelsen utlöses, så att de kan användas i arbetsflödet.
Konfigurationen av åtgärdsknappar i olika block varierar beroende på vilken kontexttyp som är inställd i arbetsflödet.
v.1.6.0+
I åtgärdsfältet och andra datablock kan ni lägga till en "Utlös arbetsflöde"-knapp:



Efter att ni har lagt till knappen, koppla det tidigare skapade arbetsflödet utan kontext. Här är ett exempel med en knapp i åtgärdsfältet:


I vilket datablock som helst kan en "Utlös arbetsflöde"-knapp läggas till i åtgärdsfältet för en enskild post, till exempel i formulär, tabellrader, detaljvyer, etc.:



Efter att ni har lagt till knappen, koppla det tidigare skapade arbetsflödet:


Därefter kommer ett klick på denna knapp att utlösa den anpassade åtgärdshändelsen:

v.1.6.0+
I åtgärdsfältet för ett tabellblock, när ni lägger till en "Utlös arbetsflöde"-knapp, finns det ett extra alternativ för att välja kontexttyp: "Ingen kontext" eller "Flera poster":

När "Ingen kontext" väljs, är det en global händelse och kan endast kopplas till arbetsflöden av typen ingen kontext.
När "Flera poster" väljs, kan ni koppla ett arbetsflöde för flera poster, vilket kan användas för massåtgärder efter att ha valt flera poster (stöds för närvarande endast av tabeller). De tillgängliga arbetsflödena är då begränsade till de som är konfigurerade för att matcha samlingen i det aktuella datablocket:

När ni klickar på knappen för att utlösa, måste några datarader i tabellen vara markerade; annars kommer arbetsflödet inte att utlösas:

Anta till exempel att vi har en "Prover"-samling. För prover med statusen "Insamlade" behöver vi tillhandahålla en "Skicka för inspektion"-åtgärd. Denna åtgärd kommer först att kontrollera provets grundläggande information, sedan generera en "Inspektionspost" och slutligen ändra provets status till "Insänd". Denna serie av processer kan inte slutföras med enkla "lägg till, ta bort, uppdatera, visa"-knapptryckningar, så en anpassad åtgärdshändelse kan användas för att implementera det.
Skapa först en "Prover"-samling och en "Inspektionsposter"-samling, och mata in grundläggande testdata i Prover-samlingen:

Skapa sedan ett arbetsflöde för "Anpassad åtgärdshändelse". Om ni behöver snabb återkoppling från åtgärdsprocessen kan ni välja synkront läge (i synkront läge kan ni inte använda asynkrona noder som manuell hantering):

I utlösarkonfigurationen, välj "Prover" för samlingen:

Ordna logiken i processen enligt affärsbehoven. Till exempel, tillåt endast insändning för inspektion när indikatorparametern är större än 90; annars, visa ett relevant meddelande:

Noden "Svarsmeddelande" kan användas i synkrona anpassade åtgärdshändelser för att returnera ett meddelande till klienten. Den kan inte användas i asynkront läge.
Efter att ni har konfigurerat och aktiverat arbetsflödet, återgå till tabellgränssnittet och lägg till en "Utlös arbetsflöde"-knapp i tabellens åtgärdskolumn:

Välj sedan att koppla ett arbetsflöde i knappens konfigurationsmeny och öppna konfigurationsfönstret:

Lägg till det tidigare aktiverade arbetsflödet:

Efter att ni har skickat in, ändra knapptexten till åtgärdens namn, till exempel "Skicka för inspektion". Konfigurationsprocessen är nu klar.
För att använda det, välj valfri provdata i tabellen och klicka på knappen "Skicka för inspektion" för att utlösa den anpassade åtgärdshändelsen. Enligt den tidigare arrangerade logiken, om provets indikatorparameter är mindre än 90, kommer följande meddelande att visas efter klicket:

Om indikatorparametern är större än 90, kommer processen att utföras normalt, generera en "Inspektionspost" och ändra provets status till "Insänd":

Härmed är en enkel anpassad åtgärdshändelse klar. På samma sätt kan anpassade åtgärdshändelser användas för att implementera komplexa affärsoperationer som orderhantering eller rapportinlämning.
Utlösningen av anpassade åtgärdshändelser är inte begränsad till åtgärder i användargränssnittet; de kan också utlösas via HTTP API-anrop. Specifikt tillhandahåller anpassade åtgärdshändelser en ny åtgärdstyp för alla samlingsåtgärder för att utlösa arbetsflöden: trigger, som kan anropas med NocoBase standard API för åtgärder.
Ett arbetsflöde som utlöses av en knapp, som i exemplet, kan anropas så här:
Eftersom denna åtgärd är för en enskild post, måste ni, när ni anropar den för befintlig data, ange ID för dataraden och ersätta <:id>-delen i URL:en.
Om det anropas för ett formulär (till exempel för att skapa eller uppdatera), kan ni utelämna ID:t för ett formulär som skapar ny data, men ni måste skicka med den inskickade datan som exekveringskontext:
För ett uppdateringsformulär behöver ni skicka med både ID för dataraden och den uppdaterade datan:
Om både ett ID och data skickas med, kommer dataraden som motsvarar ID:t att laddas först, och sedan kommer egenskaperna från det medskickade dataobjektet att användas för att skriva över den ursprungliga dataraden för att få den slutliga utlösande datakontexten.
Om relationsdata skickas med, kommer även dessa att skrivas över. Var särskilt försiktig när ni hanterar inkommande data om förladdning av relationsdataobjekt är konfigurerat, för att undvika oväntade överskrivningar av relationsdata.
Dessutom är URL-parametern triggerWorkflows arbetsflödets nyckel; flera arbetsflödesnycklar separeras med kommatecken. Denna nyckel kan erhållas genom att hålla muspekaren över arbetsflödets namn högst upp på arbetsflödesduken:

Efter ett lyckat anrop kommer den anpassade åtgärdshändelsen för den motsvarande samples-samlingen att utlösas.
Eftersom externa anrop också måste baseras på användaridentitet, behöver ni, när ni anropar via HTTP API, precis som med förfrågningar som skickas från det vanliga gränssnittet, tillhandahålla autentiseringsinformation. Detta inkluderar Authorization-förfrågningshuvudet eller token-parametern (token som erhållits vid inloggning), samt X-Role-förfrågningshuvudet (användarens nuvarande rollnamn).
Om ni behöver utlösa en händelse för en en-till-en-relationsdata (en-till-många stöds för närvarande inte) i denna åtgärd, kan ni använda ! i parametern för att specificera relationsfältets utlösande data:
Efter ett lyckat anrop kommer den anpassade åtgärdshändelsen för den motsvarande categories-samlingen att utlösas.
När ni utlöser en åtgärdshändelse via ett HTTP API-anrop, behöver ni också vara uppmärksam på arbetsflödets aktiveringsstatus och om samlingskonfigurationen matchar; annars kan anropet misslyckas eller resultera i ett fel.