Betingelser i Shopify Flow
Betingelser fortsætter en arbejdsgang, når bestemte regler er opfyldt, f.eks. starten på en hvis-så-erklæring. Når du angiver en betingelse, vælger du kriterier fra felter i GraphQL Admin API (f.eks. product.title), en logisk operator (f.eks. er lig med) og en værdi, der skal sammenlignes med (f.eks. Blå jeans). Når en arbejdsgang evaluerer en betingelse, tjekker Flow den værdi, der er defineret i arbejdsgangen, mod den værdi, der returneres for din butik, og viser derefter resultaterne i kørslen af arbejdsgangen. For bedre at forstå de felter og værdier, der er tilgængelige til at definere betingelser, kan du lære, hvordan du forhåndsviser butiksdata.
Få mere at vide om det grundlæggende i betingelser.
På denne side
Datatyper, der bruges med Flow
Når du angiver en betingelse, vælger du et kriterium fra de tilgængelige felter i Admin API, og Flow evaluerer det mod den værdi, der returneres for din butik.
Flow understøtter følgende datatyper:
- Float: Float-værdier er tal med decimaler. F.eks. 4,25.
- Integer: Integer-værdier er hele tal uden decimaler. F.eks. 42.
- Dato: Datoværdier er en numerisk repræsentation af datoen. F.eks. 01012021.
- Streng: Strengværdier er tekst. Sammenligninger, der bruger strengværdier, skelner ikke mellem store og små bogstaver.
- Boolesk: Booleske værdier er enten sand eller falsk.
- Enum: Enum-værdier er datasæt, der gør det muligt for en variabel at være et sæt af foruddefinerede konstanter.
Logiske operatorer
Logiske operatorer definerer, hvordan betingelsen anvendes. Betingelser kan tjekke simple egenskaber, f.eks. om en ordres samlede beløb er over et bestemt beløb, eller om en kunde accepterer markedsføring. Logiske operatorer kan også tjekke mere komplekse egenskaber.
Operatorer kan enten være operatorer på feltniveau, f.eks. er lig med eller er ikke lig med, eller listeoperatorer, f.eks. mindst én af eller ingen af.
Operatorer på feltniveau
Operatorer på feltniveau bruges til at sammenligne 2 værdier. Flow kan bruge følgende operatorer:
| Operator | Beskrivelse | Eksempel |
|---|---|---|
| Er lig med | Sammenligner værdier for at tjekke, om de er ens. |
Værdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra dine butiksdata og sammenlignes med den anden værdi, 50.Hvis ordrens samlede rabatter er præcis 50, er betingelsen sand. |
| Er ikke lig med | Sammenligner værdier for at tjekke, om de ikke er ens. |
Værdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra dine butiksdata og sammenlignes med den anden værdi, 50.Hvis ordrens samlede rabatter ikke er præcis 50, er betingelsen sand. |
| Større end og Større end eller lig med | Sammenligner værdier for at tjekke, om den første værdi er større end, eller større end eller lig med, den anden værdi. |
Værdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra dine butiksdata og sammenlignes med den anden værdi, 50.Hvis værdien af ordrens samlede rabatter er 137, er betingelsen sand, da 137 er større end 50. |
| Mindre end og Mindre end eller lig med | Sammenligner værdier for at tjekke, om den første værdi er mindre end, eller mindre end eller lig med, den anden værdi. |
Værdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra dine butiksdata og sammenlignes med den anden værdi, 50.Hvis ordrens samlede rabatter er 47, er betingelsen sand, da 47 er mindre end eller lig med 50. |
| Mindst én af | Tjekker, om feltet er lig med en af værdierne på den angivne liste. Værdierne skal indtastes enkeltvist og efterfølges af et tryk på Enter-tasten (svarende til tags). Anvendes det på et tomt array, resulterer det i en falsk evaluering. |
Værdien for order.lineitem.product.title sammenlignes med: pineapple, guava, kiwi.Hvis produkttitlen for varelinjen er guava, er betingelsen sand, da "guava" er inkluderet på den liste, du har angivet. |
| Ingen af | Tjekker, om feltet ikke er lig med nogen af værdierne på den angivne liste. |
Værdien for order.lineitem.product.title sammenlignes med: pineapple, guava, kiwi.Hvis produkttitlen for varelinjen er raspberry, er betingelsen sand, da "raspberry" ikke er inkluderet på den liste, du har angivet. |
| Inkluderer | Sammenligner værdier for at tjekke, om den første inputværdi indeholder den anden inputværdi. |
Værdien for order.lineitem.product.title sammenlignes med: berry.Hvis produkttitlen for varelinjen er strawberry, er betingelsen sand, da "berry" indgår i "strawberry". |
| Inkluderer ikke | Sammenligner værdier for at tjekke, om den første inputværdi ikke indeholder den anden inputværdi. |
Værdien for order.lineitem.product.title sammenlignes med: berry.Hvis varelinjens produkttitel er apple, er betingelsen sand, da "berry" ikke er inkluderet i "apple". |
| Begynder med | Sammenligner værdier for at tjekke, om den første værdi begynder med dataene i den anden værdi. |
Værdien for order.shippingAddress.country sammenlignes med: United.Hvis landet for ordrens leveringsadresse er United Kingdom, er betingelsen sand, da "United Kingdom" starter med "United". |
| Begynder ikke med | Sammenligner værdier for at tjekke, om den første værdi ikke begynder med dataene i den anden værdi. |
Værdien for order.shippingAddress.country sammenlignes med: United.Hvis landet for ordrens leveringsadresse er Canada, er betingelsen sand, da "United Kingdom" ikke starter med "Canada". |
| Slutter med | Sammenligner værdier for at tjekke, om den første værdi slutter med dataene i den anden værdi. |
Værdien for order.lineitems.product.title sammenlignes med: pie.Hvis varelinjens produkttitel er key lime pie, er betingelsen sand, da "key lime pie" slutter på "pie". |
| Slutter ikke med | Sammenligner værdier for at tjekke, om den første værdi ikke slutter med dataene i den anden værdi. |
Værdien for order.lineitems.product.title sammenlignes med: pie.Hvis varelinjens produkttitel er chocolate cake, er betingelsen sand, da "chocolate cake" ikke slutter på "pie". |
Null- eller tomme operatorer
| Operator | Beskrivelse | Sand/falsk-betingelse |
|---|---|---|
| Tom eller findes ikke | Tjekker, om et felt er tomt (ikke har nogen værdi) eller ikke findes (er null). |
Returnerer true, når feltet er tomt eller null, og false, hvis det findes.
|
| Ikke tom og findes | Tjekker, om et felt findes og ikke er tomt eller null. | Returnerer true, når feltet ikke er tomt og findes, og false, når det er tomt. |
Listeoperatorer
Listeoperatorer kombineres med operatorer på feltniveau, så du kan tjekke betingelser for data, der er inkluderet i lister.
Som i eksemplet med "mindst én" kan du f.eks. tjekke, om en ordre indeholder et bestemt produkt (placeret i order.lineItems) med et bestemt tag (en liste under order.lineItems.product.tags). I begge tilfælde bruger eksemplet listeoperatoren mindst én af.
Flow har 3 operatorer til at arbejde med lister: Mindst én af, Ingen af og Alle af.
| Operator | Beskrivelse | Eksempel på brug |
|---|---|---|
| Mindst én af | Kontrollerer, om nogen elementer på listen matcher den angivne betingelse. Returnerer true, hvis et eller flere elementer på listen matcher. Hvis listen er tom, eller ingen elementer matcher, returneres false. | Tjek, om en ordre indeholder et produkt med et bestemt tag, ved at bruge Mindst én af ordrens varelinjer.produkt.tags er lig med tagnavn. |
| Ingen af | Kontrollerer, at ingen af elementerne på listen matcher den angivne betingelse. Returnerer true, hvis ingen af elementerne matcher betingelsen. Hvis listen er tom, returneres true. | Kontrollér, om et produkt ikke har tagget presale ved hjælp af Ingen af produkttags er lig med presale.En almindelig fejl er at forsøge at negere operatoren ved at bruge er ikke lig med. Brugen af denne dobbelte negation, Ingen af produkttags er ikke lig med presale, gør betingelsen både svær at forstå og ugyldig.
|
| Alle af | Kontrollerer, at alle elementer på listen matcher den angivne betingelse. Returnerer true, hvis hvert element på listen matcher betingelsen. | Tjek, om alle varer i en ordre har en bestemt produktforhandler ved navn Acme, ved at bruge Alle af ordrens varelinjer har en produkt.forhandler, der er lig med Acme. |
Rækkefølge af betingelser
Du kan oprette workflows, der har flere betingelser, som hver især kan resultere i forskellige handlinger. Rækkefølgen af betingelserne er vigtig. Tjekket af betingelser starter i begyndelsen af et workflow og fortsætter systematisk gennem hver betingelse. Tjekket stopper, når en betingelse er opfyldt.
Dette eksempel bruger flere betingelser til at tjekke, om en kunde er berettiget til et loyalitetsprogram, baseret på det samlede beløb, som vedkommende har brugt i butikken. Betingelserne tjekkes i den rækkefølge, de vises i:
- Hvis den samlede pris er større end 1.000 $, og kunden accepterer at modtage markedsføring, skal vedkommende tagges med tagget
Gold. - Hvis den samlede pris er mindre end 1.000 $, men mere end 500 $, og kunden accepterer at modtage markedsføring, skal vedkommende tagges med tagget
Silver. - Hvis den samlede pris er mindre end 500 $, men mere end 200 $, og kunden accepterer at modtage markedsføring, skal vedkommende tagges med tagget
Bronze.

