Условия в Shopify Flow

Условията продължават даден работен процес, когато са изпълнени определени правила, като например началото на оператор „ако-тогава“. Когато задавате условие, Вие избирате критерии от полета в GraphQL Admin API (като например product.title), логически оператор (като например равно на) и стойност за сравнение (като например Сини дънки). Когато даден работен процес оценява условие, Flow проверява стойността, дефинирана в работния процес, спрямо стойността, върната за Вашия магазин, след което показва резултатите в изпълнението на работния процес. За да разберете по-добре полетата и стойностите, налични за дефиниране на условия, научете как да преглеждате данните от магазина.

Научете повече за основите на условията.

Типове данни, използвани с Flow

Когато задавате условие, Вие избирате критерий от полетата, налични в Admin API, и Flow го оценява спрямо стойността, върната за Вашия магазин.

Flow поддържа следните видове данни:

  • Float: Стойностите от тип Float са числа с десетична дроб. Например 4,25.
  • Integer: Стойностите от тип Integer са цели числа, които нямат десетична дроб. Например 42.
  • Date: Стойностите от тип Date са числово представяне на датата. Например 01012021.
  • String: Стойностите от тип низ (string) са текст. Сравненията, използващи стойности от тип низ, не са чувствителни към регистъра.
  • Boolean: Булевите стойности са „вярно“ или „невярно“.
  • Enum: Стойностите от тип Enum (изброим тип) са набори от данни, които позволяват на една променлива да бъде набор от предварително дефинирани константи.

Логически оператори

Логическите оператори дефинират как се прилага Вашето условие. Условията могат да проверяват прости свойства, като например дали общата сума на дадена поръчка е над определена стойност или дали даден клиент приема маркетинг. Логическите оператори могат също да проверяват и по-сложни свойства.

Операторите могат да бъдат или оператори на ниво поле, като например равно на или не е равно на, или оператори за списъци, като например поне един от или нито един от.

Оператори на ниво поле

Операторите на ниво поле се използват за сравняване на 2 стойности. Flow може да използва следните оператори:

Списък на операторите на ниво поле, налични в Shopify Flow.
ОператорОписаниеПример
Равно на Сравнява стойности, за да провери дали са еднакви. Стойността за order.currentTotalDiscountsSet.shopMoney.amount се извлича от данните на Вашия магазин и се сравнява с втората стойност, 50.

Ако общите отстъпки на поръчката са точно равни на 50, тогава условието е вярно.
Не е равно на Сравнява стойности, за да провери дали не са еднакви. Стойността за order.currentTotalDiscountsSet.shopMoney.amount се извлича от данните на Вашия магазин и се сравнява с втората стойност, 50.

Ако общите отстъпки на поръчката не са точно равни на 50, тогава условието е вярно.
По-голямо от и По-голямо или равно на Сравнява стойности, за да провери дали първата стойност е по-голяма от или по-голяма или равна на втората стойност. Стойността за order.currentTotalDiscountsSet.shopMoney.amount се извлича от данните на Вашия магазин и се сравнява с втората стойност, 50.

Ако стойността на общите отстъпки на поръчката е 137, тогава условието е вярно, тъй като 137 е по-голямо от 50.
По-малко от и По-малко или равно на Сравнява стойности, за да провери дали първата стойност е по-малка от или по-малка или равна на втората стойност. Стойността за order.currentTotalDiscountsSet.shopMoney.amount се извлича от данните на Вашия магазин и се сравнява с втората стойност, 50.

Ако общите отстъпки на поръчката са 47, тогава условието е вярно, тъй като 47 е по-малко или равно на 50.
Поне един от Проверява дали полето е равно на някоя стойност в предоставения списък. Стойностите трябва да се въвеждат поотделно, като след всяка се натиска клавиш Enter (подобно на тагове). Използването върху празен масив води до оценка „невярно“. Стойността за order.lineitem.product.title се сравнява с: pineapple, guava, kiwi.

Ако наименованието на продукта на реда е guava, тогава условието е вярно, тъй като „guava“ е включено в предоставения от Вас списък.
Нито един от Проверява дали полето не е равно на никоя от стойностите в предоставения списък. Стойността за order.lineitem.product.title се сравнява с: pineapple, guava, kiwi.

Ако наименованието на продукта на реда е raspberry, тогава условието е вярно, тъй като „raspberry“ не е включено в предоставения от Вас списък.
Включва Сравнява стойности, за да провери дали първата стойност съдържа втората. Стойността за order.lineitem.product.title се сравнява с: berry.

Ако наименованието на продукта на реда е strawberry, тогава условието е вярно, тъй като „berry“ се съдържа в „strawberry“.
Не включва Сравнява стойности, за да провери дали първата стойност не съдържа втората. Стойността за order.lineitem.product.title се сравнява с: berry.

