logologo
Start
Manual
Utveckling
Plugins
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Start
Manual
Utveckling
Plugins
API
logologo
Arbetsflöden
Översikt
Snabbstart

Triggers

Översikt
Datatabellhändelser
Schemalagda jobb
Före-åtgärd-händelser
Efter-åtgärd-händelser
Anpassade åtgärdshändelser
Godkännande
Webhooks

Noder

Översikt

AI

LLM

Flödeskontroll

Villkor
Fler-villkors-gren
Loop
Variabler
Parallell gren
Anropa arbetsflöde
Flödes-output
JSON-variabelmappning
Fördröjning
Avsluta

Beräkning

Beräkning
Datumberäkning
JSON-beräkning

Dataåtgärder

Lägg till data
Uppdatera data
Fråga data
Ta bort data
SQL-åtgärder

Manuell hantering

Manuell hantering
Godkännande
CC

Utökade typer

HTTP-förfrågningar
JavaScript-skript
Notiser
Skicka e-post
Svar
Svarsmeddelande
Variabler
Exekveringshistorik
Versionshantering
Avancerade alternativ

Utökningsutveckling

Översikt
Utöka trigger-typer
Utöka nodtyper
API-referens
Previous PageEfter-åtgärd-händelser
Next PageGodkännande
TIP

Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen

#Anpassad åtgärdshändelse

This feature is provided by the commercial plugin «Arbetsflöde: Anpassad åtgärdshändelse», please purchase to use

#Introduktion

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.

#Skapa ett arbetsflöde

När ni skapar ett arbetsflöde, välj "Anpassad åtgärdshändelse":

Skapa arbetsflöde för "Anpassad åtgärdshändelse"

#Utlösarkonfiguration

#Kontexttyp

v.1.6.0+

Kontexttypen avgör vilka blockknappar arbetsflödet kan kopplas till:

  • Ingen kontext: En global händelse som kan kopplas till åtgärdsknappar i åtgärdsfältet och datablock.
  • Enkel post: Kan kopplas till åtgärdsknappar i datablock som tabellrader, formulär och detaljvyer.
  • Flera poster: Kan kopplas till massåtgärdsknappar i en tabell.

Utlösarkonfiguration_Kontexttyp

#Samling

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

Utlösarkonfiguration_Välj samling

#Relationsdata att använda

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:

Utlösarkonfiguration_Välj relationsdata att använda

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.

#Åtgärdskonfiguration

Konfigurationen av åtgärdsknappar i olika block varierar beroende på vilken kontexttyp som är inställd i arbetsflödet.

#Ingen kontext

v.1.6.0+

I åtgärdsfältet och andra datablock kan ni lägga till en "Utlös arbetsflöde"-knapp:

Lägg till åtgärdsknapp i block_Åtgärdsfält

Lägg till åtgärdsknapp i block_Kalender

Lägg till åtgärdsknapp i block_Gantt-schema

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:

Koppla arbetsflöde till knapp_Åtgärdsfält

Välj arbetsflöde att koppla_Ingen kontext

#Enkel post

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.:

Lägg till åtgärdsknapp i block_Formulär

Lägg till åtgärdsknapp i block_Tabellrad

Lägg till åtgärdsknapp i block_Detaljer

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

Koppla arbetsflöde till knapp

Välj arbetsflöde att koppla

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

Resultat av att klicka på knappen

#Flera poster

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":

Lägg till åtgärdsknapp i block_Tabell

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:

Välj arbetsflöde för flera poster

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:

Inga rader markerade för utlösning

#Exempel

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:

Exempel_Prover-samling

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):

Exempel_Skapa arbetsflöde

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

Exempel_Utlösarkonfiguration

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:

Exempel_Affärslogikarrangemang

Tips

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:

Exempel_Lägg till åtgärdsknapp

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

Exempel_Öppna koppla arbetsflöde-fönster

Lägg till det tidigare aktiverade arbetsflödet:

Exempel_Välj arbetsflöde

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:

Exempel_Indikator uppfyller inte insändningskriterier

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

Exempel_Insändning lyckades

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.

#Externt anrop

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:

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' \
  "http://localhost:3000/api/samples:trigger/<:id>?triggerWorkflows=workflowKey"

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:

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' -d \
  '{
    "title": "Sample 1",
    "indicator": 91
  }'
  "http://localhost:3000/api/samples:trigger?triggerWorkflows=workflowKey"

För ett uppdateringsformulär behöver ni skicka med både ID för dataraden och den uppdaterade datan:

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' -d \
  '{
    "title": "Sample 1",
    "indicator": 91
  }'
  "http://localhost:3000/api/samples:trigger/<:id>?triggerWorkflows=workflowKey"

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.

Obs

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:

Arbetsflöde_Nyckel_Visningsmetod

Efter ett lyckat anrop kommer den anpassade åtgärdshändelsen för den motsvarande samples-samlingen att utlösas.

Tips

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:

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' \
  "http://localhost:3000/api/posts:trigger/<:id>?triggerWorkflows=workflowKey!category"

Efter ett lyckat anrop kommer den anpassade åtgärdshändelsen för den motsvarande categories-samlingen att utlösas.

Tips

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.