Kombinering af flere kriterier i én betingelse
Når du opbygger en betingelse, kan du angive flere kriterier. Du kan vælge, hvordan disse separate kriterier skal kombineres for at afgøre, om den overordnede betingelse er sand eller falsk.
Hvis alle kriterier er opfyldt
Hvis du vælger OG, resulterer det kun i et sandt svar, hvis alle de kriterier, du har angivet, er sande.
Du kan f.eks. oprette et workflow til at tagge kunder, der befinder sig i Canada og bruger mere end 500 $ på en enkelt ordre.

Workflowet tagger kun kunden, hvis kunden befinder sig i Canada, og vedkommende bruger mere end 500 USD på ordren. Hvis en af disse betingelser er falsk, bliver kunden ikke tagget.
Hvis nogen af kriterierne er opfyldt
Hvis du vælger ELLER, resulterer det i et “sandt” svar, hvis et af de kriterier, du angiver, er sandt.
Du kan f.eks. oprette et workflow til at tagge ordrer med en risikoanbefaling om at annullere eller undersøge. Så længe en af disse betingelser er sand, bliver ordren tagget.

Statiske og dynamiske data i betingelser
Typisk er den anden værdi i en betingelse en statisk, manuelt indtastet værdi (f.eks. product.title == "din titel"). Denne værdi forbliver den samme, hver gang workflowet kører.
Du kan også bruge dynamiske værdier, hvis feltet for den anden værdi viser et -ikon. Dynamiske værdier hentes fra din butiks data, hver gang workflowet kører. Hvis du vil bruge en dynamisk værdi, skal du klikke på ikonet
og vælge den værdi, du vil sammenligne med. Dynamiske værdier er ikke tilgængelige for alle felter.
Du kan f.eks. oprette et workflow, der tagger en ordre, hvis landet i ordrens faktureringsadresse matcher landet i dens leveringsadresse.