Ако наименованието на продукта за реда е apple, тогава условието е вярно, защото „berry“ не се съдържа в „apple“.
Започва с Сравнява стойности, за да провери дали първата стойност започва с данните във втората стойност. Стойността за order.shippingAddress.country се сравнява с: United.

Ако държавата в адреса за доставка на поръчката е United Kingdom, тогава условието е вярно, защото „United Kingdom“ започва с „United“.
Не започва с Сравнява стойности, за да провери дали първата стойност не започва с данните във втората стойност. Стойността за order.shippingAddress.country се сравнява с: United.

Ако държавата в адреса за доставка на поръчката е Canada, тогава условието е вярно, защото „United Kingdom“ не започва с „Canada“.
Завършва с Сравнява стойности, за да провери дали първата стойност завършва с данните във втората стойност. Стойността за order.lineitems.product.title се сравнява с: pie.

Ако наименованието на продукта за реда е key lime pie, тогава условието е вярно, защото „key lime pie“ завършва на „pie“.
Не завършва с Сравнява стойности, за да провери дали първата стойност не завършва с данните във втората стойност. Стойността за order.lineitems.product.title се сравнява с: pie.

Ако наименованието на продукта за реда е chocolate cake, тогава условието е вярно, защото „chocolate cake“ не завършва на „pie“.

Оператори за null или празна стойност

Списък на оператори за празна или null стойност в условията на Shopify Flow.
ОператорОписаниеБулево условие
Празно или не съществуваПроверява дали дадено поле е празно (няма стойност) или не съществува (е null). Връща true, когато полето е празно или null, и false, ако има стойност.
Не е празно и съществуваПроверява дали дадено поле има стойност и не е празно или null. Връща true, когато полето не е празно и съществува, и false, когато е празно.

Оператори за списъци

Операторите за списъци се комбинират с оператори на ниво поле, за да Ви позволят да проверявате условия за данни, включени в списъци.

Както в примера „поне един“, може да искате да проверите дали дадена поръчка съдържа конкретен продукт (намиращ се в order.lineItems) с конкретен таг (списък под order.lineItems.product.tags). И в двата случая примерът използва оператора за списъци поне един от.

Flow предоставя 3 оператора за работа със списъци: Поне един от, Нито един от и Всички от.

Таблица на операторите за списъци в условията на Shopify Flow.
ОператорОписаниеПримерна употреба
Поне един отПроверява дали някой от елементите в списъка отговаря на посоченото условие.

Връща true, ако има съвпадащ елемент в списъка. Ако списъкът е празен или няма съвпадащи елементи, връща false.
Проверете дали дадена поръчка съдържа продукт с конкретен таг, като използвате At least one of order line items.product.tags is equal to tagname.
Нито един отПроверява дали нито един от елементите в списъка не отговаря на посоченото условие.

Връща true, ако нито един от елементите не отговаря на условието. Ако списъкът е празен, връща true.
Проверете дали продуктът няма етикет presale, като използвате Нито един от етикетите на продукта не е равен на presale.

Честа грешка е да се опитате да обърнете оператора чрез не е равно на. Използването на това двойно отрицание, Нито един от етикетите на продукта не е равно на presale, прави условието както трудно за разбиране, така и невалидно.
Всички отПроверява дали всички елементи в списъка отговарят на посоченото условие.

Връща true, ако всеки елемент в списъка отговаря на условието.
Проверете дали всички артикули в дадена поръчка имат конкретен доставчик на продукт, наречен Acme, като използвате All of order line items have a product.vendor equal to Acme.

Подреждане на условията

Можете да създавате работни процеси, които имат множество условия, всяко от които може да доведе до различни действия. Редът на условията има значение. Проверката на условията започва от началото на работния процес и преминава систематично през всяко условие. Проверката спира, когато е изпълнено дадено условие.

Този пример използва множество условия, за да провери дали даден клиент отговаря на условията за програма за лоялност въз основа на общата сума, която е похарчил в магазина. Условията се проверяват в реда, в който са показани:

  1. Ако общата цена е по-голяма от 1 000 $ и клиентът е съгласен да получава маркетингови съобщения, тогава го етикетирайте с таг Gold.
  2. Ако общата цена е по-малка от 1 000 $, но по-голяма от 500 $, и клиентът е съгласен да получава маркетингови съобщения, тогава го етикетирайте с таг Silver.
  3. Ако общата цена е по-малка от 500 $, но по-голяма от 200 $, и клиентът е съгласен да получава маркетингови съобщения, тогава го етикетирайте с таг Bronze.

Пример за работен процес, който проверява общата похарчена сума от клиент и добавя тагове

Комбиниране на множество критерии в едно условие

