Условия в Shopify Flow
Условия продолжают рабочий процесс при соблюдении определённых правил, например в начале оператора «если-то». При настройке условия вы выбираете критерии из полей GraphQL Admin API (например, product.title), логический оператор (например, равно) и значение для проверки (например, Blue jeans). Когда рабочий процесс оценивает условие, Flow сравнивает значение, заданное в рабочем процессе, со значением, полученным от вашего магазина, и отображает результаты в отчёте о выполнении рабочего процесса. Чтобы лучше понять, какие поля и значения доступны для определения условий, узнайте, как предварительно просматривать данные магазина.
Подробнее об основах работы с условиями.
На этой странице
Типы данных, используемые в Flow
При настройке условия вы выбираете критерий из полей, доступных в Admin API, и Flow сверяет его со значением, полученным от вашего магазина.
Flow поддерживает следующие типы данных:
- Число с плавающей точкой: значения с плавающей точкой — это числа с десятичной частью. Например, 4,25.
- Целое число: целочисленные значения — это целые числа без десятичной части. Например, 42.
- Дата: значения даты — это числовое представление даты. Например, 01012021.
- Строка: строковые значения — это текст. Сравнение строковых значений не зависит от регистра.
- Логическое значение: логические значения могут быть либо истинными (true), либо ложными (false).
- Перечисление (Enum): перечисляемые значения — это наборы данных, которые позволяют переменной принимать значения из предопределённого набора констант.
Логические операторы
Логические операторы определяют, как применяется ваше условие. Условия могут проверять простые свойства, например, превышает ли общая сумма заказа определённую величину или согласен ли клиент на получение маркетинговых материалов. Логические операторы также могут проверять более сложные свойства.
Операторы могут быть операторами уровня поля, такими как «равно» или «не равно», либо операторами списков, такими как «хотя бы один из» или «ни один из».
Операторы уровня поля
Операторы уровня поля используются для сравнения двух значений. В 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). |
Возвращает true, если поле пустое или равно null, и false, если оно заполнено.
|
| Не пусто и существует | Проверяет, заполнено ли поле и не является ли оно пустым или равным null. | Возвращает true, если поле заполнено и существует; false, если оно пустое. |
Операторы списков
Операторы списков объединяются с операторами уровня поля, что позволяет проверять условия для данных, содержащихся в списках.
Как и в примере «хотя бы один», вам может понадобиться проверить, содержит ли заказ определённый товар (находится в order.lineItems) с определённым тегом (список в order.lineItems.product.tags). В обоих случаях в примере используется оператор списка хотя бы один из.
В Shopify Flow есть 3 оператора для работы со списками: Хотя бы один из, Ни один из и Все из.
| Оператор | Описание | Пример использования |
|---|---|---|
| Хотя бы один из | Проверяет, соответствует ли какой-либо элемент списка указанному условию. Возвращает true, если есть совпадение хотя бы для одного элемента. Если список пуст или совпадений нет, возвращает false. | Проверьте, содержит ли заказ товар с определённым тегом, используя условие Хотя бы один из тегов товаров в позициях заказа равен имени тега. |
| Ни один из | Проверяет, что ни один из элементов списка не соответствует указанному условию. Возвращает 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, используя условие У всех позиций заказа product.vendor равен Acme. |
Порядок условий
Вы можете создавать рабочие процессы с несколькими условиями, каждое из которых может приводить к разным действиям. Порядок условий имеет значение. Проверка условий начинается в начале рабочего процесса и последовательно проходит по каждому условию. Проверка останавливается, как только будет выполнено одно из условий.
В этом примере используется несколько условий, чтобы проверить, имеет ли клиент право на участие в программе лояльности в зависимости от общей суммы, потраченной им в магазине. Условия проверяются в том порядке, в котором они отображаются:
- Если общая сумма заказа превышает 1000 $ и клиент согласен на получение маркетинговых материалов, то ему присваивается тег
Gold. - Если общая сумма заказа меньше 1000 $, но больше 500 $, и клиент согласен на получение маркетинговых материалов, то ему присваивается тег
Silver. - Если общая сумма заказа меньше 500 $, но больше 200 $, и клиент согласен на получение маркетинговых материалов, то ему присваивается тег
Bronze.

