Warunki w Shopify Flow

Warunki umożliwiają kontynuację workflow, gdy spełnione są określone reguły, takie jak początek instrukcji if-then. Ustawiając warunek, wybierasz kryteria z pól w GraphQL Admin API (np. product.title), operator logiczny (np. równy) i wartość do sprawdzenia (np. Niebieskie dżinsy). Gdy workflow ocenia warunek, aplikacja Flow porównuje wartość zdefiniowaną w workflow z wartością zwróconą dla Twojego sklepu, a następnie wyświetla wyniki w uruchomieniu workflow. Aby lepiej zrozumieć pola i wartości dostępne do definiowania warunków, dowiedz się, jak wyświetlić podgląd danych sklepu.

Dowiedz się więcej o podstawach działania warunków.

Typy danych używane w aplikacji Flow

Ustawiając warunek, wybierasz kryteria z pól dostępnych w Admin API, a aplikacja Flow ocenia je na podstawie wartości zwróconej dla Twojego sklepu.

Aplikacja Flow obsługuje następujące rodzaje danych:

  • Float: Wartości typu float to liczby z częścią dziesiętną. Na przykład: 4,25.
  • Integer: Wartości typu integer to liczby całkowite, które nie mają części dziesiętnej. Na przykład: 42.
  • Data: Wartości typu data to numeryczna reprezentacja daty. Na przykład: 01012021.
  • String: Wartości typu string to tekst. W porównaniach z użyciem wartości typu string nie jest rozróżniana wielkość liter.
  • Boolean: Wartości typu boolean to prawda lub fałsz.
  • Enum: Wartości typu enum to zbiory danych, które pozwalają zmiennej przyjąć wartość z predefiniowanego zbioru stałych.

Operatory logiczne

Operatory logiczne definiują sposób zastosowania warunku. Warunki mogą sprawdzać proste właściwości, np. czy łączna kwota zamówienia przekracza określoną sumę lub czy klient wyraża zgodę na marketing. Operatory logiczne mogą również sprawdzać bardziej złożone właściwości.

Operatory mogą być operatorami na poziomie pola, takimi jak równy lub różny od, albo operatorami listy, takimi jak co najmniej jeden z lub żaden z.

Operatory na poziomie pola

Operatory na poziomie pola służą do porównywania dwóch wartości. Aplikacja Flow może używać następujących operatorów:

Lista operatorów na poziomie pola dostępnych w aplikacji Shopify Flow.
OperatorOpisPrzykład
Równy Porównuje wartości w celu sprawdzenia, czy są takie same. Wartość order.currentTotalDiscountsSet.shopMoney.amount jest pobierana z danych Twojego sklepu i porównywana z drugą wartością, wynoszącą 50.

Jeśli łączna kwota rabatów zamówienia wynosi dokładnie 50, warunek jest spełniony.
Różny od Porównuje wartości w celu sprawdzenia, czy nie są takie same. Wartość order.currentTotalDiscountsSet.shopMoney.amount jest pobierana z danych Twojego sklepu i porównywana z drugą wartością, wynoszącą 50.

Jeśli łączna kwota rabatów zamówienia nie wynosi dokładnie 50, warunek jest spełniony.
Większy niż i Większy lub równy Porównuje wartości w celu sprawdzenia, czy pierwsza wartość jest większa lub większa bądź równa drugiej wartości. Wartość order.currentTotalDiscountsSet.shopMoney.amount jest pobierana z danych Twojego sklepu i porównywana z drugą wartością, wynoszącą 50.

Jeśli łączna kwota rabatów zamówienia wynosi 137, warunek jest spełniony, ponieważ 137 jest wartością większą niż 50.
Mniejszy niż i Mniejszy lub równy Porównuje wartości w celu sprawdzenia, czy pierwsza wartość jest mniejsza lub mniejsza bądź równa drugiej wartości. Wartość order.currentTotalDiscountsSet.shopMoney.amount jest pobierana z danych Twojego sklepu i porównywana z drugą wartością, wynoszącą 50.

Jeśli łączna kwota rabatów zamówienia wynosi 47, warunek jest spełniony, ponieważ 47 to wartość mniejsza lub równa 50.
Co najmniej jeden z Sprawdza, czy pole jest równe dowolnej wartości z podanej listy. Wartości należy wprowadzać pojedynczo i zatwierdzać klawiszem Enter (podobnie jak tagi). Użycie dla pustej tablicy daje wynik fałszywy. Wartość order.lineitem.product.title jest porównywana do: pineapple, guava, kiwi.

