Betingelser i Shopify Flow
Betingelser brukes i Shopify Flow for å avgjøre hvilken bane som skal følges i en arbeidsflyt, vanligvis for å kontrollere om en handling er utført. Når du angir en betingelse, velger du et datafelt til å kontrollere (for eksempel en produkttittel), en logisk operatør (som for eksempel equal to
), og en verdi det skal kontrolleres mot (Blue jeans
).
På denne siden
Eksempelbetingelser
Kontroller om minst ett element i en liste samsvarer med en betingelse
Dette eksempelet viser en typisk betingelse som kontrollerer om minst ett element i en liste samsvarer med en bestemt verdi.
I dette tilfellet kontrollerer betingelsen om et av produktene i en bestilling har taggen presale
. For å bygge denne betingelsen, velger du order / lineItems / product / tags
. Som standard velger Flow at least one of som logisk operatør:
If at least one of order / lineItems:
If at least one of lineItem_item / product / tags
tags_item
is equal to
presale
Delene i at least one of er listeoperatører, som brukes til å håndtere samsvar på tvers av flere listeelementer. Delen is equal to er en operatør på feltnivå, som avgjør hvorvidt ett enkelt listeelement samsvarer.
Kontroller om ingen av elementene i en liste samsvarer med en betingelse
Dette eksempelet viser en typisk betingelse som kontrollerer om ingen av elementene i en liste samsvarer med en bestemt verdi. Et vanlig problem du bør ta høyde for, er at listene kan være tomme. Når en liste er tom, håndteres betingelsen av listeoperatøren (i dette tilfellet none of).
I dette tilfellet kontrollerer betingelsen om ingen av produkttaggene er lik foo:
If none of product / tags:
tag_item
is equal to
foo
Betingelsen returnerer true
hvis (1) det ikke er noen produkttagger, eller (2) hvis ingen av taggene er foo. Ellers returnerer den false
.
Kontroller om et element i en liste samsvarer med flere kriterier
Dette eksempelet viser en typisk betingelse som kontrollerer om minst ett element i listen samsvarer med to separate kriterier.
I dette tilfellet kontrollerer betingelsen om et av produktene i bestillingen har taggen presale
, og om den har productType clothing
.
If at least one of order / lineItems:
If at least one of lineItem_item / product / tags
tags_item
is equal to
presale
AND
If lineItem_item / product
productType
is equal to
clothing
For å bygge denne betingelsen, bør du:
- Velge order / lineItems / product / tags for første kriterie.
- Velge å Legge til kriterier for samme element i listen lineItems. Merk: Det er en vanlig feil å velge feil listeelement her.
- Velge lineItems_item som toppnivåobjekt, og deretter product / productType for andre kriterie. Merk: Det er også en vanlig feil å velge feil objekt her.
- Velg AND for å kombinere de to kriteriene.
- Angi verdiene
presale
ogclothing
for de to kriteriene.
Datatyper som brukes med Flow
Den første verdien i en Flow-betingelse er data hentet fra butikken din, og hentes fra GraphQL Admin API.
Flow støtter følgende typer data:
- Flyt: Flytverdier er tall med et desimalbeløp. For eksempel 4,25.
- Integer: Heltallsverdier er heltall som ikke har desimaler. For eksempel 42.
- Dato: Datoverdier er en numerisk representasjon av datoen. For eksempel 01012021.
- Streng: Strengverdier er tekst. Sammenligninger som bruker strengverdier skiller ikke mellom små og store bokstaver.
- Boolsk: En boolsk verdi er enten sann eller usann.
- Enum: Enum-verdier er datasett som tillater at en variabel kan bestå av et sett forhåndsdefinerte konstanter.
Logiske operatører
Logiske operatører definerer hvordan betingelsen din brukes. Betingelser kan sjekke enkle egenskaper, for eksempel hvorvidt totalsummen for en bestilling er over et bestemt beløp, eller om en kunde godtar markedsføring. Logiske operatører kan også se etter mer kompliserte egenskaper.
Operatørene kan være enten operatører på feltnivå, som equal to eller not equal to, eller listeoperatører, som at least one of eller none of.
Operatører på feltnivå
Operatører på feltnivå brukes for å sammenligne to verdier. Flow kan bruke følgende operatører:
- Tilsvarer
- Tilsvarer ikke
- Større enn og Større enn eller lik
- Mindre enn og Mindre enn eller lik
- Hvilken som helst av
- Ingen av
- Inkluderer
- Inkluderer ikke
- Begynner med
- Begynner ikke med
- Slutter med
- Slutter ikke med
Tilsvarer
Equal to sammenligner verdier for å se om de er like. I følgende eksempel hentes verdien order.currentTotalDiscountsSet.shopMoney.amount
fra butikkdataene, og sammenlignes med den andre verdien 50.
Hvis den første verdien tilsvarer 50, er betingelsen sann. Bestillingen kanselleres.
Tilsvarer ikke
Not equal to sammenligner verdier for å se om de ikke er like. I følgende eksempel hentes verdien order.currentTotalDiscountsSet.shopMoney.amount
fra butikkdataene, og sammenlignes med den andre verdien 50.
Hvis den første verdien tilsvarer 93, er betingelsen sann. Bestillingen kanselleres.
Større enn og Større enn eller lik
Greater than og Greater than or equal to sammenligner verdier for å se om den første verdien er større enn, eller større enn eller lik, den andre verdien. I følgende eksempel hentes verdien order.currentTotalDiscountsSet.shopMoney.amount
fra butikkdataene, og sammenlignes med den andre verdien 50.
Hvis verdien som hentes fra butikken er 137, er betingelsen sann, fordi 137 er større enn 50. Bestillingen kanselleres.
Mindre enn og Mindre enn eller lik
Less than og Less than or equal to sammenligner verdier for å se om den første verdien er mindre enn, eller mindre enn eller lik, den andre verdien. I følgende eksempel hentes verdien order.currentTotalDiscountsSet.shopMoney.amount
fra butikkdataene, og sammenlignes med den andre verdien 50.
Hvis verdien som er hentet fra butikken din er 47, er betingelsen sann, fordi 47 er mindre enn eller lik 50. Bestillingen blir kansellert.
At least one of
Operatøren At least one of kontrollerer om feltet tilsvarer noen av verdiene i den oppgitte listen. Verdiene som skal kontrolleres må angis enkeltvis, og etterfølges av Enter-tasten (på samme måte som tagger). Hvis du bruker At least one of i en tom matrise resulterer det i et false-resultat. I det følgende eksempelet hentes verdien for order.lineitem.product.title
fra butikkens data, og sammenlignes med det andre settet med verdier: ananas, guava, kiwi.
Hvis verdien som hentes fra butikken din er guava, er betingelsen sann, fordi guava er inkludert i matrisen ananas, guava, kiwi. Bestillingen blir kansellert.
Not any of
Operatøren Not any of kontrollerer om feltet ikke tilsvarer noen av verdiene i den oppgitte listen. Verdiene som skal kontrolleres må angis enkeltvis, og etterfølges av Enter-tasten (på samme måte som tagger). I det følgende eksempelet hentes verdien for order.lineitem.product.title
fra butikkens data, og sammenlignes med det andre settet med verdier: ananas, guava, kiwi.
Hvis verdien som hentes fra butikken er bringebær, er betingelsen sann fordi bringebær ikke er en del av matrisen ananas, guava, kiwi. Bestillingen blir kansellert.
Inkluderer
Includes sammenligner verdier for å se om noe av inndataene i den første verdien inneholder dataene i den andre verdien. I følgende eksempel hentes verdien order.lineitem.product.title
fra butikkdataene, og sammenlignes med den andre verdien, scrape.
Hvis verdien som hentes fra butikken er skyscraper, er betingelsen sann, fordi den nøyaktige strengen scrape er inkludert i strengen skyscraper. Bestillingen blir kansellert.
Inkluderer ikke
Does not include sammenligner verdier for å se om noen av inndataene i den første verdien ikke inneholder dataene i den andre verdien. I følgende eksempel hentes verdien order.lineitem.product.title
fra butikkdataene, og sammenlignes med den andre verdien, scrape.
Hvis verdien som hentes fra butikken er skrapmetall, er betingelsen sann fordi den nøyaktige strengen «skrape» ikke er en del av strengen «skrapmetall». Bestillingen blir kansellert.
Begynner med
Starts with sammenligner verdier for å se om den første verdien starter med dataene i den andre verdien. I følgende eksempel hentes verdien order.shippingAddress.country
fra butikkdataene, og sammenlignes med den andre verdien, United.
Hvis verdien som hentes fra butikken er United Kingdom, er betingelsen sann, fordi strengen United er begynnelsen på strengen United Kingdom. Bestillingen blir kansellert.
Begynner ikke med
Does not start with sammenligner verdier for å se om den første verdien ikke starter med dataene i den andre verdien. I følgende eksempel hentes verdien order.shippingAddress.country
fra butikkdataene, og sammenlignes med den andre verdien, United.
Hvis verdien som hentes fra butikken er Canada, er betingelsen sann, fordi strengen Canada ikke er begynnelsen på strengen United Kingdom. Bestillingen blir kansellert.
Slutter med
Ends with sammenligner verdier for å se om den første verdien slutter med dataene i den andre verdien. I følgende eksempel hentes verdien order.lineitems.product.title
fra butikkdataene, og sammenlignes med den andre verdien, last-available.
Hvis verdien som hentes fra butikken er gymsokker siste-tilgjengelige, er betingelsen sann fordi strengen gymsokker siste-tilgjengelige slutter med strengen siste-tilgjengelige. Bestillingen blir kansellert.
Slutter ikke med
Does not end with sammenligner verdier for å se om den første verdien ikke slutter med dataene i den andre verdien. I følgende eksempel hentes verdien order.lineitems.product.title
fra butikkdataene, og sammenlignes med den andre verdien, last-available.
Hvis verdien som hentes fra butikken er athletic socks new, er betingelsen sann fordi strengen athletic socks new ikke slutter med strengen last-available. Bestillingen blir kansellert.
Null- eller tomme operatører
Tom eller eksisterer ikke
Noen av feltene i dataene kan være tomme. order.cancelReason
vil for eksempel returnere null
hvis en bestilling ikke er kansellert. Bruk tom eller eksisterer ikke hvis du ønsker å returnere true
når et felt er tomt, eller null
og false
hvis det finnes.
Ikke tom og eksisterer
Noen av feltene i dataene kan være tomme. order.cancelReason
vil for eksempel returnere null
hvis en bestilling ikke er kansellert. Bruk Ikke tom og eksisterer hvis du ønsker å returnere true
når et felt ikke er tomt, og false
når det er tomt.
Listeoperatører
Listeoperatører kombineres med operatører på feltnivå for å tillate kontroll av betingelser på data i lister.
Som i eksempelet «at least one», kan du ha behov for å kontrollere om en bestilling inneholder et bestemt produkt (som finnes i order.lineItems
) med en bestemt tagg (en liste under order.lineItems.product.tags
). I begge tilfeller bruker eksempelet listeoperatøren at least one of.
Flow inneholder tre operatører for å jobbe med lister: At least one of, None of og All of.
At least one of
De fleste betingelse med lister vil bruke At least one of. Denne operatøren returnerer true
hvis noen av elementene i listen samsvarer med betingelsen. Hvis du for eksempel ønsker å kontrollere om en bestilling inneholder et produkt med en bestemt tagg, bruker du At least one of. Når listen er tom, eller når betingelsen ikke er oppfylt, returnerer betingelsen false
.
Ingen av
I noen tilfeller kan du ha behov for å kontrollere om en liste ikke inneholder et element. Den beste måten å bygge denne betingelsen på, er å endre listeoperatøren til None of. Denne operatøren returnerer true
hvis ingen av elementene i listen samsvarer med betingelsen. Og viktigst, hvis listen er tom, returneres også true
. Du bruker for eksempel None of product tags is equal to presale
hvis du ønsker å kontrollere om et produkt ikke inneholder taggen presale
.
Alle av
I begrensede tilfeller kan du ha behov for å kontrollere om alle elementene i en liste samsvarer med en betingelse. Det kan for eksempel hende du ønsker å kontrollere om alle varer i en bestilling har en bestemt produktleverandør, med navnet Acme
. For dette bruker du All of order line items have a product.vendor equal to Acme
.
Sortere betingelser
Du kan opprette arbeidsflyter med flere betingelser, og hver av dem kan resultere i ulike handlinger. Rekkefølgen på betingelsene er viktig. Kontrollen for betingelser starter i begynnelsen av arbeidsflyten, og fortsetter systematisk gjennom hver betingelse. Kontrollen stopper når en betingelse oppfylles.
Kombinere flere kriterier til én betingelse
Når du bygger en betingelse, kan du angi flere kriterier. Du kan velge hvordan disse separate kriteriene skal kombineres.
Hvis alle betingelser er oppfylt
Hvis du velger Hvis alle betingelser er oppfylt, fører det bare til svaret Sann dersom alle kriterier du har angitt er oppfylt. Dette blir som en AND
-erklæring i programmering.
Du oppretter for eksempel en arbeidsflyt som tagger kunder som er lokalisert i Canada og bruker mer enn 500 USD på en enkeltbestilling.
Arbeidsflyten tagger bare kunden hvis kunden er lokalisert i Canada, og bruker mer enn 500 USD i bestillingen. Hvis én av disse betingelsene ikke er oppfylt, tagges heller ikke kunden.
Hvis noen av betingelsene er oppfylt
Hvis du velger Hvis noen av betingelsene er oppfylt, fører det til en sann respons hvis noen av betingelsene du angir er sanne. Dette blir som en OR
-erklæring i programmering.
Du oppretter for eksempel en arbeidsflyt for å tagge bestillinger som vurderes som høy eller middels risiko.
Arbeidsflyten tagger bestillingen hvis den er enten høy eller medium risiko. Så lenge en av disse betingelsene er sanne, blir bestillingen tagget.
Kombinere betingelser og handlinger
Du kan kombinere betingelser for å skape én stor betingelse. Når betingelser kombineres må alle betingelsene være oppfylt for at hele betingelsen skal være sann. Hvis noen av betingelsene ikke er oppfylt, er hele betingelsen usann. I følgende eksempelet må kunden godta markedsføringsmateriell, og totalprisen for bestillingen må være større enn en gitt terskel.
På samme måte kan du kombinere handlinger slik at du kan kjøre flere handlinger samtidig. Dette eksemplet bruker flere betingelser for å sjekke om en kunde er kvalifisert for et lojalitetsprogram basert på det totale beløpet de har brukt i butikken. I eksempelet ovenfor kontrolleres følgende betingelser i rekkefølgen de vises:
- Hvis totalsummen er større enn 1000 USD og kunden godtar markedsføring, gir du dem Gold-taggen.
- Hvis totalbeløpet er under 1000 USD, men mer enn 500 USD og kunden godtar markedsføring, gir du dem Silver-taggen.
- Hvis kunden har brukt mer enn 200 USD og godtar markedsføring, gir du dem Bronze-taggen.
Statiske og dynamiske data i betingelser
Den andre verdien i en betingelse er vanligvis en statisk, manuelt angitt verdi (som for eksempel product.title == "your title"
). Denne verdien forblir den samme hver gang arbeidsflyten kjører.
Du kan også bruke dynamiske verdier hvis feltet for den andre verdien viser et </>
-symbol. Dynamiske verdier kommer fra butikkdataene dine hver gang arbeidsflyten kjører. For å bruke en dynamisk verdi klikker du </>
, og velger verdien du vil sjekke mot. Dynamiske verdier er ikke tilgjengelig for alle felt.
Du oppretter for eksempel en arbeidsflyt som tagger en bestilling dersom landet i bestillingens fakturaadresse samsvarer med landet i leveringsadressen.
I dette eksempelet trekkes både den første og den andre verdien fra butikkens data, i stedet for å manuelt spesifisere en statisk streng som skal sjekkes mot den andre verdien. Hvis landet i fakturaadressen som er oppgitt av kunden er det samme som landet kunden har oppgitt i leveringsadressen, er betingelsen sann og bestillingen blir tagget.
Av og til kan det hende du må bruke dynamiske data av feil type. Det kan for eksempel hende du må sammenligne et tall som er lagret som en streng med et annet tall. I dette tilfellet kan du bruke alternativet Kjør kode for å konvertere dataene til riktig type.