I dette eksempel hentes både den første og den anden værdi fra din butiks data i stedet for manuelt at angive en statisk streng, der skal sammenlignes med for den anden værdi. Hvis landet i faktureringsadressen, som kunden har angivet, er det samme som det land, kunden har angivet i leveringsadressen, er betingelsen sand, og ordren bliver tagget.
Du kan lejlighedsvis få brug for at anvende dynamiske data, der er af den forkerte type. Du kan f.eks. have brug for at sammenligne et tal, der er gemt som en streng, med et andet tal. I dette tilfælde kan du bruge valgmuligheden Kør kode til at konvertere dataene til den korrekte type.
Skabeloner
De fleste skabeloner i skabelonbiblioteket indeholder en betingelse.
Eksempler på betingelser
Tjek, om mindst én vare på en liste matcher en betingelse
Dette eksempel viser en typisk betingelse, der tjekker, om mindst én vare på en liste matcher en bestemt værdi.
I dette tilfælde tjekker betingelsen, om et af produkterne i en ordre har et tag med værdien presale. For at opbygge denne betingelse skal du vælge order / lineItems / product / tags. Som standard vælger Flow mindst én af som den logiske operator:

Delene mindst én af er listeoperatorer og bruges til at håndtere match på tværs af flere listeelementer. Delen er lig med er en operator på feltniveau, der afgør, om et enkelt listeelement matcher.
Tjek, om ingen af varerne på en liste matcher en betingelse
Dette eksempel viser en typisk betingelse, der tjekker, om ingen af varerne på en liste matcher en bestemt værdi. Et almindeligt problem, man skal overveje, er, at lister kan være tomme. Når en liste er tom, håndteres betingelsen af listeoperatoren (i dette tilfælde ingen af).
I dette tilfælde tjekker betingelsen, om ingen af produkttagsene er lig med foo:

Betingelsen returnerer true, hvis (1) der ikke er nogen produkttags, eller (2) ingen af tagsene er foo. Ellers returnerer den false.
Tjek, om en vare på en liste matcher flere kriterier
Dette eksempel viser en typisk betingelse, der tjekker, om mindst én vare på en liste matcher to separate kriterier.
I dette tilfælde tjekker betingelsen, om et af produkterne i en ordre har et tag med værdien presale, og om det har en productType med værdien clothing.

For at opbygge denne betingelse skal du:
- Vælg order / lineItems / product / tags for det første kriterie.
- Vælg Føj kriterier til for samme vare på listen lineItems. Bemærk: Det er en almindelig fejl at vælge det forkerte listeelement her.
- Vælg lineItems_item som objekt på øverste niveau og derefter product / productType for det andet kriterie. Bemærk: Det er også en almindelig fejl at vælge det forkerte objekt her.
- Vælg OG for at kombinere de to kriterier.
- Indtast værdierne
presaleogclothingfor de to kriterier.