Jeśli tytuł produktu na pozycji pojedynczej to guava, warunek jest spełniony, ponieważ ciąg „guava” znajduje się na podanej przez Ciebie liście.
Żaden z Sprawdza, czy pole nie jest równe żadnej z wartości na podanej liście. Wartość order.lineitem.product.title jest porównywana do: pineapple, guava, kiwi.

Jeśli tytuł produktu na pozycji pojedynczej to raspberry, warunek jest spełniony, ponieważ ciąg „raspberry” nie znajduje się na podanej przez Ciebie liście.
Zawiera Porównuje wartości, aby sprawdzić, czy pierwsza z nich zawiera drugą. Wartość order.lineitem.product.title jest porównywana do: berry.

Jeśli tytuł produktu na pozycji pojedynczej to strawberry, warunek jest spełniony, ponieważ ciąg „berry” zawiera się w „strawberry”.
Nie zawiera Porównuje wartości, aby sprawdzić, czy pierwsza z nich nie zawiera drugiej. Wartość order.lineitem.product.title jest porównywana do: berry.

Jeśli tytuł produktu na pozycji pojedynczej to apple, warunek jest spełniony, ponieważ „berry” nie zawiera się w słowie „apple”.
Zaczyna się od Porównuje wartości, aby sprawdzić, czy pierwsza wartość zaczyna się od drugiej. Wartość order.shippingAddress.country jest porównywana do: United.

Jeśli kraj adresu wysyłki zamówienia to United Kingdom, warunek jest spełniony, ponieważ ciąg „United Kingdom” zaczyna się od „United”.
Nie zaczyna się od Porównuje wartości, aby sprawdzić, czy pierwsza wartość nie zaczyna się od drugiej. Wartość order.shippingAddress.country jest porównywana do: United.

Jeśli kraj adresu wysyłki zamówienia to Canada, warunek jest spełniony, ponieważ ciąg „United Kingdom” nie zaczyna się od „Canada”.
Kończy się na Porównuje wartości, aby sprawdzić, czy pierwsza wartość kończy się na drugiej. Wartość order.lineitems.product.title jest porównywana do: pie.

Jeśli tytuł produktu na pozycji pojedynczej to key lime pie, warunek jest spełniony, ponieważ „key lime pie” kończy się na „pie”.
Nie kończy się na Porównuje wartości, aby sprawdzić, czy pierwsza wartość nie kończy się na drugiej. Wartość order.lineitems.product.title jest porównywana do: pie.

Jeśli tytuł produktu na pozycji pojedynczej to chocolate cake, warunek jest spełniony, ponieważ „chocolate cake” nie kończy się na „pie”.

Operatory null lub puste

Lista operatorów null i pustych w warunkach aplikacji Shopify Flow.
OperatorOpisWarunek Prawda/Fałsz
Puste lub nie istniejeSprawdza, czy pole jest puste (nie ma wartości) lub nie istnieje (ma wartość null). Zwraca wartość prawda, gdy pole jest puste lub ma wartość null, i fałsz, jeśli jest obecne.
Nie jest puste i istniejeSprawdza, czy pole jest obecne i nie jest puste ani nie ma wartości null. Zwraca wartość prawda, gdy pole nie jest puste i istnieje, oraz fałsz, gdy jest puste.

Operatory list

Operatory list są łączone z operatorami na poziomie pola, aby umożliwić sprawdzanie warunków dla danych zawartych na listach.

Podobnie jak w przykładzie „co najmniej jeden”, możesz chcieć sprawdzić, czy zamówienie zawiera określony produkt (znajdujący się w order.lineItems) z określonym tagiem (lista w order.lineItems.product.tags). W obu przypadkach w przykładzie użyto operatora listy co najmniej jeden z.

Flow udostępnia 3 operatory do pracy z listami: Co najmniej jeden z, Żaden z i Wszystkie z.

Tabela operatorów list w warunkach aplikacji Shopify Flow.
OperatorOpisPrzykładowe użycie
Co najmniej jeden zSprawdza, czy jakakolwiek pozycja na liście spełnia określony warunek.

