פתרון שגיאות ב-Shopify Flow

היישום Shopify Flow עוזר בביצוע אוטומציה של משימות ותהליכים בחנות, אך ייתכן שיופיעו שגיאות או שתהיה הגעה למגבלות מסוימות בעת יצירה או עריכה של זרימות עבודה. דף זה מסביר בעיות נפוצות שעשויות להופיע, כמו מגבלות של זרימות עבודה ושגיאות נתונים, ומספק הדרכה לפתרון שלהן. הבנת השגיאות האלה יכולה לעזור לפתור בעיות ולשמור על פעולה תקינה של זרימות העבודה.

שגיאות בעת יצירת זרימות עבודה

בעת יצירת זרימת עבודה, ייתכן שיופיעו שגיאות שמונעות הוספת זרימת עבודה חדשה. להלן מספר שגיאות שעשויות להופיע:

חריגה ממספר זרימות העבודה המותר

בעת יצירת זרימת עבודה חדשה, עשויה להופיע שגיאה המציינת הגעת למגבלה המרבית המותרת של 1,000 זרימות עבודה. כדי להמשיך, יש למחוק זרימות עבודה שאינן בשימוש ולנסות שוב.

Flow מגביל את מספר זרימות העבודה שיכולות להיות בחנות, למקסימום של 1,000. מספר זה כולל זרימות עבודה פעילות ובלתי פעילות. אם הגעת למגבלה זו ויש לך צורך ליצור זרימת עבודה חדשה, יש למחוק זרימות עבודה שאינן בשימוש או שאינן פעילות.

אם בחנות היו יותר מ-1,000 זרימות עבודה לפני קביעת מגבלה זו, החנות תוכל להמשיך לפעול עם יותר מ-1,000 זרימות עבודה. עם זאת, כדי ליצור זרימות עבודה חדשות, החנות חייבת להיות מתחת למגבלה.

שגיאה זו עשויה להופיע בעת ביצוע מספר פעולות ביישום Flow:

  • יצירת זרימת עבודה חדשה
  • שכפול זרימת עבודה
  • ייבוא זרימת עבודה
  • התקנת תבנית
יותר מדי זרימות עבודה על אותו טריגר

בעת הפעלת זרימת עבודה, עשויה להופיע אזהרה שבחנות שלך יש יותר מ-10 זרימות עבודה פעילות שמשתמשות באותו טריגר.

שימוש במספר רב של זרימות עבודה שמשתפות את אותו טריגר עלול לגרום לבעיות בביצועים, מכיוון שבכל פעם שאירוע הטריגר מתרחש, Flow נדרש לעבד את כל זרימות העבודה המשויכות. פיצול זה (fan-out) עלול להוביל לזמני ביצוע איטיים יותר ולשימוש מוגבר במשאבים.

כדי לצמצם את מספר זרימות העבודה על טריגר בודד, כדאי לשקול את הגישות הבאות:

  • שילוב זרימות עבודה שמשתמשות באותו טריגר לזרימת עבודה אחת עם הסתעפויות ותנאים מרובים.
  • יש להשבית או למחוק זרימות עבודה שאינן נחוצות עוד.
  • יש לבדוק אם עדיף להגדיר לזרימות עבודה מסוימות טריגר ספציפי יותר.

שגיאות בעריכת זרימות עבודה

בעת עריכת זרימת עבודה, ייתכן שתיתקל בשגיאות שמונעות ממך לשמור את זרימת העבודה. להלן שגיאות נפוצות שייתכן שתיתקל בהן בעת עריכת זרימת עבודה:

נתונים לא נמצאו

בעת הוספת פעולה חדשה לזרימת עבודה, ייתכן שתיתקל בשגיאה המציינת נתונים לא נמצאו:

שגיאת נתונים לא נמצאו

שגיאה זו מתרחשת משום שפעולות רבות, כולל הוספת תגיות למוצר, דורשות משאב של Shopify, כמו מוצר. אם המשאב אינו זמין, הפעולה לא תוכל לרוץ. לרוב, זרימות עבודה עשויות להכיל נתונים שדומים לנתונים הנדרשים, אך בפועל אינם מספקים את הנדרש.

