Lad et workflow reagere på ændringer i et emne

Et workflow er en regel: når dette sker, gør dette. Denne artikel viser, hvordan du lytter efter ændringer på en bestemt emnetype og et bestemt felt, og hvordan handlingen bagefter kan fortælle præcis hvad der skete — hvilket emne det var, hvad feltet sagde før, og hvad det siger nu — i en e-mail, en webhook-URL eller hvor du ellers skriver tekst.


Et workflow er en regel: når dette sker, gør dette. Det “når” er en hændelse, det “gør” er én eller flere handlinger. Denne artikel handler om den mest almindelige regel af dem alle — noget blev ændret på et emne, så send en besked, kald et andet system eller start en integration — og om hvordan handlingen får at vide hvad der blev ændret.

Hændelsen: der skete noget med et emne

Når du tilføjer en hændelse til et workflow, vælger du først hvad der skal lyttes efter:

  • Emne oprettet — et emne blev oprettet.
  • Emne opdateret — emnet fandtes i forvejen, og noget ved det blev ændret.
  • Emne gemt — én af de to. Vælg denne, når det er ligegyldigt hvilken.
  • Emne slettet — et emne blev slettet.

Derefter afgrænser du den:

  1. Emnetype — hvilken slags emne: produkter, ordrer, kunder. Lad feltet stå tomt for at lytte på alle typer.
  2. Kun når dette felt er ændret — valgfrit. Reglen udløses så kun, når netop det felt er en del af det der blev gemt. Det er dét, du vil have til “når status ændres”, “når prisen ændres” eller “når trackingkoden bliver udfyldt”.
  3. Sammenligning og værdi — valgfrit. Når du har valgt et felt, spørger sammenligningen til feltets nye værdi: lig med Klar, indeholder RMA, større end 100. Lader du sammenligningen stå på “ingen filtrering”, betyder reglen ganske enkelt “hver gang dette felt ændres”.

Kortet i workfloweditoren viser præcis hvad reglen lytter efter, så du kan læse den uden at åbne den:

Emne gemt
Produkter · Status · Lig med “Klar”

Én gemning er én hændelse

Skriver en import fyrre felter på et emne, er det én hændelse, der beskriver fyrre ændringer — ikke fyrre hændelser. Din regel udløses altså heller ikke fyrre gange.

Et felt kan ikke ændre sig på et slettet emne

Et slettet emne har ingen ændrede værdier, så et feltfilter på Emne slettet vil aldrig kunne udløses. Kortet skriver det, hvis du gør det alligevel.

Handlingen: sig hvad der skete

Alle steder hvor en handling lader dig skrive tekst — et emne eller en tekst i en e-mail, en webhook-URL — kan du indsætte noget, som hændelsen kender, ved at skrive navnet i krøllede parenteser.

Hvad der skete, og med hvilket emne

  • {event}Created, Updated eller Deleted
  • {entity_id} — emnets id
  • {entity_type} — navnet på emnets type
  • {title} — emnets titel
  • {parent_id} — id på moderemnet, hvis emnet er en variant

Hvad denne gemning ændrede

  • {changed.Status} — hvad gemningen satte feltet Status til
  • {changed.Status.old} — hvad Status sagde før
  • {changed.Status.kind}created, updated eller deleted

Hvad emnet siger nu

  • {value.Status} — hvad feltet Status siger nu, uanset om denne gemning rørte det

Brug feltets navn præcis som du ser det i formularen, eller dets nøgle. Et felt med én værdi pr. sprog, eller med flere værdier, giver dig dem alle adskilt af komma. Et valg giver dig valgets titel, og en relation giver dig titlen på det emne der peges på — ikke det nummer, der ligger bagved.

Et eksempel

En regel på Produkter, kun når Status er ændret, med handlingen Send notifikation:

  • Emne: {event} #{entity_id}: {value.Produktnavn}
  • Tekst: Status gik fra {changed.Status.old} til {changed.Status}. Leverandør: {value.Leverandør}.

sender:

Updated #4711: Mountainbike 27″
Status gik fra Kladde til Klar. Leverandør: Nordic Cycles A/S.

Det samme virker i en webhook-URL:

https://eksempel.dk/hook/{entity_id}?status={changed.Status}

Det der sættes ind i en URL, bliver escapet for dig, så en værdi med mellemrum eller & i ikke ødelægger adressen.

Og i modtagerfeltet på notifikationen, så en regel kan skrive til den adresse, emnet selv indeholder:

{value.Kontakt e-mail}

To ting du kan regne med

  • Et navn, hændelsen ikke kender, bliver stående. Skriver du {changed.Status} i en regel, der udløses af noget andet, står der {changed.Status} i beskeden — det bliver aldrig stiltiende erstattet af ingenting. Ser du krøllede parenteser i en besked du har modtaget, er det navnet, du skal se efter.
  • Kun tekst bliver udfyldt. Dropdowns og afkrydsningsfelter i en handling indeholder et valg, du har truffet fra en liste; der bliver ikke sat noget ind i dem.

Hvor du kan se hvad der skete

Hver hændelse skrives i hændelsesloggen, uanset om et workflow reagerede på den, sammen med det emne den handlede om og de værdier der blev ændret. Det er dér, du skal kigge, når en regel ikke udløste sig: find hændelsen, og du kan se hvad den faktisk sagde.