Detta dokument har översatts av AI. För korrekt information, se den engelska versionen.
NocoBase har inbyggda vanliga dataåtgärder (skapa, läsa, uppdatera, radera etc.). När dessa åtgärder inte kan uppfylla komplexa affärsbehov kan ni använda anpassade åtgärdshändelser i ett arbetsflöde och binda händelsen till en "Utlös arbetsflöde"-knapp i ett sidblock. När en användare klickar på den kommer ett arbetsflöde för anpassade åtgärder att utlösas.
När ni skapar ett arbetsflöde, välj "Anpassad åtgärdshändelse":

v1.6.0+
Olika kontexttyper 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.
v1.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:

v1.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 "skapa, läsa, uppdatera, radera"-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.
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).
Arbetsflöden utan kontext behöver utlösas mot resursen workflows:
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.
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.
Liknande anropet för enskild post, men den medskickade datan behöver endast innehålla flera primärnyckelparametrar (filterByTk[]), och ingen datadel krävs:
Detta anrop kommer att utlösa en anpassad åtgärdshändelse i läget för flera poster, och använda datan med ID 1 och 2 som utlösarkontext.