Zwraca true, jeśli jakakolwiek pozycja na liście go spełnia. Jeśli lista jest pusta lub żadna pozycja go nie spełnia, zwraca false.
Sprawdź, czy zamówienie zawiera produkt z określonym tagiem, używając warunku Co najmniej jeden z tagów produktu pozycji pojedynczych zamówienia jest równy nazwie_tagu.
Żaden zSprawdza, czy żadna z pozycji na liście nie spełnia określonego warunku.

Zwraca true, jeśli żadna z pozycji nie spełnia warunku. Jeśli lista jest pusta, zwraca true.
Sprawdź, czy produkt nie ma tagu presale, używając None of product tags is equal to presale.

Częstym błędem jest próba zanegowania operatora przez użycie is not equal to. Zastosowanie takiego podwójnego zaprzeczenia – None of product tags is not equal to presale – sprawia, że warunek staje się trudny do zrozumienia i nieprawidłowy.
Wszystkie zSprawdza, czy wszystkie pozycje na liście spełniają określony warunek.

Zwraca true, jeśli każda pozycja na liście spełnia warunek.
Sprawdź, czy dla wszystkich pozycji w zamówieniu dostawcą produktu jest Acme, używając warunku Wszystkie pozycje pojedyncze zamówienia mają dostawcę produktu równego Acme.

Kolejność warunków

Możesz tworzyć workflow, które mają wiele warunków, z których każdy może skutkować innymi działaniami. Kolejność warunków ma znaczenie. Sprawdzanie warunków rozpoczyna się na początku workflow i przechodzi systematycznie przez każdy warunek. Sprawdzanie kończy się, gdy warunek zostanie spełniony.

Ten przykład wykorzystuje wiele warunków do sprawdzenia, czy klient kwalifikuje się do programu lojalnościowego na podstawie łącznej kwoty wydanej w sklepie. Warunki są sprawdzane w kolejności, w jakiej są wyświetlane:

  1. Jeśli łączna cena jest wyższa niż 1000 $, a klient wyraża zgodę na otrzymywanie materiałów marketingowych, oznacz go tagiem Gold.
  2. Jeśli łączna cena jest niższa niż 1000 $, ale wyższa niż 500 $, a klient wyraża zgodę na otrzymywanie materiałów marketingowych, oznacz go tagiem Silver.
  3. Jeśli łączna cena jest niższa niż 500 $, ale wyższa niż 200 $, a klient wyraża zgodę na otrzymywanie materiałów marketingowych, oznacz go tagiem Bronze.

Przykład workflow, który sprawdza łączną kwotę wydatków klienta i dodaje tagi

Łączenie wielu kryteriów w jednym warunku

Podczas tworzenia warunku można ustawić kilka kryteriów. Możesz wybrać, w jaki sposób te oddzielne kryteria mają być połączone, aby określić, czy cały warunek jest prawdziwy, czy fałszywy.

Jeśli spełnione są wszystkie kryteria

Wybranie opcji AND daje wynik „prawda” tylko wtedy, gdy każde ustawione kryterium jest prawdziwe.

Na przykład tworzysz workflow w celu oznaczania tagami klientów, którzy mieszkają w Kanadzie i wydają ponad 500 $ na jedno zamówienie.

Przykład przepływu pracy z użyciem warunku AND

Przepływ pracy przypisuje tag klientowi tylko wtedy, gdy klient znajduje się w Kanadzie, a wartość jego zamówienia przekracza 500 USD. Jeśli którykolwiek z tych warunków nie jest spełniony, tag nie jest przypisywany do klienta.

Gdy spełnione jest dowolne kryterium

Wybranie opcji OR daje wynik „prawda”, jeśli co najmniej jedno z ustawionych kryteriów jest spełnione.

Załóżmy na przykład, że tworzysz przepływ pracy w celu tagowania zamówień, dla których rekomendacja dotycząca ryzyka to Anuluj lub Zbadaj. Zamówienie zostanie otagowane, o ile co najmniej jeden z tych warunków jest spełniony.

Przykład przepływu pracy z użyciem warunku OR

Dane statyczne i dynamiczne w warunkach

Zazwyczaj druga wartość w warunku jest statyczna, wprowadzana ręcznie (np. product.title == „twój tytuł”). Wartość ta pozostaje taka sama przy każdym uruchomieniu przepływu pracy.