הסעיפים הבאים מתארים תרחישים נפוצים שיכולים לגרום לשגיאה זו וכיצד לפתור אותם.

בעיה 1: התקבלה רשימה מפעולת 'קבלת נתונים' כאשר נדרש פריט יחיד

לעתים קרובות, זרימת עבודה מספקת רשימה של משאבי Shopify, אך הפעולה מאפשרת משאב יחיד בלבד. לדוגמה, זרימת העבודה מספקת רשימה של מוצרים דרך הפעולה קבלת נתוני מוצרים, אך הפעולה הוספת תגיות למוצר דורשת מוצר יחיד.

לפתרון שגיאה זו, ניתן להוסיף פעולת עבור כל אחד כדי לעבור על הרשימה בלולאה ולקרוא לפעולה עבור כל פריט ברשימה. דוגמה זו ממחישה הן את השגיאה והן את הפתרון באמצעות עבור כל אחד:

שגיאת נתונים לא נמצאו

בעיה 2: סופקה רשימה מהטריגר כאשר נדרש פריט יחיד

שגיאה דומה עשויה להתרחש כאשר פעולה דורשת משאב יחיד אך הטריגר מספק רשימה. לדוגמה, הפעולה סימון הזמנת מילוי כממולאת דורשת הזמנת מילוי, אך הטריגר מגיע מהזמנה, שמספקת רשימה של הזמנות מילוי.

לפתרון שגיאה זו, בדומה לבעיה 1, ניתן להוסיף פעולת עבור כל אחד כדי לעבור על הרשימה בלולאה ולקרוא לפעולה עבור כל פריט ברשימה:

פתרון להזמנות מילוי

לחלופין, ניתן להשתמש בטריגר אחר שמספק את המשאב הנדרש. לדוגמה, במקום להשתמש בטריגר נוצרה הזמנה, אפשר להשתמש בטריגר הזמנת מילוי מוכנה למילוי, שמספק הזמנת מילוי יחידה.

דוגמה לטריגר הזמנת מילוי מוכנה למילוי

בעיה 3: לא סופקו נתונים על ידי הטריגר 'זמן מתוזמן'

הטריגר זמן מתוזמן אינו מספק נתוני משאבים של Shopify. אם תנסה לחבר פעולות הדורשות משאבים של Shopify לאחר הטריגר, תיתקל בשגיאה.

לפתרון שגיאה זו, הוסף פעולה, כגון קבלת נתוני מוצר, המספקת את הנתונים הנדרשים. כפי שצוין בבעיה 1, חובה להוסיף גם פעולת עבור כל אחד כדי לעבור בלולאה על כל רשימה המוחזרת מפעולה המקבלת נתונים.

דוגמה למוצר נדרש חסר

בעיה 4: לא סופקו נתונים על ידי טריגר של יישום

בדומה לבעיה 3, טריגרים מסוימים שנוצרו על ידי יישומים אינם מספקים את נתוני המשאב הנדרשים של Shopify. לדוגמה, טריגר 'נוצרה ביקורת' עשוי לספק כתובת דוא"ל אך לא אובייקט לקוח, שנדרש על ידי פעולות רבות, כגון הוספת תגיות לקוח.

לפתרון שגיאה זו, ייתכן שתוכל להשתמש בפעולה 'קבלת נתונים' כדי לאחזר את משאב ה-Shopify הדרוש לך. לדוגמה, ניתן להשתמש בקבלת נתוני לקוח כדי לקבל את אובייקט הלקוח מכתובת הדוא"ל שסופקה על ידי הטריגר. בדומה לבעיות האחרות, עליך להוסיף גם פעולת עבור כל אחד כדי לעבור בלולאה על כל רשימה שמוחזרת מפעולה שמקבלת נתונים.

אם 'קבלת נתונים' אינה אפשרות, ייתכן שתצטרך ליצור קשר עם מפתח היישומים ולבקש ממנו לשנות את הטריגר שלו כך שיספק את הנתונים הנדרשים.

חריגה ממספר שלבי ההמתנה

בעת הוספת שלבי המתנה חדשים לזרימת העבודה, ייתכן שתיתקל בשגיאה המציינת: בזרימות עבודה יכולים להיות עד 40 שלבי המתנה.

