Умови в Shopify Flow
Умови продовжують робочий процес після виконання певних правил, наприклад, початку оператора «якщо–тоді». Установлюючи умову, ви вибираєте критерії з полів у GraphQL Admin API (наприклад, product.title), логічний оператор (наприклад, дорівнює) і значення для перевірки (наприклад, сині джинси). Коли робочий процес оцінює умову, Flow порівнює значення, визначене в робочому процесі, зі значенням, повернутим для вашого магазину, а потім відображає результати в запуску робочого процесу. Щоб краще зрозуміти поля та значення, доступні для визначення умов, дізнайтеся, як переглядати дані магазину.
Дізнайтеся більше про основи умов.
На цій сторінці
Типи даних, які використовуються у Flow
Установлюючи умову, ви вибираєте критерій із доступних полів в Admin API, а Flow оцінює його відносно значення, повернутого для вашого магазину.
Flow підтримує такі типи даних:
- Число з плаваючою комою (Float): значення типу Float — це числа з десятковою частиною. Наприклад, 4,25.
- Ціле число (Integer): значення типу Integer — це цілі числа, які не мають десяткової частини. Наприклад, 42.
- Дата (Date): значення типу Date — це числове подання дати. Наприклад, 01012021.
- Рядок (String): рядкові значення — це текст. Порівняння з використанням рядкових значень не чутливі до регістру.
- Логічне значення (Boolean): логічні значення можуть бути істинними (true) або хибними (false).
- Перелічуваний тип (Enum): значення типу Enum — це набори даних, які дають змогу змінній бути набором попередньо визначених констант.
Логічні оператори
Логічні оператори визначають, як застосовується ваша умова. Умови можуть перевіряти прості властивості, наприклад, чи перевищує загальна сума замовлення певну суму, або чи погоджується клієнт на отримання маркетингових матеріалів. Логічні оператори також можуть перевіряти складніші властивості.
Оператори можуть бути операторами рівня поля, як-от дорівнює або не дорівнює, чи операторами списку, як-от щонайменше одне з або жодне з.
Оператори рівня поля
Оператори рівня поля використовуються для порівняння 2 значень. У 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, умова є істинною, оскільки «strawberry» містить «berry». |
| Не містить | Порівнює значення, щоб перевірити, чи перше введене значення не містить даних з другого введеного значення. |
Значення для order.lineitem.product.title порівнюється з: berry.Якщо назва товару для позиції — apple, умова є істинною, оскільки «apple» не містить «berry». |
| Починається з | Порівнює значення, щоб перевірити, чи перше значення починається з даних у другому значенні. |
Значення для 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). |
Повертає true, якщо поле пусте або має значення null, і false, якщо воно заповнене.
|
| Не пусте та існує | Перевіряє, чи поле наявне та не є пустим або null. | Повертає true, якщо поле не пусте та існує, і false, якщо воно пусте. |
Оператори списку
Оператори списку поєднуються з операторами рівня поля, щоб ви могли перевіряти умови для даних, що містяться у списках.
Як у прикладі з умовою «принаймні один», вам може знадобитися перевірити, чи містить замовлення певний товар (знаходиться в order.lineItems) із певним тегом (список у order.lineItems.product.tags). В обох випадках у прикладі використовується оператор списку at least one of.
Flow надає 3 оператори для роботи зі списками: Принаймні один із, Жоден із та Усі з.
| Оператор | Опис | Приклад використання |
|---|---|---|
| Щонайменше одне з | Перевіряє, чи будь-який елемент у списку відповідає вказаній умові. Повертає true, якщо хоча б один елемент у списку відповідає умові. Якщо список пустий або жоден елемент не відповідає умові, повертає false. | Перевірте, чи містить замовлення товар із певним тегом, використовуючи At least one of order line items.product.tags is equal to tagname. |
| Жоден із | Перевіряє, чи жоден з елементів у списку не відповідає вказаній умові. Повертає true, якщо жоден з елементів не відповідає умові. Якщо список пустий, повертає true. | Перевірте, чи не має товар тегу presale, використовуючи None of product tags is equal to presale.Поширена помилка — намагатися заперечити оператор за допомогою is not equal to (не дорівнює). Використання цього подвійного заперечення, None of product tags is not equal to presale, робить умову складною для розуміння та недійсною.
|
| Усі з | Перевіряє, чи всі елементи у списку відповідають указаній умові. Повертає true, якщо кожен елемент у списку відповідає умові. | Перевірте, чи всі позиції в замовленні мають певного підрядника товару з назвою Acme, використовуючи All of order line items have a product.vendor equal to Acme. |
Порядок умов
Ви можете створювати робочі процеси, які мають кілька умов, кожна з яких може призводити до різних дій. Порядок умов має значення. Перевірка умов починається на початку робочого процесу й послідовно проходить через кожну умову. Перевірка зупиняється, коли умова виконується.
У цьому прикладі використовується кілька умов, щоб перевірити, чи має клієнт право на участь у програмі лояльності, на основі загальної суми, яку він витратив у магазині. Умови перевіряються в тому порядку, у якому вони відображаються:
- Якщо загальна ціна перевищує 1000 доларів США і клієнт погоджується отримувати маркетингові матеріали, додайте йому тег
Gold. - Якщо загальна ціна менша за 1000 доларів США, але більша за 500 доларів США, і клієнт погоджується отримувати маркетингові матеріали, додайте йому тег
Silver. - Якщо загальна ціна менша за 500 доларів США, але більша за 200 доларів США, і клієнт погоджується отримувати маркетингові матеріали, додайте йому тег
Bronze.

