Bedingungen in Shopify Flow
In Shopify Flow werden Bedingungen verwendet, um den Ablauf eines Workflows zu bestimmen. Normalerweise wird damit gesteuert, ob eine Aktion ausgeführt werden soll. Wenn du eine Bedingung festlegst, wähle ein Datenfeld, das überprüft werden soll (z. B. einen Produkttitel), einen logischen Operator (z. B. equal to
) und einen Wert als Prüfwert (Blue jeans
) aus.
Auf dieser Seite
Beispielbedingungen
Überprüfen, ob mindestens ein Artikel in einer Liste der Bedingung entspricht
Dieses Beispiel zeigt eine typische Bedingung, mit der überprüft wird, ob mindestens ein Artikel in einer Liste mit einem bestimmten Wert übereinstimmt.
In diesem Fall überprüft die Bedingung, ob eines der Produkte in einer Bestellung das Tag presale
aufweist. Um diese Bedingung zu erstellen, wähle order / lineItems / product / tags
aus. Standardmäßig wählt Flow Mindestens einer von als logischen Operator aus:
Die Mindestens einer von-Teile sind Listenoperatoren und werden für den Abgleich mehrerer Artikel in einer Liste verwendet. Der Entspricht-Teil ist ein Operator auf Feldebene, der bestimmt, ob ein einzelner Artikel in einer Liste der Bedingung entspricht.
Überprüfen, ob keiner der Artikel in einer Liste der Bedingung entspricht
Dieses Beispiel zeigt eine typische Bedingung, mit der überprüft wird, ob keiner der Artikel in einer Liste mit einem bestimmten Wert übereinstimmt. Ein häufiges Problem, das berücksichtigt werden muss, ist, dass Listen leer sein können. Wenn eine Liste leer ist, wird die Bedingung vom Listenoperator verarbeitet (in diesem Fall Keiner von).
In diesem Fall überprüft die Bedingung, ob keines der Produkt-Tags "foo" entspricht:
Die Bedingung gibt true
zurück, wenn (1) es keine Produkt-Tags gibt oder (2) keines der Tags "foo" entspricht. Andernfalls gibt sie false
zurück.
Überprüfen, ob ein Artikel in einer Liste mehreren Kriterien entspricht
Dieses Beispiel zeigt eine typische Bedingung, mit der überprüft wird, ob mindestens ein Artikel in einer Liste zwei separaten Kriterien entspricht.
In diesem Fall überprüft die Bedingung, ob eines der Produkte in einer Bestellung ein Tag vom Typ presale
aufweist und ob es vom Produkttyp (productType) clothing
ist.
Führe zum Erstellen dieser Bedingungen die folgenden Schritte aus:
- Wähle für das erste Kriterium order / lineItems / product / tags aus.
- Füge dann Kriterien für den gleichen Artikel für die lineItems-Liste hinzu. Hinweis: An diesem Punkt wird häufig der falsche Artikel in der Liste ausgewählt.
- Wähle lineItems_item als Objekt der obersten Ebene und dann product / productType für das zweite Kriterium aus. Hinweis: An diesem Punkt wird häufig auch das falsche Objekt ausgewählt.
- Wähle AND aus, um die beiden Kriterien zu kombinieren.
- Gib die Werte
presale
undclothing
für die beiden Kriterien ein.
Mit Flow verwendete Datentypen
Der erste Wert in einer Flow-Bedingung sind Daten, die von deinem Shop verwendet werden und von der GraphQL-Admin-API abgerufen werden.
Flow unterstützt die folgenden Arten von Daten:
- Variabel: Variable Werte sind Zahlen mit einem Dezimalbetrag, zum Beispiel: 4,25.
- Ganzzahl: Ganzzahlwerte sind ganze Zahlen, die keinen Dezimalbetrag haben, zum Beispiel 42.
- Datum: Datumswerte sind die Darstellung des Datums in Zahlen, zum Beispiel: 01012021.
- String: String-Werte bestehen aus Text. Vergleiche, die String-Werte verwenden, berücksichtigen nicht die Groß- und Kleinschreibung.
- Boolesch: Boolesche Werte sind entweder wahr (true) oder falsch (false).
- Enum: Enumerationswerte sind Datensätze, die es ermöglichen, dass eine Variable eine Reihe von vordefinierten Konstanten umfasst.
Logische Operatoren
Logische Operatoren definieren, wie deine Bedingung angewendet wird. Mit Bedingungen können einfache Eigenschaften überprüft werden, wie z. B. ob die Gesamtsumme einer Bestellung über einem bestimmten Betrag liegt oder ob ein Kunde dem Marketing zustimmt. Logische Operatoren können auch komplexere Eigenschaften überprüfen.
Operatoren können entweder Operatoren auf Feldebene, wie entspricht oder entspricht nicht, oder Listenoperatoren, wie Mindestens einer von oder Keiner von sein.
Operatoren auf Feldebene
Operatoren auf Feldebene werden verwendet, um zwei Werte zu vergleichen. Flow kann die folgenden Operatoren verwenden:
- Entspricht
- Entspricht nicht
- Größer und Größer oder gleich
- Kleiner als und Kleiner als oder gleich
- Eines von
- Keins von diesen
- Enthält
- Enthält nicht
- Beginnt mit
- Beginnt nicht mit
- Endet mit
- Endet nicht mit
Entspricht
Entspricht vergleicht Werte, um zu überprüfen, ob sie identisch sind. Im folgenden Beispiel wird der Wert für order.currentTotalDiscountsSet.shopMoney.amount
aus deinen Shop-Daten abgerufen und mit dem zweiten Wert 50 verglichen.
Wenn der erste Wert 50 entspricht, ist die Bedingung wahr. Die Bestellung wird storniert.
Entspricht nicht
Entspricht nicht vergleicht Werte, um zu überprüfen, ob sie nicht die gleichen sind. Im folgenden Beispiel wird der Wert für order.currentTotalDiscountsSet.shopMoney.amount
aus deinen Shop-Daten abgerufen und mit dem zweiten Wert 50 verglichen.
Wenn der erste Wert 93 entspricht, ist die Bedingung wahr. Die Bestellung wird storniert.
Größer und Größer oder gleich
Größer und größer oder gleich vergleicht Werte, um zu überprüfen, ob der erste Wert größer als oder größer oder gleich dem zweiten Wert ist. Im folgenden Beispiel wird der Wert für order.currentTotalDiscountsSet.shopMoney.amount
aus deinen Shop-Daten abgerufen und mit dem zweiten Wert 50 verglichen.
Wenn der aus deinem Shop abgerufene Wert 137 entspricht, ist die Bedingung wahr, da 137 größer als 50 ist. Die Bestellung wird storniert.
Kleiner als und Kleiner als oder gleich
Kleiner und Kleiner oder gleich vergleichen Werte, um zu überprüfen, ob der erste Wert kleiner bzw. kleiner oder gleich dem zweiten Wert ist. Im folgenden Beispiel wird der Wert für order.currentTotalDiscountsSet.shopMoney.amount
aus deinen Shop-Daten abgerufen und mit dem zweiten Wert 50 verglichen.
Wenn der von deinem Shop abgerufene Wert 47 ist, ist die Bedingung wahr, da 47 kleiner oder gleich 50 ist. Die Bestellung wird storniert.
Mindestens einer von
Der Operator Mindestens einer von überprüft, ob das Feld einem Wert in der bereitgestellten Liste entspricht. Die zu überprüfenden Werte müssen einzeln eingegeben und mit der Eingabetaste bestätigt werden (ähnlich wie bei Tags). Wenn Mindestens einer von für ein leeres Array verwendet wird, führt dies zu einer falschen Bewertung. Im folgenden Beispiel wird der Wert für order.lineitem.product.title
aus deinen Shop-Daten abgerufen und mit dem zweiten Satz von Werten verglichen: Ananas, Guave, Kiwi.
Wenn der von deinem Shop angerufene Wert Guave ist, ist die Bedingung wahr, da Guave im Array "Ananas, Guave, Kiwi" enthalten ist. Die Bestellung wird storniert.
Keins von diesen
Der Operator Keins von diesen überprüft, ob das Feld keinem der Werte in der bereitgestellten Liste entspricht. Die zu überprüfenden Werte müssen einzeln eingegeben und mit der Eingabetaste bestätigt werden (ähnlich wie bei Tags). Im folgenden Beispiel wird der Wert für order.lineitem.product.title
aus deinen Shop-Daten abgerufen und mit dem zweiten Satz von Werten verglichen: Ananas, Guave, Kiwi.
Wenn der von deinem Shop abgerufene Wert hingegen "Himbeere" ist, ist die Bedingung wahr, da Himbeere nicht im Array "Ananas, Guave, Kiwi" enthalten ist. Die Bestellung wird storniert.
Enthält
Enthält vergleicht Wert, um zu überprüfen, ob eine der Eingaben des ersten Werts die Daten in der Eingabe des zweiten Werts enthält. Im folgenden Beispiel wird der Wert für order.lineitem.product.title
aus deinen Shop-Daten abgerufen und mit dem zweiten Wert Schrott verglichen.
Wenn der von deinen Shop-Daten abgerufene Wert "Schrottwichteln" dabei ist, ist die Bedingung wahr, da der exakte String "Schrott" im String "Schrottwichteln" enthalten ist. Die Bestellung wird storniert.
Enthält nicht
Enthält vergleicht Wert, um zu überprüfen, ob eine der Eingaben des ersten Werts die Daten in der Eingabe des zweiten Werts enthält. Im folgenden Beispiel wird der Wert für order.lineitem.product.title
aus deinen Shop-Daten abgerufen und mit dem zweiten Wert Schrott verglichen.
Wenn der von deinen Shop-Daten abgerufene Wert "Schrottwichteln" dabei ist, ist die Bedingung wahr, da der exakte String "Kratzen" im String "Schrottwichteln" nicht enthalten ist. Die Bestellung wird storniert.
Beginnt mit
Beginnt mit vergleicht Werte, um zu überprüfen, ob der erste Wert mit den Daten im zweiten Wert beginnt. Im folgenden Beispiel wird der Wert für order.shippingAddress.country
aus deinen Shop-Daten abgerufen und mit dem zweiten Wert Vereinigt verglichen.
Wenn der von deinem Shop abgerufene Wert "Vereinigtes Königreich" ist, ist die Bedingung wahr, da der String "Vereinigt" den String "Vereinigtes Königreich" startet. Die Bestellung wird storniert.
Beginnt nicht mit
Beginnt nicht mit vergleicht Wert, um zu überprüfen, ob der erste Wert nicht mit den Daten im zweiten Wert beginnt. Im folgenden Beispiel wird der Wert für order.shippingAddress.country
aus deinen Shop-Daten abgerufen und mit dem zweiten Wert Vereinigt verglichen.
Wenn der von deinem Shop abgerufene Wert "Kanada" ist, ist die Bedingung wahr, da der String "Kanada" den String "Vereinigtes Königreich" nicht startet. Die Bestellung wird storniert.
Endet mit
Endet mit vergleicht Werte, um zu überprüfen, ob der erste Wert mit den Daten im zweiten Wert endet. Im folgenden Beispiel wird der Wert für order.lineitems.product.title
aus deinen Shop-Daten abgerufen und mit dem zweiten Wert zuletzt verfügbar verglichen.
Wenn der von deinem Shop abgerufene Wert "Sportsocken zuletzt verfügbar" ist, ist die Bedingung wahr, da der String "Sportsocken zuletzt verfügbar" mit dem String "zuletzt verfügbar" endet. Die Bestellung wird storniert. Die Bestellung wird storniert.
Endet nicht mit
Beginnt nicht mit vergleicht Wert, um zu überprüfen, ob der erste Wert nicht mit den Daten im zweiten Wert beginnt. Im folgenden Beispiel wird der Wert für order.lineitems.product.title
aus deinen Shop-Daten abgerufen und mit dem zweiten Wert zuletzt verfügbar verglichen.
Wenn der von deinem Shop abgerufene Wert "Sportsocken neu" ist, ist die Bedingung wahr, da der String "Sportsocken neu" nicht mit dem String "zuletzt verfügbar" endet. Die Bestellung wird storniert.
Null oder leere Operatoren
Leer oder existiert nicht
Einige Felder in deinen Daten können leer sein. Beispielsweise gibt order.cancelReason
den Wert null
zurück, wenn eine Bestellung nicht storniert wird. Verwende Leer oder existiert nicht, wenn true
zurückgegeben werden soll, wenn ein Feld leer ist, oder null
und false
, wenn es vorhanden ist.
Nicht leer und existiert
Einige Felder in deinen Daten können leer sein. Beispielsweise gibt order.cancelReason
den Wert null
zurück, wenn eine Bestellung nicht storniert wird. Verwende Nicht leer und existiert, wenn true
zurückgegeben werden soll, wenn ein Feld nicht leer ist, und false
, wenn es leer ist.
Listenoperatoren
Listenoperatoren werden mit Operatoren auf Feldebene kombiniert, damit du Bedingungen für Daten in Listen überprüfen kannst.
Wie im Beispiel für "Mindestens einer von" möchtest du möglicherweise überprüfen, ob eine Bestellung ein bestimmtes Produkt (in order.lineItems
) mit einem bestimmten Tag (eine Liste unter order.lineItems.product.tags
) enthält. In beiden Fällen verwendet das Beispiel den Listenoperator Mindestens einer von.
Flow bietet 3 Operatoren für die Arbeit mit Listen: Mindestens einer von, Keiner von und Alle von.
Mindestens einer von
Die meisten Bedingungen mit Listen verwenden den Operator Mindestens einer von. Dieser Operator gibt true
zurück, wenn irgendeiner der Artikel in der Liste mit der Bedingung übereinstimmt. Wenn du z. B. überprüfen möchtest, ob eine Bestellung ein Produkt mit einem bestimmten Tag enthält, würdest du Mindestens einer von verwenden. Wenn die Liste leer ist oder wenn die Bedingung nicht erfüllt ist, gibt die Bedingung false
zurück.
Keiner von
In einigen Fällen möchtest du möglicherweise überprüfen, ob eine Liste einen Artikel nicht enthält. Um eine solche Bedingung zu erstellen, änderst du den Listenoperator am besten in Keiner von. Dieser Operator gibt true
zurück, wenn keiner der Artikel in der Liste mit der Bedingung übereinstimmt. Und was wichtig ist: Wenn die Liste leer ist, gibt der Operator auch true
zurück. Wenn du beispielsweise überprüfen möchtest, ob ein Produkt nicht das Tag presale
enthält, verwende None of product tags is equal to presale
.
Alle von
In bestimmten Fällen möchtest du möglicherweise überprüfen, ob alle Artikel in einer Liste mit einer Bedingung übereinstimmen. Du kannst beispielsweise überprüfen, ob alle Artikel in einer Bestellung von einem bestimmten Produktanbieter namens Acme
stammen. Dafür würdest du All of order line items have a product.vendor equal to Acme
verwenden.
Bedingungen anordnen
Du kannst Workflows mit mehreren Bedingungen erstellen, die jeweils verschiedene Aktionen zur Folge haben können. Die Reihenfolge der Bedingungen ist wichtig. Die Prüfung der Bedingungen beginnt am Anfang des Workflows und wird systematisch für jede Bedingung fortgesetzt. Die Prüfung wird beendet, wenn eine Bedingung erfüllt ist.
Mehrerer Kriterien in einer Bedingung kombinieren
Wenn du eine Bedingung erstellst, kannst du mehrere Kriterien festlegen. Du kannst auswählen, wie diese separaten Kriterien kombiniert werden sollen.
Wenn alle Bedingungen erfüllt sind
Die Auswahl Wenn alle Bedingungen erfüllt sind führt zu einer wahren Antwort, wenn eines der von dir festgelegten Kriterien wahr ist. Dies entspricht der Anweisung AND
beim Programmieren.
Du erstellst beispielsweise einen Workflow, um Kunden in Kanada zu taggen, die mehr als 500 USD für eine einzelne Bestellung ausgeben.
Der Workflow taggt den Kunden nur, wenn sich der Kunde in Kanada befindet und mehr als 500 USD für die Bestellung ausgibt. Wenn eine dieser Bedingungen falsch ist, wird der Kunde nicht getaggt.
Wenn eine der Bedingungen erfüllt ist
Die Auswahl Wenn eine der Bedingungen erfüllt ist führt zu einer wahren Antwort, wenn eines der von dir festgelegten Kriterien erfüllt ist. Dies entspricht der Anweisung OR
beim Programmieren.
Du erstellst beispielsweise einen Workflow, um Bestellungen zu taggen, die als hohes oder mittleres Risiko gelten.
Der Workflow taggt die Bestellung, wenn sie entweder ein hohes oder ein mittleres Risiko aufweist. Solange eine dieser Bedingungen erfüllt ist, wird die Bestellung getaggt.
Bedingungen und Aktionen kombinieren
Du kannst Bedingungen kombinieren, um eine große Bedingung zu erzeugen. Wenn Bedingungen kombiniert sind, müssen alle Bedingungen erfüllt sein, damit die Gesamtbedingung wahr ist. Wenn eine der Bedingungen nicht erfüllt ist, dann ist die Gesamtbedingung falsch. Im folgenden Beispiel muss der Kunde den Erhalt von Marketingmitteilungen akzeptieren und der Gesamtpreis der Bestellung muss einen bestimmten Schwellenwert erfüllen.
Genauso kannst du Aktionen miteinander kombinieren, damit mehrere Aktionen ausgeführt werden können. In diesem Beispiel werden mehrere Bedingungen angewendet, um zu überprüfen, ob ein Kunde basierend auf dem im Shop ausgegebenen Gesamtbetrag für ein Treueprogramm infrage kommt. Im voranstehenden Beispiel werden die folgenden Bedingungen in der Reihenfolge ihrer Auflistung geprüft:
- Wenn der Gesamtpreis mehr als 1.000 USD beträgt und der Kunde eingewilligt hat, Marketingmaterialien zu erhalten, markiere ihn mit dem Gold-Tag.
- Wenn der Gesamtpreis weniger als 1.000 USD, aber mehr als 500 USD beträgt und der Kunde eingewilligt hat, Marketingmaterialien zu erhalten, markiere ihn mit dem Silber-Tag.
- Wenn der Kunde mehr als 200 USD ausgegeben und eingewilligt hat, Marketingmaterialien zu erhalten, markiere ihn mit dem Bronze-Tag.
Statische und dynamische Daten in Bedingungen
In der Regel ist der zweite Wert in einer Bedingung ein statischer, manuell eingegebener Wert (wie product.title == "your title"
). Dieser Wert bleibt jedes Mal, wenn der Workflow ausgeführt wird, gleich.
Du kannst auch dynamische Werte verwenden, wenn das Feld für den zweiten Wert ein </>
-Symbol anzeigt. Jedes Mal, wenn der Workflow ausgeführt wird, werden dynamische Werte aus deinen Shop-Daten abgerufen. Um einen dynamischen Wert zu verwenden, klicke auf das </>
-Symbol und wähle den Wert aus, der als Vergleichswert dienen soll. Dynamische Werte sind nicht für alle Felder verfügbar.
Beispielsweise erstellst du einen Workflow, der eine Bestellung taggt, wenn das Land in der Rechnungsadresse der Bestellung mit dem Land in der Lieferadresse übereinstimmt.
In diesem Beispiel werden sowohl der erste als auch der zweite Wert aus den Daten deines Shops abgerufen, anstatt manuell einen statischen String anzugeben, wobei der zweite Wert als Prüfwert dient. Wenn das Land in der vom Kunden angegebenen Rechnungsadresse mit dem Land identisch ist, das der Kunde in der Lieferadresse angegeben hat, ist die Bedingung wahr und die Bestellung wird getaggt.
Möglicherweise musst du gelegentlich dynamische Daten verwenden, die vom falschen Typ sind. Angenommen, du musst eine als String gespeicherte Zahl mit einer anderen Zahl vergleichen. In diesem Fall kannst du die Option Code ausführen verwenden, um die Daten in den richtigen Typ umzuwandeln.