Flow מגביל את מספר שלבי ההמתנה המותרים בזרימת עבודה ל-40. אם נתקלת בשגיאה זו, סימן שחרגת מהמגבלה. כדי לפתור את הבעיה, הסר שלבי המתנה ממקומות אחרים בזרימת העבודה שלך.

אם כבר היו לך זרימות עבודה שהכילו למעלה מ-40 שלבי המתנה לפני הוספת המגבלה הזו, זרימת העבודה שלך תמשיך לתפקד כמצופה. עם זאת, כדי להוסיף שלבי המתנה נוספים, עליך להסיר קודם את השלבים הקיימים כדי להישאר מתחת למגבלה.

בנוסף, זמן ההמתנה הכולל בכל שלבי ההמתנה לא יכול לעלות על 90 ימים.

חריגה ממגבלת הגודל של ערך שדה התצורה

בעת עריכת הערך של שדות תצורה בתוך תנאים בזרימת העבודה שלך, ייתכן שתיתקל בשגיאה המציינת: הערך של שדה התצורה חייב להיות קטן מ-50kB.

Flow מגביל את הגודל של ערך שדה התצורה ל-50kB של נתונים. כאשר אתה נתקל בשגיאה זו, הגעת למגבלה או חרגת ממנה. לפתרון הבעיה, קצר את אורך הנתונים שאתה מוסיף לשדה זה.

אם כבר יש לך שדות תצורה עם ערך של 50kB ויותר, זרימות העבודה שלך ימשיכו לפעול כמצופה. עם זאת, כדי לבצע שינויים בזרימת העבודה, חובה לתקן את הערך שגורם לשגיאה.

שגיאות בעת ריצת זרימת עבודה

כאשר ריצת זרימת עבודה נתקלת בשגיאה, ריצת זרימת העבודה תסומן בסטטוס נכשל. הודעת השגיאה תוצג בפרטי ריצת זרימת העבודה. להלן שגיאות נפוצות שייתכן שתיתקל בהן כאשר ריצת זרימת עבודה נכשלת:

  • שגיאות חולפות הן שגיאות זמניות שמתרחשות כאשר Flow אינו מצליח להשלים משימה. מתבצעים ניסיונות חוזרים עבור שגיאות אלו עד שהן יצליחו או יגיעו למגבלת הזמן הקצוב.
  • שגיאות קבועות הן שגיאות המתרחשות כאשר Flow אינו מצליח להשלים משימה, ולא ניתן לנסות לבצע את המשימה שוב.

שגיאות חולפות

שגיאות חולפות הן שגיאות זמניות שמתרחשות כאשר Flow אינו מצליח להשלים משימה. מתבצעים ניסיונות חוזרים עבור שגיאות אלו עד שהן יצליחו או יגיעו למגבלת הזמן הקצוב. לדוגמה, אם Flow אינו מצליח ליצור קשר עם שותף בעת ביצוע פעולת מחבר, Flow מנסה לבצע את המשימה שוב מספר פעמים לפני שהוא מוותר.

הניסיונות החוזרים פרוסים לאורך זמן, כאשר ההשהיה בין כל ניסיון עוקב עולה בהשוואה להשהיה הקודמת. בדרך כלל, כאשר זרימת עבודה חווה שגיאות חולפות, היא נשארת במצב פועלת במשך זמן רב בזמן שהיא מנסה לבצע שוב משימות.

כאשר משימה מבוצעת שוב בהצלחה, זרימת העבודה נמשכת. אם משימה שבוצעה שוב חווה שגיאה קבועה, זרימת העבודה נכשלת. לכל קטע בזרימת העבודה יש מגבלת ביצוע עליונה משולבת של 36 שעות. אם שלב עם שגיאות חולפות לא יצליח לפני ההגעה למגבלה זו, זרימת העבודה תיכשל.

זרימות עבודה עם שלבי המתנה מחולקות למקטעים, מה שמשפיע על אופן החישוב של מגבלות הזמן הקצוב בזרימת עבודה. כל מקטע הוא קבוצה של משימות שמבוצעות יחד, ולכל מקטע יש מגבלת זמן משלו של 36 שעות. לדוגמה, אם בזרימת עבודה יש שלב המתנה למשך שעה אחת, המשימות שלפני שלב ההמתנה יבוצעו יחד במקטע אחד, והמשימות שאחרי שלב ההמתנה יבוצעו יחד במקטע אחר. אם לזרימת עבודה יש מספר שלבי המתנה, המשימות שבין כל שלב המתנה יבוצעו יחד במקטע אחד. זרימות עבודה ללא שלבי המתנה נחשבות כמקטע אחד.

