דלג לתוכן הראשי

צומת switch

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


הגדרות צומת switch

IMG2

1. שם

שדה לציון שם הצומת.
השם מוצג באזור העבודה ועוזר לזהות בקלות את הצומת.
אם תישאר השדה ריק, הצומת יקרא inject.

דוגמה:

  • שם הצומת: check status

2. מאפיין

מציין איזה מאפיין של אובייקט ההודעה msg ישמש לבדוק תנאים.

דוגמה:

  • msg.payload
  • msg.topic
  • msg.device.temperature

גם מאפייני סביבה (flow, global) וביטויי JSONata נתמכים (מתחילים ב-$).


3. בדיקה

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

3. חוקים

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

סוגי התנאים הזמינים:

  • ==: בודק שוויון ערך.
  • !=: בודק אי שוויון.
  • <: בודק אם הערך קטן.
  • <=: בודק אם הערך קטן או שווה.
  • >: בודק אם הערך גדול.
  • >=: בודק אם הערך גדול או שווה.
  • has key: בודק אם האובייקט מכיל את המפתח המצויין.
  • between: בודק אם הערך נמצא בטווח המצויין (כולל).
  • contains: בודק אם המחרוזת או המערך מכילים את הערך המצויין.
  • matches regex: בודק אם המחרוזת תואמת לביטוי רגולרי.
  • equals true: בודק אם הערך שווה ל-true.
  • equals false: בודק אם הערך שווה ל-false.
  • equals null: בודק אם הערך שווה ל-null.
  • not equals null: בודק אם הערך אינו שווה ל-null.
  • is of type: בודק אם הערך תואם לסוג המצויין (למשל, string, number, boolean).
  • empty: בודק אם המחרוזת, המערך או האובייקט ריקים.
  • not empty: בודק אם המחרוזת, המערך או האובייקט אינם ריקים.
  • else: מתבצע אם אף אחד מהתנאים האחרים לא התקיים.

דוגמה:

  • msg.payload is greater than 50

נתוני כניסה

הצומת מקבל אובייקט msg.
אילו מאפיינים ייבדקו נקבעים בשדה מאפיין.


נתוני יציאה

הצומת שולח את ההודעה msg ליציאה המתאימה לתנאי שניתן.
אם ההודעה אינה מתאימה לאף תנאי, היא לא נשלחת ליציאות.


דוגמאות לשימוש

דוגמה 1: סינון נתוני טמפרטורה

משימה:
לחלק את הנתונים לשלוש קטגוריות: טמפרטורה נמוכה, נורמלית וגבוהה.

זרם:

[inject] ---> [function] ---> [switch] ---> [debug (low temp)]
| [debug (normal temp)]
| [debug (high temp)]

הגדרות צומת switch:

  • מאפיין: msg.payload
  • תנאים:
    1. is less than 10 → יציאה 1
    2. is between 10 and 30 → יציאה 2
    3. is greater than 30 → יציאה 3

תוצאה:
הטמפרטורות ינותבו בהתאם לערכן.