Поєднання кількох критеріїв в одній умові
Створюючи умову, ви можете встановити кілька критеріїв. Ви можете вибрати, як ці окремі критерії мають поєднуватися, щоб визначити, чи є загальна умова істинною або хибною.
Якщо всі критерії виконуються
Вибір AND дає істинний результат, лише якщо кожен встановлений вами критерій є істинним.
Наприклад, ви створюєте робочий процес, щоб додавати тег клієнтам, які перебувають у Канаді та витрачають понад 500 доларів США на одне замовлення.

Робочий процес додає тег клієнту, лише якщо клієнт перебуває в Канаді та витрачає понад 500 доларів США в замовленні. Якщо будь-яка з цих умов є хибною, тег клієнту не додається.
Якщо виконується будь-який критерій
Вибір OR дає істинний результат, якщо хоча б один із встановлених вами критеріїв є істинним.
Наприклад, ви створюєте робочий процес для додавання тегу замовленням із рекомендацією щодо ризику Скасувати або Розслідувати. Якщо хоча б одна з цих умов є істинною, замовленню додається тег.

Статичні та динамічні дані в умовах
Зазвичай друге значення в умові є статичним, введеним вручну (наприклад, product.title == "your title"). Це значення залишається незмінним під час кожного запуску робочого процесу.
Ви також можете використовувати динамічні значення, якщо біля поля для другого значення відображається значок . Динамічні значення беруться з даних вашого магазину під час кожного запуску робочого процесу. Щоб використати динамічне значення, натисніть значок
і виберіть значення, з яким потрібно виконати порівняння. Динамічні значення доступні не для всіх полів.
Наприклад, ви створюєте робочий процес, який додає тег замовленню, якщо країна в платіжній адресі замовлення збігається з країною в адресі доставки.

У цьому прикладі як перше, так і друге значення беруться з даних вашого магазину, замість того, щоб вказувати вручну статичний рядок для перевірки як друге значення. Якщо країна в платіжній адресі, указаній клієнтом, збігається з країною в адресі доставки клієнта, умова є істинною, і замовленню додається тег.
Іноді вам може знадобитися використати динамічні дані неправильного типу. Наприклад, може бути потрібно порівняти число, збережене як рядок, з іншим числом. У цьому випадку ви можете скористатися опцією Виконати код, щоб конвертувати дані в правильний тип.
Шаблони
Більшість шаблонів у бібліотеці шаблонів містять умову.
Приклади умов
Перевірка відповідності принаймні одного елемента списку умові
У цьому прикладі показано типову умову, яка перевіряє, чи відповідає принаймні один елемент списку певному значенню.
У цьому випадку умова перевіряє, чи має один із товарів у замовленні тег presale. Щоб створити цю умову, виберіть order / lineItems / product / tags. За замовчуванням Flow вибирає at least one of як логічний оператор:

Елементи at least one of є операторами списку і використовуються для обробки відповідності для кількох елементів списку. Елемент is equal to є оператором рівня поля, який визначає, чи відповідає один елемент списку.
Перевірка невідповідності жодного елемента списку умові
У цьому прикладі показано типову умову, яка перевіряє невідповідність жодного елемента списку певному значенню. Одна з поширених проблем, на яку слід звернути увагу, полягає в тому, що списки можуть бути порожніми. Коли список порожній, умова обробляється оператором списку (у цьому випадку — none of).
У цьому випадку умова перевіряє, чи жоден із тегів товару не дорівнює foo:

Умова поверне true, якщо (1) тегів товару немає або (2) жоден із тегів не дорівнює foo. В іншому разі вона поверне false.
Перевірка відповідності елемента списку кільком критеріям
У цьому прикладі показано типову умову, яка перевіряє, чи принаймні один елемент списку відповідає двом окремим критеріям.
У цьому випадку умова перевіряє, чи має один із товарів у замовленні тег presale і значення productType — clothing.

Щоб створити цю умову:
- Виберіть order / lineItems / product / tags для першого критерію.
- Натисніть Add criteria for same item у списку lineItems. Примітка. Вибір неправильного елемента списку в цьому випадку є поширеною помилкою.
- Виберіть lineItems_item як об’єкт верхнього рівня, а потім product / productType` для другого критерію. Примітка. Вибір неправильного об’єкта в цьому випадку також є поширеною помилкою.
- Виберіть AND, щоб об’єднати ці два критерії.
- Введіть значення
presaleтаclothingдля цих двох критеріїв.