سوئیچ
Switch
هدایت workflow به چندین مسیر مختلف بر اساس شرایط
نمای کلی
نود Switch به شما اجازه میدهد بر اساس شرایط مختلف، workflow را به 3 یا بیشتر مسیر مختلف هدایت کنید.
قابلیتهای کلیدی:
- ایجاد چندین مسیر خروجی (Outputs)
- تعریف شرط جداگانه برای هر مسیر
- مسیر پیشفرض (Fallback) برای حالتهای نامشخص
- پشتیبانی از همه انواع شرایط (عدد، متن، Boolean، ...)
- ترکیب چند شرط با AND/OR
- خروجیهای نامحدود
کاربردها:
- مسیردهی بر اساس وضعیت سفارش (در انتظار، پرداخت شده، ارسال شده، لغو شده)
- دستهبندی کاربران (رایگان، نقرهای، طلایی، پلاتینیوم)
- هدایت بر اساس اولویت (کم، متوسط، بالا، فوری)
- مسیردهی جغرافیایی (تهران، اصفهان، شیراز، سایر شهرها)
- تفکیک بر اساس نوع فایل (PDF, JPG, DOC, ...)
تفاوت با IF:
- IF: فقط 2 خروجی (True/False)
- Switch: نامحدود خروجی با شرایط مختلف
احراز هویت
احراز هویت
نود Switch نیاز به احراز هویت ندارد.
این نود فقط دادههای ورودی را بررسی و مسیردهی میکند.
نکات کاربردی:
- میتوانید هر تعداد مسیر خروجی (Output) اضافه کنید
- هر مسیر میتواند چند شرط داشته باشد (AND/OR)
- مسیر Fallback (پیشفرض) برای حالتهایی که هیچ شرطی برقرار نیست
عملیاتهای موجود
switch
مسیردهی به چند خروجی مختلف بر اساس شرایط
کاربردهای متداول
1. مسیردهی بر اساس وضعیت سفارش
هدایت سفارش به مسیر مناسب:
شرایط:
- Output 0: وضعیت = "pending" → بررسی موجودی
- Output 1: وضعیت = "paid" → ارسال به انبار
- Output 2: وضعیت = "shipped" → ارسال کد رهگیری
- Output 3: وضعیت = "delivered" → درخواست نظر
- Output 4: وضعیت = "cancelled" → بازگشت وجه
- Fallback: لاگ خطا
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شرایط خاص به عام:
1. VIP کاربر
2. کاربر فعال
3. کاربر معمولی
4. مهمان- 1بهینهسازی: شرایطی که بیشتر اتفاق میافتند را در اول قرار دهید (سریعتر پردازش میشود).
- 1استفاده از Expression Mode: برای شرایط پیچیده، از Expression Mode استفاده کنید:
// روش Expression
{{$json.plan}}_{{$json.region}}
// خروجی: "gold_tehran", "silver_isfahan", ...- 1تست با Sample Data: قبل از Active کردن، با داده نمونه تست کنید.
- 1مقایسه با IF:
2 حالت: IF
3+ حالت: Switch
پیچیده: چند Switch یا Expression- 1ترکیب شرایط: هر Output میتواند چند شرط داشته باشد:
Output 0:
- city = "Tehran"
- AND amount > 100000- 1Debug کردن: از نود Set قبل از Switch برای دیدن مقادیر دقیق استفاده کنید.
- 1Case Sensitivity: مقایسه متن حساس به حروف بزرگ/کوچک است:
// رفع مشکل:
{{$json.status.toLowerCase()}}- 1استفاده از Regex: برای شرایط پیچیده متنی:
{{$json.email}} matches /^[a-zA-Z0-9]+@company\.com$/- 1Performance: Switch خیلی سریع است، حتی با 10+ خروجی.
- 1خروجیهای خالی: اگر Output خالی باشد (بدون نود بعدی)، workflow آنجا تمام میشود.
- 1ترکیب با Loop: میتوانید Switch را در Loop استفاده کنید برای پردازش متفاوت هر آیتم.
- 1نامگذاری Outputs: نامهای واضح برای Outputs بگذارید:
Output 0: "پرداخت_شده"
Output 1: "در_انتظار"
Output 2: "لغو_شده"رفع مشکلات
خطاهای رایج
1. هیچ خروجی اجرا نمیشود
علت: هیچ شرطی برقرار نیست و Fallback تنظیم نشده
راهحل
- حتماً یک Fallback Output تنظیم کنید
- یا شرط "Otherwise" برای آخرین Output اضافه کنید
- شرایط را با داده واقعی تست کنید
2. همه به یک خروجی میروند
علت: اولین شرط همیشه True است
راهحل
- Switch از بالا به پایین بررسی میکند
- اولین شرط True، اجرا میشود و بقیه نادیده گرفته میشوند
- شرایط را از خاص به عام مرتب کنید:
❌ اشتباه:
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"
