🔀
سوئیچ
Switch
هدایت workflow به چندین مسیر مختلف بر اساس شرایط
منطق و کنترل
متوسط
ویژه
۰بازدید
اشتراکگذاری:
مستندات رسمینمای کلی
نود Switch به شما اجازه میدهد بر اساس شرایط مختلف، workflow را به 3 یا بیشتر مسیر مختلف هدایت کنید.
قابلیتهای کلیدی:
- ایجاد چندین مسیر خروجی (Outputs)
- تعریف شرط جداگانه برای هر مسیر
- مسیر پیشفرض (Fallback) برای حالتهای نامشخص
- پشتیبانی از همه انواع شرایط (عدد، متن، Boolean، ...)
- ترکیب چند شرط با AND/OR
- خروجیهای نامحدود
کاربردها:
- مسیردهی بر اساس وضعیت سفارش (در انتظار، پرداخت شده، ارسال شده، لغو شده)
- دستهبندی کاربران (رایگان، نقرهای، طلایی، پلاتینیوم)
- هدایت بر اساس اولویت (کم، متوسط، بالا، فوری)
- مسیردهی جغرافیایی (تهران، اصفهان، شیراز، سایر شهرها)
- تفکیک بر اساس نوع فایل (PDF, JPG, DOC, ...)
تفاوت با IF:
- IF: فقط 2 خروجی (True/False)
- Switch: نامحدود خروجی با شرایط مختلف
کاربردهای متداول
1. مسیردهی بر اساس وضعیت سفارش
هدایت سفارش به مسیر مناسب:
شرایط:
- Output 0: وضعیت = "pending" → بررسی موجودی
- Output 1: وضعیت = "paid" → ارسال به انبار
- Output 2: وضعیت = "shipped" → ارسال کد رهگیری
- Output 3: وضعیت = "delivered" → درخواست نظر
- Output 4: وضعیت = "cancelled" → بازگشت وجه
- Fallback: لاگ خطا
code
Webhook → Switch (status)
→ Output 0 → بررسی موجودی
→ Output 1 → ارسال به انبار
→ Output 2 → Telegram (کد رهگیری)
→ Output 3 → Email (درخواست نظر)
→ Output 4 → بازگشت وجه2. دستهبندی کاربران
مسیر متفاوت برای هر نوع کاربر:
شرایط:
- Output 0: plan = "free" → محدودیت 10 درخواست
- Output 1: plan = "silver" → محدودیت 100 درخواست
- Output 2: plan = "gold" → محدودیت 1000 درخواست
- Output 3: plan = "platinum" → نامحدود
- Fallback: رد درخواست
3. اولویتبندی تیکت
مسیردهی به تیم مناسب:
شرایط:
- Output 0: priority = "critical" → تیم فوری + SMS مدیر
- Output 1: priority = "high" → تیم اولویتدار
- Output 2: priority = "medium" → صف عادی
- Output 3: priority = "low" → پاسخ خودکار
- Fallback: صف عادی
4. مسیردهی جغرافیایی
ارسال به انبار محلی:
شرایط:
- Output 0: city = "Tehran" → انبار تهران
- Output 1: city شامل "Isfahan" یا "Shiraz" → انبار مرکز
- Output 2: city شامل "Tabriz" یا "Mashhad" → انبار شمال
- Output 3: city شامل "Ahvaz" یا "Bushehr" → انبار جنوب
- Fallback: انبار تهران (اصلی)
5. تفکیک فایل بر اساس نوع
پردازش متفاوت برای هر نوع فایل:
شرایط:
- Output 0: fileType = "pdf" → PDF Reader
- Output 1: fileType = "jpg" OR "png" → Image Processor
- Output 2: fileType = "doc" OR "docx" → Word Processor
- Output 3: fileType = "xls" OR "xlsx" → Excel Processor
- Fallback: ذخیره خام
6. مسیردهی بر اساس مبلغ
تخفیف متفاوت بر اساس مبلغ خرید:
شرایط:
- Output 0: amount < 100000 → بدون تخفیف
- Output 1: amount between [100000, 500000] → 5% تخفیف
- Output 2: amount between [500000, 1000000] → 10% تخفیف
- Output 3: amount >= 1000000 → 15% تخفیف + هدیه
7. مسیردهی بر اساس زمان
رفتار متفاوت در ساعات مختلف:
شرایط:
- Output 0: hour between [8, 12] → تیم صبح
- Output 1: hour between [12, 17] → تیم عصر
- Output 2: hour between [17, 20] → تیم شب
- Output 3: hour between [20, 8] → پاسخ خودکار
8. فیلتر محتوای نامناسب
بررسی کیفیت محتوا:
شرایط:
- Output 0: content شامل کلمات ممنوع → رد + لاگ
- Output 1: content length < 10 → خیلی کوتاه
- Output 2: content length > 1000 → خیلی بلند
- Output 3: همه چیز OK → تایید و انتشار
- Fallback: بررسی دستی
نکات حرفهای
💡 نکات حرفهای:
- 1ترتیب شرایط مهم است: Switch از بالا به پایین بررسی میکند و اولین شرط True اجرا میشود.
- 1استفاده از Fallback: همیشه یک Fallback تنظیم کنید تا در حالتهای نامشخص، workflow خطا ندهد.
- 1شرایط خاص به عام:
code
1. VIP کاربر
2. کاربر فعال
3. کاربر معمولی
4. مهمان- 1بهینهسازی: شرایطی که بیشتر اتفاق میافتند را در اول قرار دهید (سریعتر پردازش میشود).
- 1استفاده از Expression Mode: برای شرایط پیچیده، از Expression Mode استفاده کنید:
javascript
// روش Expression
{{$json.plan}}_{{$json.region}}
// خروجی: "gold_tehran", "silver_isfahan", ...- 1تست با Sample Data: قبل از Active کردن، با داده نمونه تست کنید.
- 1مقایسه با IF:
code
2 حالت: IF
3+ حالت: Switch
پیچیده: چند Switch یا Expression- 1ترکیب شرایط: هر Output میتواند چند شرط داشته باشد:
code
Output 0:
- city = "Tehran"
- AND amount > 100000- 1Debug کردن: از نود Set قبل از Switch برای دیدن مقادیر دقیق استفاده کنید.
- 1Case Sensitivity: مقایسه متن حساس به حروف بزرگ/کوچک است:
javascript
// رفع مشکل:
{{$json.status.toLowerCase()}}- 1استفاده از Regex: برای شرایط پیچیده متنی:
javascript
{{$json.email}} matches /^[a-zA-Z0-9]+@company\.com$/- 1Performance: Switch خیلی سریع است، حتی با 10+ خروجی.
- 1خروجیهای خالی: اگر Output خالی باشد (بدون نود بعدی)، workflow آنجا تمام میشود.
- 1ترکیب با Loop: میتوانید Switch را در Loop استفاده کنید برای پردازش متفاوت هر آیتم.
- 1نامگذاری Outputs: نامهای واضح برای Outputs بگذارید:
code
Output 0: "پرداخت_شده"
Output 1: "در_انتظار"
Output 2: "لغو_شده"رفع مشکلات
خطاهای رایج
1. هیچ خروجی اجرا نمیشود
علت: هیچ شرطی برقرار نیست و Fallback تنظیم نشده
راهحل
- حتماً یک Fallback Output تنظیم کنید
- یا شرط "Otherwise" برای آخرین Output اضافه کنید
- شرایط را با داده واقعی تست کنید
2. همه به یک خروجی میروند
علت: اولین شرط همیشه True است
راهحل
- Switch از بالا به پایین بررسی میکند
- اولین شرط True، اجرا میشود و بقیه نادیده گرفته میشوند
- شرایط را از خاص به عام مرتب کنید:
code
❌ اشتباه:
1. amount >= 0 (همیشه True!)
2. amount >= 100000
3. amount >= 500000
✅ صحیح:
1. amount >= 500000
2. amount >= 100000
3. amount >= 03. Expression کار نمیکند
علت: فرمت Expression اشتباه است
راهحل
- فرمت صحیح:
{{$json.field}} - از Expression Editor استفاده کنید (Ctrl+Space)
- مطمئن شوید فیلد در داده وجود دارد
4. چند خروجی همزمان اجرا میشوند
علت: این رفتار عادی نیست! Switch فقط یک خروجی را اجرا میکند
راهحل
- بررسی کنید شاید چند نود Switch دارید
- Execution Flow را در Debug Mode ببینید
5. Fallback اجرا نمیشود
علت: Fallback Output تنظیم نشده
راهحل
- در تنظیمات Switch، گزینه "Fallback Output" را تنظیم کنید
- یا آخرین شرط را "Otherwise" بگذارید
6. شرط AND/OR کار نمیکند
علت: تنظیمات Combine نادرست
راهحل
- برای AND: "ALL conditions must be true"
- برای OR: "AT LEAST ONE condition must be true"