castomFLOW

Utösare & åtgärder

Vad som startar det, vad det gör, hur det bestämmer

Tre frågor, och varenda arbetsflöde på den här plattformen är ett svar på dem. Den här sidan är vokabulären: sätten en körning kan börja på, det ett steg kan göra, och delarna som formar vägen mellan dem.

Utösare

Fyra sätt en körning börjar

Ett schema

Var tionde minut, varje måndag klockan sju, första arbetsdagen i månaden. Uttryckt i en tidszon du väljer, så att sommartiden blir en händelse i stället för en incident.

En webhook

Din butik, ditt CRM, ditt faktureringssystem, allt som kan göra ett HTTP-anrop. Signaturverifiering är på som standard och nyttolasten sparas med körningen.

En händelse från världen

En konsert tillkännagiven, en match inplanerad, en jordbävning, en översvämning, en luftkvalitetsgräns passerad, ett leverantörsavbrott. Fler än 175 källor, uppdaterade var tionde till tjugoende minut.

En avläsning, eller en människa

Bevaka en endpoint, en brevlåda eller en mapp och starta när något ändras. Eller starta för hand, från konsolen, för ibland är det det ärliga svaret.

En körning per sak. En utlösare som utlöses två gånger för samma underliggande händelse — en webhook som avsändaren försöker igen, en avläsning som ser samma rad igen — startar en körning, inte två. Dedupliceringen nycklas på det som identifierar saken, och du kan själv sätta den nyckeln när avsändarens idé om ett id är sämre än din.

Åtgärder

Steg som gör något

En åtgärd förändrar något utanför körningen: den skriver, skickar, debiterar, bokar, hämtar eller arkiverar. Två typer, och skillnaden är om en modell är inblandad.

Deterministiska åtgärder

Anropa en HTTP-endpoint. Läs och skriv i dina egna system. Formera om en nyttolast. Slå upp något i referensdata. Skicka ett e-postmeddelande, ett SMS, en pushnotis eller ett utskrivet brev. Erbjud en bokningstid. Ta en betalning. Skapa en kort länk. Hämta en bild med dess licens bifogad. Skriv en rad, en fil, en post.

Samma indata, samma utdata. De kostar inget att köra, vilket är anledningen till att det ärliga rådet är att använda dem till allt som inte verkligen behöver omdöme.

AI-åtgärder

Klassificera det här meddelandet. Utkasta det svaret. Sammanfatta en tråd i tre punkter. Extrahera fält ur ett ostrukturerat dokument. Välj mellan alternativ utifrån en regel du skrev i vanlig text. Översätt, med bibehållen ton.

Varje AI-steg deklarerar formen på vad det returnerar, och returvärdet valideras mot den formen innan körningen fortsätter. Om en modell producerar något felformat misslyckas steget rent istället för att förgifta de tolv nästföljande stegen.

Något händer. Sedan händer det rätta härnäst.

Flöde: stegen som bara tänker på körningen

Villkor förgrenar sig på ett värde. Båda vägarna är definierade, alltid — ett villkor utan definierad else-gren är det vanligaste sättet för en automatisering att tyst tappa poster, så det är inte möjligt att lämna en hängande här.

Väntan håller en körning tills ett ögonblick eller en händelse. En väntan är en wake_at skriven på själva körningen, inte en rad som ligger i en kö, vilket är anledningen till att ett arbetsflöde kan hålla tiotusen människor i tre veckor utan att det kostar något eller att någon märker det.

Tysta timmar hindrar utgående meddelanden från att landa klockan tre på natten. En körning som når ett sändningssteg inom det tysta fönstret väntar tills fönstret stänger. Allvarlighetsgrad kan medvetet åsidosätta det, för de larm som ska väcka människor.

Förgreningar skickar en andel av körningarna längs väg A och resten längs väg B, så att du kan jämföra två ämnesrader, två väntan eller två ordningar mot varandra på verklig trafik.

Mål markerar det som arbetsflödet handlade om. När en körning når sitt mål stannar den där, oavsett vad som återstod nedströms — kunden som köpt får inte den tredje påminnelsen om att köpa.

Kundvagn lämnad kvarMål uppnått
  • ⚡UtlösareKundvagn inaktiv i 40 minuter. Deduplicerad på kundvagnens id.
  • ?VillkorKundvagn över 150 zł? Ja — ta den längre vägen.
  • ⏸VäntaEn wake_at på körningen. Ingen körad, ingen kostnad.
  • ADela50/50 på ämnesraden. Den här körningen tog variant A.
  • ✉UtskickE-post med en kort länk, omdirigeringar räknade per mottagare.
  • ★MålOrder lagd. Körningen stannar här; den andra påminnelsen skickas aldrig.

Steg som anropade en modell: 1Steg som kostade inget: 5

Fel är en del av flödet, inte ett undantag från det

Ett steg som misslyckas har någonstans att gå. Försök igen med backoff, och en gräns för hur många gånger. Ta en alternativ väg. Stoppa körningen och arkivera den där en människa ser den. Fortsätt ändå, eftersom just det steget var valfritt och du hellre har det mesta av resultatet än inget av det.

Standarden för ett steg som pratar med någon annans system är att försöka igen några gånger och sedan stanna — eftersom ett system som är nere 09:14 oftast är uppe 09:19, och eftersom en körning som stannat är lättare att resonera om än en körning som halvhänt.

Vad du inte kan göra: ett steg kan inte loopa tillbaka till ett tidigare steg. Ett arbetsflöde är en riktad väg, inte ett program med ett hoppsinstruktion. Om ditt jobb verkligen behöver en loop, iterera över en lista inom ett enda steg, eller starta en körning per post — båda stöds, och båda är lättare att läsa efteråt än en cykel skulle vara.