🔀

سوئیچ

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

3. 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"

آیا این مستندات مفید بود؟