Объединение нескольких критериев в одном условии
При создании условия можно задать несколько критериев. Вы можете выбрать, как эти отдельные критерии будут объединены, чтобы определить, является ли общее условие истинным или ложным.
Если все критерии соблюдены
Выбор AND (И) приведёт к истинному результату, только если все заданные вами критерии истинны.
Например, вы создаёте рабочий процесс для маркировки клиентов, которые находятся в Канаде и тратят более 500 $ за один заказ.

Рабочий процесс присваивает тег клиенту, только если клиент находится в Канаде и сумма его заказа превышает 500 $. Если хотя бы одно из этих условий не выполняется, тег клиенту не присваивается.
Если выполняется любой из критериев
При выборе ИЛИ результатом будет «истина», если хотя бы один из заданных критериев истинен.
Например, вы создаёте рабочий процесс для маркировки заказов с оценкой уровня риска «Отменить» или «Проверить». Если хотя бы одно из этих условий истинно, заказ маркируется тегом.

Статические и динамические данные в условиях
Обычно второе значение в условии — это статическое, введённое вручную значение (например, product.title == «ваше название»). Это значение остаётся неизменным при каждом запуске рабочего процесса.
Вы также можете использовать динамические значения, если в поле для второго значения отображается значок . Динамические значения извлекаются из данных вашего магазина при каждом запуске рабочего процесса. Чтобы использовать динамическое значение, нажмите значок
и выберите значение, с которым нужно провести сравнение. Динамические значения доступны не для всех полей.
Например, вы создаёте рабочий процесс, который маркирует заказ тегом, если страна в его адресе выставления счёта совпадает со страной в адресе доставки.

В этом примере и первое, и второе значения извлекаются из данных вашего магазина, а не задаются вручную в виде статической строки для сравнения во втором значении. Если страна, указанная клиентом в адресе для выставления счёта, совпадает со страной в адресе доставки, то условие считается истинным, и заказ маркируется тегом.
Иногда может потребоваться использовать динамические данные неверного типа. Например, вам может понадобиться сравнить число, сохранённое как строка, с другим числом. В этом случае вы можете использовать опцию «Запустить код», чтобы преобразовать данные в правильный тип.
Шаблоны
Большинство шаблонов в библиотеке шаблонов содержат условие.
Примеры условий
Проверка, соответствует ли условию хотя бы один элемент в списке
В этом примере показано типичное условие, которое проверяет, соответствует ли определённому значению хотя бы один элемент в списке.
В данном случае условие проверяет, есть ли у одного из товаров в заказе тег presale. Чтобы создать это условие, выберите order / lineItems / product / tags. По умолчанию Flow выбирает в качестве логического оператора хотя бы один из:

Выражение хотя бы один из — это оператор списка, используемый для проверки совпадений в нескольких элементах списка. Выражение равно — это оператор уровня поля, который определяет, соответствует ли условию один элемент списка.
Проверка, что ни один из элементов в списке не соответствует условию
В этом примере показано типичное условие, которое проверяет, что ни один из элементов в списке не соответствует определённому значению. Распространённая проблема, которую следует учитывать, заключается в том, что списки могут быть пустыми. Когда список пуст, условие обрабатывается оператором списка (в данном случае ни один из).
В этом случае условие проверяет, что ни один из тегов товара не равен foo:

Условие вернёт значение true, если (1) теги товара отсутствуют или (2) ни один из тегов не равен foo. В противном случае оно вернёт значение false.
Проверка, соответствует ли элемент в списке нескольким критериям
В этом примере показано типичное условие, которое проверяет, соответствует ли хотя бы один элемент в списке двум разным критериям.
В данном случае условие проверяет, есть ли у одного из товаров в заказе тег presale и одновременно тип товара (productType) clothing.

Чтобы создать это условие, выполните следующие действия:
- Выберите order / lineItems / product / tags для первого критерия.
- Выберите Добавить критерий для того же элемента в списке lineItems. Примечание: выбор неверного элемента списка на этом шаге — распространённая ошибка.
- Выберите lineItems_item в качестве объекта верхнего уровня, а затем product / productType` для второго критерия. Примечание: выбор неверного объекта на этом шаге — также распространённая ошибка.
- Выберите И, чтобы объединить два критерия.
- Введите значения
presaleиclothingдля двух критериев.