שגיאות חולפות שמופיעות מדי פעם הן נפוצות. עם זאת, אם יש לך זרימת עבודה שנתקלת באופן עקבי באותה שגיאה חולפת על פני מספר ריצות, ייתכן שיהיה צורך להגדיר מחדש את זרימת העבודה שלך.

תם הזמן הקצוב לשלב

שגיאות מסוג Step timed out (תם הזמן הקצוב לשלב) מתרחשות בדרך כלל כאשר משימה בזרימת העבודה מנסה לבצע שאילתה על כמות גדולה מדי של נתונים בתוך מקטע אחד. שגיאה זו מתרחשת לעיתים קרובות בזרימות עבודה שעוברות בלולאה על רשימות, במיוחד רשימות מקוננות שגדולות מכדי לעבד אותן במהירות.

כאשר שגיאה זו מתרחשת, הטריגר או שלב ההמתנה מוצגים בסטטוס retrying (ניסיון חוזר).

כדי לפתור בעיה זו, יש לבדוק תנאים שניגשים לרשימות ולרשימות מקוננות כדי לוודא שהם מוגדרים כראוי. בעיה נפוצה היא תנאי שבודק את כל המוצרים בחנות, במקום רק את המוצרים שבהזמנה.

סטטוס 5XX

רוב הפעולות ב-Flow כרוכות בביצוע קריאות HTTP. לעיתים, בעיות רשת או בעיות שרת אחרות עשויות לגרום לקריאות ה-HTTP להיכשל ולהחזיר קוד שגיאה בין 500 ל-599. הופעה של שגיאה זו פעם אחת אינה מהווה בעיה, אך מקרים חוזרים עשויים להצביע על בעיה בשרת המטפל במשימה, ולא על האופן שבו השלב מוגדר.

שגיאה מסוג זה מוצגת לרוב בפעולת שליחת בקשת HTTP (Send HTTP Request), אך היא יכולה להתרחש ברוב המשימות.

האטת GraphQL

היקף העבודה הכולל שמושלם על ידי זרימת עבודה מוגבל על ידי מגבלות קצב API, אשר נקבעות בחלקן על פי התוכנית שלך. בדרך כלל, לא מגיעים למגבלות אלו אלא אם כן זרימת העבודה היא מורכבת מאוד או מכילה שגיאת עיצוב לא מכוונת.

הדוגמאות הבאות מתארות מצבים שיכולים להוביל לשגיאה זו:

  • קוד Liquid או תנאים בזרימת העבודה עוברים בלולאה על רשימה עם כמויות נתונים גדולות, כגון בדיקת ערכים של מטא שדות שמכילים HTML.
  • קוד Liquid או תנאים בזרימת העבודה עוברים בלולאה על רשימה גדולה, כגון מעבר בלולאה על shop.orders בחנות גדולה.
  • זרימת העבודה גורמת ללולאה אינסופית שבה זרימת העבודה ממשיכה ליצור ריצות חדשות של זרימת העבודה. לדוגמה, זה יכול לקרות אם זרימת העבודה משתמשת בטריגר נוספו תגי לקוח (Customer tags added) וכוללת את הפעולה הוספת תגי לקוח (Add customer tags).

אם מגיעים למגבלה, מתקבלת שגיאת GraphQL throttled (האטת GraphQL). שגיאה זו עלולה להשפיע על זרימות עבודה אחרות כשהן מנסות לרוץ, ולכן יש לפתור את השגיאה הזו באופן מיידי אם היא מתרחשת.

שגיאות קבועות

שגיאות קבועות הן שגיאות שמתרחשות כאשר משימה ב-Flow לא יכולה להיות מושלמת, ולא ניתן לנסות לבצע אותה שוב. לדוגמה, אם לא ניתן לשלוח דוא"ל דרך Flow מפני שכתובת הדוא"ל לא חוקית, אז המערכת לא מנסה לבצע את המשימה שוב. במקום זאת, זרימת העבודה נכשלת.

