عقدة switch
عقدة switch
مصممة لتوجيه الرسائل بناءً على محتواها أو هيكلها أو شروط أخرى. إنها أداة قوية لإنشاء منطق شرطي في التدفقات.
إعدادات عقدة switch
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
أكبر من50
المدخلات
تستقبل العقدة كائن msg
.
تحدد الخصائص التي سيتم التحقق منها في حقل الخاصية.
المخرجات
ترسل العقدة الرسالة msg
إلى المخرج الذي يتوافق مع الشرط المحدد.
إذا لم تتوافق الرسالة مع أي شرط، فلن يتم إرسالها إلى المخارج.
أمثلة الاستخدام
مثال 1: تصفية بيانات درجة الحرارة
المهمة:
تقسيم البيانات إلى ثلاث فئات: درجة حرارة منخفضة، طبيعية، وعالية.
التدفق:
[inject] ---> [function] ---> [switch] ---> [debug (low temp)]
| [debug (normal temp)]
| [debug (high temp)]
إعدادات عقدة switch
:
- الخاصية:
msg.payload
- الشروط:
is less than 10
→ المخرج 1is between 10 and 30
→ المخرج 2is greater than 30
→ المخرج 3
النتيجة:
ستتم توجيه درجات الحرارة بناءً على قيمتها.