מיטוב זרימות העבודה שלך ב-Shopify Flow
כאשר אתה בונה זרימת עבודה, כדאי לוודא שהיא פועלת ביעילות רבה ככל האפשר. מסמך זה מתאר תרחישים שעשויים לגרום לזרימות העבודה שלך להיות מואטות או למצות את מגבלות ה-API, וכן טיפים לפתרון בעיות אלו או שימוש בפתרון עוקף.
בעיות ביצועים נפוצות
סעיף זה מתאר תרחישים נפוצים שעשויים לגרום לבעיות ביצועים בזרימות העבודה שלך. ייתכן שיתרחש יותר מתרחיש אחד בו-זמנית, מה שיגדיל את הסבירות שתיתקל בבעיות ביצועים. עבור שגיאות הקשורות לתצורת העורך או להגבלת קצב (rate limiting), השתמש במדריך לפתרון בעיות.
טריגרים בנפח גבוה
טריגרים בנפח גבוה הם אלה שבהם האירוע בבסיסם קורה בתדירות גבוהה. לדוגמה, הטריגר כמות במערכת המלאי של גרסת המוצר השתנתה מופעל בכל שינוי במלאי בחנות. הנפח של טריגר פועל כמכפיל עבור כל בעיה בזרימת העבודה שלך. לדוגמה, אם זרימת עבודה מביאה 100 מוצרים, והיא מופעלת 1000 פעמים בדקה, היא תביא 100,000 מוצרים בדקה. הדבר עשוי לגרום לבעיות ביצועים.
פתרון: ייעל את זרימות העבודה שלך על ידי שימוש בפחות נתונים, או השתמש בשלבי המתנה כדי לפצל את זרימת העבודה שלך.
זרימות עבודה רבות המשתמשות באותו טריגר
ב-Flow, אתה יכול לבנות יותר מזרימת עבודה אחת באמצעות אותו טריגר. זרימות עבודה אלו יפעלו במקביל זו לזו כאשר האירוע מתרחש. הפעלה של יותר מדי זרימות עבודה המשתמשות באותו טריגר יכולה להיות בעייתית מהסיבות הבאות:
- זרימות העבודה עשויות להתנגש זו בזו.
- זרימות העבודה מנסות להביא נתונים ולקרוא ל-API באותו הזמן, והחנות שלך מוגבלת בכמות הבקשות שהיא יכולה לטפל בהן בו-זמנית לפי מגבלות ה-API של Shopify.
פתרון: שלב זרימות עבודה שמשתמשות באותו טריגר לזרימת עבודה אחת. הדבר יאפשר לך גם לשלוט מתי כל אחת מהן מבוצעת, כך שהן לא יתנגשו זו בזו. שילוב של זרימות עבודה מועיל במיוחד אם זרימות העבודה אינן מאחזרות נתונים רבים או שהנתונים שהן מאחזרות זהים. אם זרימות העבודה מאחזרות נתונים רבים ושונים, ייתכן שתגלה שהפרדה ביניהן מביאה לביצועים טובים יותר.
שימוש ברשימות או בנתונים שגויים
בעת בניית זרימת עבודה, ייתכן שתשתמש ברשימת אובייקטים, כגון מוצרים או הזמנות. אם תשתמש ברשימת אובייקטים, Flow יאחזר את כל האובייקטים שברשימה. זה עלול להוות בעיה כאשר הרשימה מכילה נתונים רבים.
בעיה נפוצה נוספת היא בחירה בנתונים הלא נכונים בטעות. לדוגמה, כדי לבדוק נתוני מוצר בהזמנה, ייתכן שבחרת order / publication / products / tags במקום order / line items / product / tags. התוצאה הראשונה בדרך כלל שגויה, כיוון שהיא מאחזרת את כל המוצרים לפרסום, כאשר הכוונה היא לבדוק מוצרים בהזמנה. בחירה ברשימה כל כך גדולה עלולה לגרום לבעיות ביצועים, ובחירה ברשימה הלא נכונה עלולה לגרום לאוטומציה שלך לבצע את הפעולה הלא נכונה.
פתרון: בחר בקפידה את הנתונים הדרושים לך והימנע משימוש ברשימות כשאין בכך צורך. בדוק את זרימות העבודה שלך כדי לוודא שהן פועלות כמצופה.
מטא שדות
אחזור נתונים של מטא שדה או מטא אובייקט בודד לא אמור לגרום לבעיות ביצועים. עם זאת, בעיה נפוצה היא בחירה ברשימה metafields וריצה בלולאה על כל המטא שדות במשאב. אם שדה value מכיל נתונים רבים, לדוגמה, כאשר נעשה שימוש באובייקטי HTML, הדבר עלול לגרום לעיבוד של נתונים רבים ובפוטנציה לגרום לבעיות ביצועים.
פתרון: השתמש באובייקט metafield במקום ב-metafields.
שימוש יתר בפעולות 'קבלת נתונים' (Get data)
זרימות עבודה המשתמשות בפעולה Get data (קבלת נתונים), כגון Get order data (קבלת נתוני הזמנה), מיועדות להחזיר עד 100 אובייקטים לכל זרימת עבודה מפעולות Get data. חריגה מ-100 אובייקטים עלולה לגרום לבעיות ביצועים.
פתרון: הפעל את זרימת העבודה לעתים קרובות יותר כדי שהשאילתה שלך לא תצטרך להחזיר יותר מ-100 תוצאות. עשה שימוש חוזר באותה פעולת Get data במקום לבצע שאילתות חוזרות.
אין מסנני שאילתה בפעולות 'קבלת נתונים' (Get data)
פעולות Get data קוראות ל-Shopify API. אם אין שאילתה, ה-API יחזיר את כל המשאבים או לא יחזיר אף משאב. הדבר עלול לגרום לבעיות ביצועים, אך עלול גם לגרום לכך שהפעולות הלא נכונות יתבצעו בחנות שלך כאשר תשתמש בנתונים שיוחזרו בהמשך זרימת העבודה.
פתרון: תמיד כלול מסנני שאילתה בפעולות ה-Get data שלך.
מסנני שאילתה שגויים בפעולות 'קבלת נתונים' (Get data)
שאילתות של Get data תומכות בסט מוגבל של מסנני שאילתה, בתחביר מסוים, ובסט מסוים של ערכים שניתן להשתמש בהם במסננים. הזנת מסנן, ערך מסנן או תחביר שגויים עלולה לגרום להתעלמות מהשאילתה כולה, דבר שעלול לגרום לבעיות דומות לאלה שמתרחשות כשאין מסנן שאילתה.
פתרון: השתמש בתיעוד שמסופק על ידי הפעולה ב-Flow כדי למצוא את רשימת מסנני השאילתה הזמינים. תמיד בדוק את מסנני השאילתה שלך כדי לוודא שהם מחזירים את הנתונים המצופים. ניתן להשתמש בפעולת 'פלט יומן' (Log Output) ב-Flow כדי לבדוק את הנתונים שהוחזרו, או שאפשר לקרוא ל-Shopify Admin API ישירות דרך לקוח API (API client) כמו Postman או דרך האפליקציה GraphiQL.
פתרונות נוספים לבעיות ביצועים נפוצות
שימוש בשלבי 'המתנה' כדי להשהות אחזור נתונים
שלבי המתנה (Wait steps) מאפשרים לך להשהות זרימת עבודה למשך זמן מוגדר, אך ניתן גם להשתמש בהם כדי לבצע אופטימיזציה לזרימות העבודה שלך. כל שלב המתנה למעשה מפצל את הביצוע של זרימת העבודה לשלבים נפרדים. כשהזרימה עבודה פועלת, היא מאחזרת אוטומטית נתונים שנדרשים עד לשלב ההמתנה הראשון (ומאחזרת נתונים שוב לאחר שלב ההמתנה עבור המשך זרימת העבודה).
אם זרימת עבודה משתמשת בטריגר בנפח גבוה ומאחזרת נתונים רבים, אך תבצע פעולה רק מדי פעם, תוכל למקם נתונים או לוגיקה מורכבים לאחר צמד של תנאי ושלב המתנה. לדוגמה:
- טריגר: כמות במערכת המלאי של גרסת המוצר השתנתה.
- תנאי: בדיקה אם המוצר נמצא באוסף.
- אם נכון, פעולה: המתנה של שתי שניות.
- פעולה: שליחת דוא"ל ללקוח (עם נתונים רבים).
בדוגמה זו, הנתונים הנדרשים עבור שלב 4 מתבקשים רק לאחר ששלב ההמתנה מסתיים. אם התנאי הוא בדרך כלל שקרי (false), משמעות הדבר היא שזרימת העבודה תפעל מהר יותר וביעילות רבה יותר.
למה לא לבצע אופטימיזציה
שימוש באותם הנתונים בפעולות מרובות
כשמשתמשים באותו השדה במספר שלבים, Flow מנתח את השימוש בשדות אלה ומאחזר את הנתונים האלה פעם אחת בלבד. כלומר, אפשר להשתמש בנתונים כמה פעמים שרוצים מבלי לדאוג לביצועים.