השדות: id נדרשים אך הם ריקים

פעולות של Shopify דורשות משאב אחד או יותר, כגון מוצר, לקוח או הזמנה, כדי לרוץ. אם המשאב הדרוש אינו זמין, הפעולה לא תוכל לרוץ כמתוכנן. לדוגמה, ניתן ליצור הזמנה בלוח המנהל של Shopify ללא לקוח. אם תפעיל פעולה כגון הוספת תגי לקוח, הפעולה תיכשל ותציג שגיאה זו.

כדי למנוע שגיאה זו, יש להוסיף תנאי לפני הפעולה שיבדוק אם המשאב קיים. בדוגמה הקודמת, אם ברצונך לשלוח דוא"ל פנימי באותה זרימת עבודה של הוספת תגי לקוח, תוכל למקם את פעולת הדוא"ל לפני השלב שעלול להיכשל או להשתמש באחת מהגישות הבאות:

למקם את הפעולות בענפים מקבילים (כאשר שני ענפים או יותר יוצאים מתוך שלב אחד):

דוגמה שמציגה שתי פעולות במקביל לאחר טריגר.

להוסיף תנאי לפני הפעולה שיבדוק אם הלקוח קיים. לדוגמה, ניתן לבדוק אם order / customer / id is not empty and exists.

דוגמה שמציגה תנאי שמחפש מזהה (ID).

ל-Flow אין הרשאה לחשבון ה-Google Sheets שלך. יש לחבר מחדש את החשבון שלך.

המחבר של Google Sheets דורש ממך לקשר את חשבון Google שלך ל-Flow כדי שתהיה לו הרשאה לכתוב לגיליון. שגיאה זו עלולה להתרחש כאשר ל-Flow אין הרשאה לכתוב לגיליון, משום שהחשבון נותק מ-Flow או משום שחשבון זה אינו יכול לגשת לגיליון.

כדי לפתור בעיה זו, יש לוודא שהחשבון שמשמש למחבר יכול לפתוח את הגיליון ויש לו הרשאות עריכה. אם החשבון המקושר הוא שגוי, ניתן לנתק אותו ולחבר חשבון חדש.

שלבים:

  1. פתח זרימת עבודה קיימת או צור זרימת עבודה חדשה.
  2. הוסף פעולה לזרימת העבודה.
  3. בחר את המחבר של Google Sheets.
  4. לחץ על ניתוק (Disconnect), ולאחר מכן לחץ על חיבור (Connect) כדי לחבר מחדש את חשבון Google הנכון.
פעולת Flow התקבלה עם מאפיינים לא חוקיים. הלקוח לא מסכים לקבל חומר שיווקי.

הפעולה שליחת דוא"ל שיווקי (Send marketing email) אינה שולחת הודעות דוא"ל ללקוחות שלא הסכימו לקבל אותן, והיא תיכשל באופן קבוע אם זרימת העבודה תנסה לעשות זאת.

כדי לפתור בעיה זו, יש להוסיף תנאי בזרימת העבודה שיבדוק את סטטוס המינוי של הלקוחות. תוכל לוודא שהלקוחות הסכימו לקבל הודעות דוא"ל שיווקיות לפני שליחתן. פעל לפי השלבים המפורטים תחת ניהול רשימת מנויי דוא"ל.

חסר משאב עבור [סוג משאב]

שגיאה זו מצביעה על כך שמשאב, כגון customer או order, נמחק לפני שזרימת העבודה הספיקה לאחזר את הנתונים שלו. לרוב, זה קורה לאחר שלב המתנה, אך זה עשוי לקרות גם בשלב הטריגר אם המשאב נמחק מהר מאוד לאחר אירוע הטריגר.

קבל התראות כאשר מתרחשת שגיאה

אם הופעת שגיאות תשפיע על פעילות החנות שלך, תוכל להגדיר קבלת התראות בכל פעם שמתרחשת שגיאה. ניתן לבנות התראות על שגיאות בתור זרימת עבודה באמצעות הטריגר אירעה שגיאה בזרימת העבודה (Workflow error occurred). התראות על שגיאות נועדו למנוע עומס התראות מיותר, כך שתקבל רק התראה אחת לכל גרסה של זרימת העבודה.

