תנאים ב-Shopify Flow

תנאים ממשיכים זרימת עבודה כאשר חלים כללים מסוימים, כגון תחילתה של התניית if-then (אם-אז). בעת הגדרת תנאי, בוחרים קריטריונים מתוך שדות ב-GraphQL Admin API (כמו product.title), אופרטור לוגי (כמו שווה ל-), וערך שניתן לבדוק לפיו (כמו ג'ינס כחול). כאשר זרימת עבודה מעריכה תנאי, Flow בודקת את הערך שהוגדר בזרימת העבודה מול הערך שהוחזר עבור החנות שלך, ולאחר מכן מציגה את התוצאות בהפעלת זרימת העבודה. כדי להבין טוב יותר את השדות והערכים הזמינים להגדרת תנאים, מומלץ ללמוד כיצד להציג בתצוגה מקדימה נתוני חנות.

למידע נוסף על הבנת היסודות של תנאים.

סוגי נתונים המשמשים ב-Flow

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

Flow תומכת בסוגי הנתונים הבאים:

  • Float: ערכי Float הם מספרים הכוללים ערך עשרוני. לדוגמה, 4.25.
  • Integer: ערכי Integer הם מספרים שלמים שאין להם ערך עשרוני. לדוגמה, 42.
  • Date: ערכי Date הם ייצוג מספרי של התאריך. לדוגמה, 01012021.
  • מחרוזת: ערכי מחרוזת הם טקסט. השוואות שמשתמשות בערכי מחרוזת אינן תלויות ברישיות.
  • Boolean: ערכים בוליאניים הם true (אמת) או false (שקר).
  • Enum: ערכי Enum הם קבוצות נתונים המאפשרות למשתנה להיות קבוצה של קבועים שהוגדרו מראש.

אופרטורים לוגיים

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

אופרטורים יכולים להיות אופרטורים ברמת השדה, כמו שווה ל- או לא שווה ל-, או אופרטורים של רשימה, כמו לפחות אחד מתוך או אף אחד מתוך.

אופרטורים ברמת השדה

משתמשים באופרטורים ברמת השדה כדי להשוות בין שני ערכים. ב-Flow אפשר להשתמש באופרטורים הבאים:

רשימה של אופרטורים ברמת השדה הזמינים ב-Shopify 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 (בדומה לתגים). שימוש במערך ריק מוביל לתוצאה 'שקר' (false). הערך עבור 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 ושדה ריק בתנאים של Shopify Flow.
אופרטורתיאורתנאי אמת/שקר (True/False)
ריק או לא קייםבודק אם שדה הוא ריק (אין לו ערך) או שאינו קיים (הוא null). מחזיר true כאשר השדה ריק או null, ו-false אם הוא קיים.
לא ריק וקייםבודק אם שדה קיים ואינו ריק או null. מחזיר true כאשר השדה אינו ריק וקיים, ו-false כאשר הוא ריק.

אופרטורים של רשימות

אופרטורים של רשימות משולבים עם אופרטורים ברמת השדה כדי לאפשר לך לבדוק תנאים על נתונים שנכללים ברשימות.

כמו בדוגמה של "לפחות אחד", ייתכן שתרצה לבדוק אם הזמנה מכילה מוצר ספציפי (שנמצא ב-order.lineItems) עם תג ספציפי (רשימה תחת order.lineItems.product.tags). בשני המקרים, הדוגמה משתמשת באופרטור הרשימה לפחות אחד מ-.

Flow מספק 3 אופרטורים לעבודה עם רשימות: לפחות אחד מ-, אף אחד מ- ו-כל ה-.

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

מחזיר 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.

סדר התנאים

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

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

  1. אם המחיר הכולל גדול מ-$1000 והלקוח מסכים לקבל חומר שיווקי, יש לתייג אותו בתג Gold.
  2. אם המחיר הכולל נמוך מ-$1000 אך גבוה מ-$500 והלקוח מסכים לקבל חומר שיווקי, יש לתייג אותו בתג Silver.
  3. אם המחיר הכולל נמוך מ-$500 אך גבוה מ-$200 והלקוח מסכים לקבל חומר שיווקי, יש לתייג אותו בתג Bronze.

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

שילוב של מספר קריטריונים בתנאי אחד

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

אם כל הקריטריונים מתקיימים

בחירה ב-AND מחזירה true רק אם כל אחד מהקריטריונים שהגדרת מתקיים.

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

דוגמה של זרימה עבודה שמשתמשת בתנאי וגם (and)

זרימה עבודה זו מתייגת את הלקוח רק אם הלקוח נמצא בקנדה ומוציא יותר מ-$500 בהזמנה. אם אחד מהתנאים האלה אינו מתקיים (false), הלקוח לא יתוייג.

אם אחד מהקריטריונים מתקיים

בחירה ב-OR מחזירה true אם לפחות אחד מהקריטריונים שהגדרת מתקיים.

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

דוגמה של זרימה עבודה שמשתמשת בתנאי או (or)

נתונים סטטיים ודינמיים בתנאים

בדרך כלל, הערך השני בתנאי הוא ערך סטטי שמוזן ידנית (כגון product.title == "your title"). ערך זה נשאר זהה בכל פעם שהזרימה עבודה מופעלת.

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

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

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

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

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

תבניות

רוב התבניות בספריית התבניות מכילות תנאי.

דוגמאות לתנאים

בדיקה אם לפחות פריט אחד ברשימה תואם לתנאי

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

במקרה זה, התנאי בודק אם לאחד מהמוצרים בהזמנה יש תג presale. כדי לבנות את התנאי הזה, יש לבחור order / lineItems / product / tags. כברירת מחדל, Flow בוחרת ב-לפחות אחד מתוך כאופרטור לוגי:

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

החלקים של לפחות אחד מתוך הם אופרטורים של רשימה ומשמשים לטיפול בהתאמה על פני מספר פריטי רשימה. החלק שווה ל- הוא אופרטור ברמת השדה שקובע אם פריט רשימה בודד תואם.

בדיקה אם אף אחד מהפריטים ברשימה אינו תואם לתנאי

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

במקרה זה, התנאי בודק אם אף אחד מתגי המוצר אינו שווה ל-foo:

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

התנאי יחזיר true אם (1) אין תגי מוצר או (2) אף אחד מהתגים אינו foo. אחרת, הוא יחזיר false.

בדיקה אם פריט ברשימה תואם למספר קריטריונים

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

במקרה זה, התנאי בודק אם לאחד המוצרים בהזמנה יש תג של presale ואם יש לו productType של clothing.

דוגמה לחלונית תצורה של תנאי, המציגה בדיקה של לפחות תג מוצר אחד ו-productType.

כדי לבנות את התנאי הזה, יש:

  1. לבחור order / lineItems / product / tags עבור הקריטריון הראשון.
  2. לבחור באפשרות הוספת קריטריון לאותו פריט ברשימה lineItems. הערה: בחירה בפריט רשימה שגוי כאן היא טעות נפוצה.
  3. לבחור ב-lineItems_item כאובייקט ברמה העליונה ואז ב-product / productType` עבור הקריטריון השני. הערה: בחירת אובייקט שגוי כאן היא גם טעות נפוצה.
  4. לבחור AND כדי לשלב בין שני הקריטריונים.
  5. להזין את הערכים presale ו-clothing עבור שני הקריטריונים.