Когато изграждате условие, можете да зададете няколко критерия. Можете да изберете как тези отделни критерии да бъдат комбинирани, за да се определи дали цялостното условие е вярно или невярно.

Когато всички критерии са изпълнени

Избирането на И води до верен отговор само ако всеки зададен от Вас критерий е верен.

Например, създавате работен процес за етикетиране на клиенти, които се намират в Канада и харчат повече от 500 $ за една поръчка.

Пример за работен процес, който използва условието „и“

Работният процес етикетира клиента, само ако клиентът се намира в Канада и похарчи повече от 500 $ в поръчката. Ако някое от тези условия е невярно, клиентът не се етикетира.

Ако е изпълнен някой от критериите

Избирането на „ИЛИ“ връща стойност „вярно“, ако поне един от зададените от Вас критерии е верен.

Например създавате работен процес за етикетиране на поръчки с препоръка за риска „Отказ“ или „Проучване“. Докато едно от тези условия е вярно, поръчката се етикетира.

Пример за работен процес, който използва условието „или“

Статични и динамични данни в условията

Обикновено втората стойност в дадено условие е статична, въведена ръчно стойност (например product.title == „Вашето заглавие“). Тази стойност остава същата при всяко изпълнение на работния процес.

Можете също така да използвате динамични стойности, ако в полето за втората стойност се показва икона Редактиране на код. Динамичните стойности се извличат от данните на магазина Ви при всяко изпълнение на работния процес. За да използвате динамична стойност, кликнете върху иконата Редактиране на код и изберете стойността, спрямо която искате да извършите проверката. Динамичните стойности не са налични за всички полета.

Например създавате работен процес, който етикетира поръчка, ако държавата в адреса за фактуриране на поръчката съвпада с държавата в адреса ѝ за доставка.

Пример за работен процес, който етикетира поръчка, използвайки данни от дясната страна (RHS), за да провери дали държавата за фактуриране и доставка на клиента е една и съща.

В този пример и първата, и втората стойност се извличат от данните на Вашия магазин, вместо ръчно да се указва статичен низ за проверка за втората стойност. Ако държавата в адреса за фактуриране, предоставен от клиента, е същата като държавата, която клиентът е предоставил в адреса за доставка, тогава условието е вярно и поръчката се етикетира.

Понякога може да се наложи да използвате динамични данни от грешен тип. Например може да се наложи да сравните число, съхранено като низ, с друго число. В този случай можете да използвате опцията Run code, за да конвертирате данните в правилния тип.

Шаблони

Повечето шаблони в template library съдържат условие.

Примерни условия

Проверка дали поне един артикул в списък отговаря на условие

Този пример показва типично условие, което проверява дали поне един артикул в списък съответства на определена стойност.

В този случай условието проверява дали един от продуктите в дадена поръчка има таг presale. За да изградите това условие, трябва да изберете order / lineItems / product / tags. По подразбиране Flow избира „поне един от“ като логически оператор:

Пример за конфигурационен панел на условие, показващ проверка за поне един етикет на продукт.

Частите „поне един от“ са list operators и се използват за обработка на съвпадения в множество артикули от списък. Частта „е равно на“ е field-level operator, който определя дали отделен артикул от списъка съвпада.

Проверка дали никой от артикулите в списък не отговаря на условие

Този пример показва типично условие, което проверява дали нито един от артикулите в списъка не съответства на определена стойност. Един често срещан проблем, който трябва да се вземе предвид, е, че списъците могат да бъдат празни. Когато един списък е празен, условието се обработва от оператора на списъка (в този случай „нито един от“).

В този случай условието проверява дали нито един от етикетите на продукта не е равен на foo:

Пример за конфигурационен панел на условие, показващ проверка за „нито един“ етикет на продукт.

Условието ще върне true, ако (1) няма етикети на продукти или (2) нито един от таговете не е foo. В противен случай ще върне false.

Проверка дали артикул в списък отговаря на няколко критерия

Този пример показва типично условие, което проверява дали поне един артикул в списък отговаря на два отделни критерия.

В този случай условието проверява дали един от продуктите в дадена поръчка има таг presale и дали има productType clothing.

Пример за конфигурационен панел на условие, показващ проверка за поне един етикет на продукт и productType.

За да изградите това условие, трябва да:

  1. Изберете order / lineItems / product / tags за първия критерий.
  2. Изберете „Добавяне на критерии за същия артикул“ в списъка lineItems. Забележка: Избирането на грешен артикул от списъка тук е често срещана грешка.
  3. Изберете lineItems_item като обект от най-високо ниво и след това product / productType за втория критерий. Забележка: Избирането на грешен обект тук също е често срещана грешка.
  4. Изберете „И“, за да комбинирате двата критерия.
  5. Въведете стойностите presale и clothing за двата критерия.