כדי להתחיל, ניתן להשתמש באחת מהתבניות הבאות:

ניסיון חוזר של ריצות

במקרים מסוימים, ריצה של זרימת עבודה עלולה להיתקל בשגיאה או לא לפעול כמתוכנן. לאחר פתרון בעיות ותיקון השגיאות בזרימת העבודה הרלוונטית, ניתן לנסות להריץ מחדש באופן ידני ריצות עבר, כדי לתקן רטרואקטיבית את התוצאה שלהן. למידע נוסף על ניסיון חוזר של ריצות בזרימות עבודה.

בריצה (בקצב מוגבל)

במקרים מסוימים, זרימת עבודה בודדת או מספר זרימות עבודה עלולות להשתמש במשאבים רבים מדי, וכדי למנוע מכך לגרום לבעיות, Flow יגביל בכוונה את ביצוע הריצות בחנות שלך, מה שעלול לגרום לעיכובים ולשגיאות של פקיעת זמן קצוב. ניתן לתקן זאת על ידי כתיבה מחדש של זרימות עבודה שאינן יעילות, בדרך כלל כדי לתקן באג שגרם לכך שזרימת העבודה לא פעלה כמתוכנן.

פועל זמן רב מדי

הודעה זו מציינת שהריצות של זרימת עבודה נמשכות זמן רב מאוד. לרוב זה נגרם משימוש בכמות גדולה של נתונים בתוך זרימת העבודה שלוקח ל-Flow זמן רב לשלוף.

מקרים אלה נגרמים בדרך כלל מנתיבי בקשה עמוקים שעוברים דרך מספר רשימות של פריטים (כמו בקשת כל מטא השדות עבור כל המוצרים בכל האוספים שמוצר מסוים הוא חלק מהם):

דוגמה לזרימת עבודה שפועלת זמן רב.

מצב זה קשור לעיתים קרובות גם לשגיאת פסק זמן (timeout) בשלב הטריגר של זרימת עבודה.

לעיתים קרובות אפשר לשפר זרימות עבודה שעוברות בלולאה על כל מטא השדות פשוט על ידי שימוש במטא שדה ספציפי. גישה למספר רשימות מקוננות (כמו כל המוצרים בכל האוספים עבור מוצר מסוים) או לרשימות גדולות במיוחד (כמו הגדרות מטא שדות, שמכילות את כל מטא השדות עבור כל האובייקטים) עשויה לקרות בלי כוונה, ובחירה בשדה הנכון (המוצר הבודד או מטא שדה בודד באובייקט) יכולה לשפר את היעילות באופן משמעותי. במקרים אחרים, שימוש בפעולה "Get Product/Order/Customer Data" עם מסנן שאילתות יכול להפחית משמעותית את מספר האובייקטים שנמצאים בשימוש תוך שמירה על גישה לאובייקטים הרלוונטיים.

עיבוד כמות נתונים גדולה מדי

הודעה זו מציינת שהריצות של זרימת העבודה מייצרות כמות גדולה של נתונים. לרוב הדבר נגרם כתוצאה מתנאים מורכבים שבודקים שדות רבים, בדרך כלל עקב בדיקת שדות במספר שכבות של רשימות.

לדוגמה, תנאי כמו "עבור לפחות תג אחד בלקוח זה, עבור לפחות פריט שורה אחד בהזמנה, עבור לפחות תג אחד בפריט השורה" יכול להוביל לביצוע בדיקות רבות, וליצירת כמות גדולה של נתונים כדי להציג את התוצאות של בדיקות אלו:

דוגמה לזרימת עבודה שמנסה לעבד כמות גדולה מדי של נתונים.

ניסיונות חוזרים אוטומטיים נכשלים

הודעה זו מציינת שהריצות של זרימת העבודה נכשלות שוב ושוב עקב בעיה זמנית כלשהי, אך הן אינן מצליחות לעיתים קרובות בניסיונות הבאים. הדבר קורה לעיתים קרובות כאשר ה-Admin API של Shopify או האפליקציה של שותף נתקלים בנפח גבוה של בקשות.