انتقل إلى المحتوى الرئيسي

عقدة switch

عقدة switch مصممة لتوجيه الرسائل بناءً على محتواها أو هيكلها أو شروط أخرى. إنها أداة قوية لإنشاء منطق شرطي في التدفقات.


إعدادات عقدة switch​

IMG2

1. الاسم​

حقل لتحديد اسم العقدة.
يظهر الاسم في مساحة العمل ويساعد في التعرف بسهولة على العقدة.
إذا تركت فارغة، ستسمى العقدة switch.

مثال:

  • اسم العقدة: check status

2. الخاصية​

تحدد أي خاصية من كائن الرسالة msg ستستخدم للتحقق من الشروط. بشكل افتراضي - payload.

مثال:

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

كما تدعم الخصائص البيئية (flow, global).


3. التحقق​

  • تحقق من جميع القواعد (بشكل افتراضي):
    يمكن إرسال الرسالة إلى عدة مخرجات إذا كانت تتوافق مع عدة شروط.
  • توقف بعد المطابقة الأولى:
    يتم إرسال الرسالة فقط إلى المخرج الأول الذي يفي بالشرط.

4. القواعد​

تحدد منطق التوجيه. كل قاعدة مرتبطة بأحد مخرجات العقدة: عدد القواعد يساوي عدد المخرجات. عدد المخرجات التي ستذهب إليها الرسالة عند وجود تطابقات متعددة تحدده حقل التحقق.

تحتوي القاعدة على حقلين: الشرط - نوع الشرط و القيمة - القيمة للمقارنة. بالنسبة للشروط equals true, equals false, equals null, not equals null, empty و not empty، لا يظهر حقل القيمة.

أنواع الشروط المتاحة:

  • ==: يتحقق من تساوي القيمة.
  • !=: يتحقق من عدم التساوي.
  • <: يتحقق مما إذا كانت القيمة أقل.
  • <=: يتحقق مما إذا كانت القيمة أقل أو تساوي.
  • >: يتحقق مما إذا كانت القيمة أكبر.
  • >=: يتحقق مما إذا كانت القيمة أكبر أو تساوي.
  • 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: يتم تنفيذه إذا لم يتم استيفاء أي من الشروط الأخرى.

مثال:

  • الشرط: >, القيمة: 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

النتيجة:
ستتم توجيه درجات الحرارة بناءً على قيمتها.