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.
Na tej stronie
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:
| Operator | Opis | Przykł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
| Operator | Opis | Warunek Prawda/Fałsz |
|---|---|---|
| Puste lub nie istnieje | Sprawdza, 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 istnieje | Sprawdza, 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.
| Operator | Opis | Przykładowe użycie |
|---|---|---|
| Co najmniej jeden z | Sprawdza, 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 z | Sprawdza, 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 z | Sprawdza, 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:
- Jeśli łączna cena jest wyższa niż 1000 $, a klient wyraża zgodę na otrzymywanie materiałów marketingowych, oznacz go tagiem
Gold. - 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. - 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.

Łą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.

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.

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ę . Wartości dynamiczne są pobierane z danych sklepu przy każdym uruchomieniu przepływu pracy. Aby użyć wartości dynamicznej, kliknij ikonę
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.

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:

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:

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ż.

Aby utworzyć ten warunek:
- Wybierz ścieżkę zamówienie / lineItems / produkt / tagi dla pierwszego kryterium.
- 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.
- 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.
- Wybierz opcję AND, aby połączyć oba kryteria.
- Wprowadź wartości
przedsprzedażiodzieżdla obu kryteriów.