Оптимизиране на Вашите работни процеси в Shopify Flow
Когато създавате работен процес, трябва да се уверите, че той се изпълнява възможно най-ефективно. Този документ описва сценарии, които могат да доведат до ограничаване на работните Ви процеси или до изчерпване на лимитите на API, както и съвети как да разрешите или заобиколите тези проблеми.
На тази страница
Често срещани проблеми с ефективността
Този раздел описва често срещани сценарии, които могат да причинят проблеми с ефективността на Вашите работни процеси. Възможно е да има повече от един сценарий едновременно, което би увеличило вероятността да наблюдавате проблеми с ефективността. За грешки, свързани с конфигурацията на редактора или ограничаването на честотата, използвайте ръководството за отстраняване на неизправности.
Тригери с голям обем
Тригери с голям обем са тези, при които основното събитие се случва често. Например тригерът „Промяна в количеството на складовата наличност на продуктов вариант“ се задейства при всяка промяна на наличността в даден магазин. Обемът на тригера действа като множител за всеки проблем във Вашия работен процес. Например, ако даден работен процес извлича 100 продукта и се изпълнява 1000 пъти в минута, тогава той ще извлича 100 000 продукта в минута. Това може да причини проблеми с ефективността.
Решение: Оптимизирайте работните си процеси, като използвате по-малко данни, или използвайте стъпки за изчакване, за да разделите работния си процес.
Множество работни процеси с един и същ тригер
Във Flow можете да създадете повече от един работен процес, използвайки един и същ тригер. Тези работни процеси ще се изпълняват паралелно един с друг, когато събитието се случи. Това може да бъде проблематично, ако изпълнявате твърде много работни процеси, използващи един и същ тригер, поради следните причини:
- Работните процеси могат да си противоречат един на друг.
- Работните процеси се опитват да извличат данни и да извикват API по едно и също време, а Вашият магазин е ограничен по отношение на броя заявки, които може да обработи едновременно, от лимитите на Shopify API.
Решение: Комбинирайте работните процеси, които използват един и същ тригер, в един-единствен работен процес. Това също така Ви позволява да контролирате кога всеки от тях се изпълнява, така че да не си противоречат. Комбинирането на работни процеси е особено полезно, ако те не извличат много данни или ако данните, които извличат, са едни и същи. Ако работните процеси извличат много различни данни, може да установите, че запазването им като отделни води до по-добра ефективност.
Използване на списъци или грешни данни
Когато създавате работен процес, може да използвате списък с обекти, като например продукти или поръчки. Ако използвате списък с обекти, Flow ще извлече всички обекти в списъка. Това може да е проблем, когато списъкът съдържа много данни.
Друг често срещан проблем е случайното избиране на грешни данни. Например, за да проверите данните за продукта в дадена поръчка, може да сте избрали order / publication / products / tags вместо order / line items / product / tags. Първият резултат обикновено е неправилен, тъй като извлича всички продукти за дадена публикация, когато намерението е да се проверят продуктите в поръчката. Избирането на толкова голям списък може да причини проблеми с ефективността, а избирането на грешен списък може да доведе до това Вашата автоматизация да извърши грешно действие.
Решение: Внимателно избирайте данните, от които се нуждаете, и избягвайте да използвате списъци, когато не е необходимо. Тествайте работните си процеси, за да се уверите, че вършат това, което очаквате.
Метаполета
Извличането на данни от отделни метаполета или метаобекти не би трябвало да причинява проблеми с ефективността. Често срещан проблем обаче е избирането на списъка metafields и обхождането на всички метаполета в даден ресурс. Ако полето value съдържа много данни, например когато се използват HTML обекти, това може да доведе до обработка на голямо количество данни и потенциално да причини проблеми с ефективността.
Решение: Използвайте обекта metafield вместо metafields.
Прекомерна употреба на действията „Получаване на данни“
Работните процеси, използващи действие „Получаване на данни“, като например „Получаване на данни за поръчка“, са проектирани да връщат максимум 100 обекта на работен процес от действията „Получаване на данни“. Надхвърлянето на 100 обекта може да причини проблеми с ефективността.
Решение: Изпълнявайте работния процес по-често, така че заявката Ви да не трябва да връща повече от 100 резултата. Използвайте повторно същото действие „Получаване на данни“, вместо да правите повтарящи се заявки.
Липса на филтри за заявки в действията „Получаване на данни“
Действията „Получаване на данни“ извикват Shopify API. Ако няма подадена заявка, API ще върне или всички ресурси, или нито един. Това може да причини проблеми с ефективността, но може също така да доведе до предприемане на грешни действия във Вашия магазин, когато използвате върнатите данни по-късно в работния процес.
Решение: Винаги включвайте филтри за заявки във Вашите действия „Получаване на данни“.
Неправилни филтри за заявки в действията „Получаване на данни“
Заявките за „Получаване на данни“ поддържат ограничен набор от филтри за заявки, специфичен синтаксис и специфичен набор от стойности, които могат да се използват във филтрите. Въвеждането на грешен филтър, стойност на филтър или синтаксис може да доведе до игнориране на цялата заявка, което може да причини проблеми, подобни на тези, когато няма филтър за заявка.
Решение: Използвайте документацията, предоставена от действието във Flow, за да намерите списъка с наличните филтри за заявки. Винаги тествайте филтрите на заявките си, за да се уверите, че връщат очакваните данни. Можете да използвате действие „Регистриране на изходни данни“ във Flow, за да прегледате върнатите данни, или можете да извикате Shopify Admin API директно чрез API клиент като Postman или чрез приложението GraphiQL.
Допълнителни решения за често срещани проблеми с ефективността
Използване на стъпки за изчакване за забавяне на извличането на данни
Стъпките за изчакване Ви позволяват да поставите на пауза работен процес за определен период от време, но могат да се използват и за оптимизиране на Вашите работни процеси. Всяка стъпка за изчакване ефективно разделя изпълнението на Вашия работен процес на отделни фази. Когато работният процес се изпълнява, той автоматично извлича данните, които са необходими до първата стъпка за изчакване (и извлича данни отново след стъпката за изчакване за останалата част от работния процес).
Ако даден работен процес използва тригер с голям обем и извлича много данни, но ще предприема действие само от време на време, тогава можете да поставите всякакви сложни данни или логика след двойка от състояние и стъпка за изчакване. Например:
- Тригер: Промяна в количеството на складовата наличност на продуктов вариант.
- Състояние: Проверка дали продуктът е в колекция.
- Ако е вярно, Действие: Изчакване 2 секунди.
- Действие: Изпращане на имейл до клиента (с много данни).
В този пример данните, необходими за стъпка 4, се заявяват едва след като стъпката за изчакване приключи. Ако състоянието обикновено е невярно, това означава, че работният процес ще се изпълнява по-бързо и по-ефективно.
Какво да не оптимизирате
Използване на едни и същи данни в множество действия
Когато използвате едно и също поле в няколко стъпки, Flow анализира използването на тези полета и извлича данните само веднъж. Това означава, че можете да използвате данните колкото пъти искате, без да се притеснявате за ефективността.