Możesz także używać wartości dynamicznych, jeśli pole drugiej wartości wyświetla ikonę Edytuj kod. Wartości dynamiczne są pobierane z danych sklepu przy każdym uruchomieniu przepływu pracy. Aby użyć wartości dynamicznej, kliknij ikonę Edytuj kod i wybierz wartość, z którą chcesz ją porównać. Wartości dynamiczne nie są dostępne dla wszystkich pól.

Załóżmy na przykład, że tworzysz przepływ pracy, który przypisuje tag do zamówienia, jeśli kraj w adresie rozliczeniowym zamówienia jest taki sam jak kraj w jego adresie wysyłki.

Przykład przepływu pracy, który taguje zamówienie, wykorzystując dane dynamiczne do sprawdzenia, czy kraj rozliczeniowy i kraj wysyłki klienta są takie same.

W tym przykładzie zarówno pierwsza, jak i druga wartość są pobierane z danych sklepu, zamiast ręcznego określania statycznego ciągu znaków dla drugiej wartości do porównania. Jeśli kraj w adresie rozliczeniowym podanym przez klienta jest taki sam jak kraj podany w adresie wysyłki, warunek jest spełniony, a do zamówienia zostaje przypisany tag.

Czasami może być konieczne użycie danych dynamicznych o nieprawidłowym typie. Na przykład może zaistnieć potrzeba porównania liczby zapisanej jako ciąg znaków z inną liczbą. W takim przypadku można użyć opcji Uruchom kod, aby przekonwertować dane na właściwy typ.

Szablony

Większość szablonów w bibliotece szablonów zawiera warunek.

Przykładowe warunki

Sprawdź, czy co najmniej jedna pozycja na liście spełnia warunek

Ten przykład pokazuje typowy warunek, który sprawdza, czy co najmniej jedna pozycja na liście jest zgodna z określoną wartością.

W tym przypadku warunek sprawdza, czy jeden z produktów w zamówieniu ma tag przedsprzedaż. Aby utworzyć ten warunek, wybierz ścieżkę zamówienie / lineItems / produkt / tagi. Domyślnie aplikacja Flow wybiera operator logiczny co najmniej jeden z:

Przykład panelu konfiguracji warunku, pokazujący sprawdzanie co najmniej jednego tagu produktu.

Części co najmniej jeden z to operatory listy, które służą do dopasowywania wielu pozycji na liście. Część jest równe to operator na poziomie pola, który określa, czy pojedyncza pozycja na liście jest zgodna.

Sprawdź, czy żaden z elementów na liście nie spełnia warunku

Ten przykład pokazuje typowy warunek, który sprawdza, czy żaden z elementów na liście nie pasuje do określonej wartości. Częstym problemem, który należy wziąć pod uwagę, jest to, że listy mogą być puste. Gdy lista jest pusta, warunek jest obsługiwany przez operator listy (w tym przypadku żaden z).

W tym przypadku warunek sprawdza, czy żaden z tagów produktu nie jest równy foo:

Przykład panelu konfiguracji warunku, pokazujący sprawdzenie dla opcji „żaden z” tagu produktu.

Warunek zwróci wartość true, jeśli (1) nie ma żadnych tagów produktu lub (2) żaden z tagów nie jest równy foo. W przeciwnym razie zwróci wartość false.

Sprawdź, czy pozycja na liście spełnia wiele kryteriów

Ten przykład pokazuje typowy warunek, który sprawdza, czy co najmniej jedna pozycja na liście spełnia dwa oddzielne kryteria.

W tym przypadku warunek sprawdza, czy jeden z produktów w zamówieniu ma tag przedsprzedaż i czy jego productType ma wartość odzież.

Przykład panelu konfiguracji warunku, pokazujący sprawdzenie co najmniej jednego tagu produktu i productType.

Aby utworzyć ten warunek:

  1. Wybierz ścieżkę zamówienie / lineItems / produkt / tagi dla pierwszego kryterium.
  2. Wybierz opcję Dodaj kryteria dla tej samej pozycji na liście lineItems. Uwaga: Wybranie niewłaściwej pozycji listy w tym miejscu jest częstym błędem.
  3. Wybierz lineItems_item jako obiekt najwyższego poziomu, a następnie produkt / productType` dla drugiego kryterium. Uwaga: Wybranie niewłaściwego obiektu w tym miejscu jest również częstym błędem.
  4. Wybierz opcję AND, aby połączyć oba kryteria.
  5. Wprowadź wartości przedsprzedaż i odzież dla obu kryteriów.