نود Execute Sub-Workflow در N8N

نود Execute Sub-Workflow در N8N

نود Execute Sub-Workflow یکی از کاربردی‌ترین نودهای N8N برای ساخت ورکفلوهای ماژولار، قابل استفاده مجدد و تمیز است. با این نود می‌توانید از داخل یک ورکفلو، یک ورکفلو دیگر را اجرا کنید؛ درست مثل اینکه در برنامه‌نویسی یک تابع جداگانه ساخته باشید و هرجا لازم شد آن را صدا بزنید.

این نود زمانی بسیار ارزشمند می‌شود که در پروژه‌های واقعی چندین فرآیند تکراری دارید؛ مثلاً اعتبارسنجی شماره موبایل، ارسال پیامک، ثبت لاگ، ساخت گزارش، پردازش سفارش یا ارسال اطلاعات به CRM. به جای اینکه این منطق را در چندین ورکفلو کپی کنید، آن را در یک Sub-Workflow می‌سازید و با نود Execute Sub-Workflow بارها از آن استفاده می‌کنید.

معرفی نود در N8N

نود Execute Sub-Workflow برای اجرای یک ورکفلو دیگر از داخل ورکفلوی فعلی استفاده می‌شود. ورکفلوی اصلی را معمولاً Parent Workflow و ورکفلویی که اجرا می‌شود را Sub-Workflow یا Child Workflow می‌نامند.

این نود در دسته نودهای Core / Action / Flow Control قرار می‌گیرد، چون مستقیماً به یک سرویس خارجی متصل نمی‌شود، بلکه جریان اجرای ورکفلوها را مدیریت می‌کند.

کاربرد اصلی این نود، جدا کردن منطق‌های تکراری و ساخت فرآیندهای قابل استفاده مجدد است. برای مثال اگر در چندین ورکفلو نیاز دارید اطلاعات مشتری را اعتبارسنجی کنید، می‌توانید یک ورکفلوی جدا به نام Validate Customer بسازید و در همه جا با Execute Sub-Workflow آن را اجرا کنید.

نقش Execute Sub-Workflow در ساختار N8N

  • ماژولار کردن ورکفلوها: هر بخش منطقی از فرآیند را می‌توان در یک ورکفلوی جدا قرار داد.

  • کاهش تکرار: به جای کپی کردن نودها در چندین ورکفلو، یک بار می‌سازید و چندین بار استفاده می‌کنید.

  • نگهداری ساده‌تر: اگر منطق ارسال پیامک تغییر کند، فقط Sub-Workflow مربوط به پیامک را ویرایش می‌کنید.

  • تست‌پذیری بهتر: می‌توانید هر Sub-Workflow را جداگانه تست و عیب‌یابی کنید.

  • ساخت معماری حرفه‌ای‌تر: برای پروژه‌های بزرگ، این نود کمک می‌کند ورکفلوها تمیز، قابل توسعه و قابل مدیریت باقی بمانند.

موارد استفاده

نود Execute Sub-Workflow در پروژه‌های ساده و پیچیده کاربرد زیادی دارد. هر زمانی که یک منطق تکراری یا قابل جدا شدن دارید، این نود می‌تواند ساختار ورکفلو را حرفه‌ای‌تر کند.

۱. اعتبارسنجی اطلاعات ورودی

فرض کنید چندین فرم مختلف دارید که اطلاعات کاربران را دریافت می‌کنند. در همه فرم‌ها باید ایمیل، شماره موبایل و نام کاربر بررسی شود. به جای اینکه این منطق را در هر ورکفلو تکرار کنید، یک Sub-Workflow با نام Validate User Data می‌سازید.

  • ورکفلوی اصلی: Webhook دریافت فرم

  • نود Execute Sub-Workflow: اجرای Validate User Data

  • ادامه مسیر: اگر داده معتبر بود، ذخیره در دیتابیس یا ارسال به CRM

۲. ارسال پیامک یا ایمیل از چند ورکفلو

در بسیاری از پروژه‌ها ارسال اعلان در چند بخش تکرار می‌شود؛ مثل ثبت سفارش، تغییر وضعیت پرداخت، ایجاد تیکت یا تکمیل فرم. می‌توانید یک Sub-Workflow برای ارسال پیامک یا ایمیل بسازید و از همه ورکفلوها آن را صدا بزنید.

  • Parent Workflow: ثبت سفارش در فروشگاه

  • Execute Sub-Workflow: اجرای Send SMS Notification

  • Sub-Workflow: دریافت شماره، متن پیام و ارسال از طریق HTTP Request یا سرویس پیامکی

۳. ثبت لاگ و خطا در یک سیستم مرکزی

یکی از بهترین کاربردهای این نود، ساخت یک ورکفلوی مرکزی برای ثبت لاگ است. هر ورکفلو می‌تواند هنگام خطا یا رخداد مهم، یک Sub-Workflow را اجرا کند تا اطلاعات را در Google Sheets، PostgreSQL، Notion، Airtable یا یک API داخلی ذخیره کند.

  • دریافت نام ورکفلو، شناسه اجرا، پیام خطا و زمان رخداد

  • ذخیره اطلاعات در دیتابیس یا ابزار مانیتورینگ

  • ارسال اعلان به Slack، Telegram یا Email در صورت خطای مهم

۴. پردازش سفارش در فروشگاه اینترنتی

در یک فروشگاه اینترنتی، بعد از ثبت سفارش ممکن است چند مرحله اجرا شود: بررسی پرداخت، ثبت فاکتور، ارسال پیامک، به‌روزرسانی موجودی و اطلاع به انبار. هر کدام از این مراحل می‌تواند یک Sub-Workflow مستقل باشد.

  • Check Payment Status

  • Create Invoice

  • Update Inventory

  • Send Order Notification

۵. پاک‌سازی و نرمال‌سازی داده‌ها

اگر داده‌ها از منابع مختلف وارد N8N می‌شوند، احتمالاً فرمت آن‌ها یکسان نیست. می‌توانید یک Sub-Workflow برای نرمال‌سازی داده بسازید؛ مثلاً تبدیل شماره موبایل به فرمت استاندارد، حذف فاصله‌های اضافی، تبدیل تاریخ میلادی به شمسی یا یکسان‌سازی نام فیلدها.

ترکیب با نودهای دیگر

  • Webhook + Execute Sub-Workflow: دریافت درخواست از بیرون و سپردن پردازش اصلی به یک Sub-Workflow.

  • IF + Execute Sub-Workflow: اجرای یک Sub-Workflow فقط در صورت برقرار بودن شرط خاص.

  • Switch + Execute Sub-Workflow: اجرای Sub-Workflow متفاوت بر اساس نوع رویداد، وضعیت سفارش یا نوع کاربر.

  • Split In Batches + Execute Sub-Workflow: پردازش مرحله‌ای تعداد زیادی آیتم و جلوگیری از فشار زیاد روی سیستم.

  • Error Trigger + Execute Sub-Workflow: ارسال خطاها به یک فرآیند مرکزی ثبت و هشدار.

  • Set / Edit Fields + Execute Sub-Workflow: آماده‌سازی دقیق داده ورودی قبل از ارسال به Sub-Workflow.

پارامترها و تنظیمات

تنظیمات دقیق این نود ممکن است بسته به نسخه N8N کمی متفاوت باشد. در نسخه‌های جدید، این قابلیت معمولاً با نام Execute Sub-Workflow یا Execute Workflow دیده می‌شود. مفهوم اصلی در هر دو حالت یکسان است: اجرای یک ورکفلوی دیگر از داخل ورکفلوی فعلی.

پیش‌نیاز مهم در Sub-Workflow

ورکفلویی که قرار است توسط Execute Sub-Workflow اجرا شود، معمولاً باید با نود Execute Sub-Workflow Trigger یا Execute Workflow Trigger شروع شود. این نود نقش نقطه ورود Sub-Workflow را دارد و داده‌هایی را که از Parent Workflow ارسال می‌شوند دریافت می‌کند.

Source / منبع ورکفلو

  • نام پارامتر: Source

  • نوع داده: گزینه انتخابی

  • کاربرد: مشخص می‌کند ورکفلویی که باید اجرا شود از کجا خوانده شود.

  • گزینه‌های رایج: Database، URL، Local File یا Parameter بسته به نسخه و نوع نصب N8N.

  • مثال عملی: اگر Sub-Workflow شما در خود N8N ذخیره شده است، گزینه Database را انتخاب کنید و سپس ورکفلوی موردنظر را از لیست انتخاب کنید.

Database

  • نوع داده: انتخاب از لیست یا وارد کردن ID

  • کاربرد: اجرای ورکفلویی که داخل پایگاه داده N8N ذخیره شده است.

  • مثال عملی: انتخاب ورکفلوی Send SMS Notification از لیست ورکفلوها.

  • نکته: این رایج‌ترین و ساده‌ترین حالت برای اکثر کاربران است.

Workflow

  • نام پارامتر: Workflow

  • نوع داده: Resource Locator، لیست انتخابی، ID یا Expression

  • کاربرد: مشخص می‌کند کدام ورکفلو باید اجرا شود.

  • مثال عملی: انتخاب ورکفلویی با نام Normalize Phone Number یا وارد کردن ID آن مثل 12.

  • نکته مهم: استفاده از ID معمولاً پایدارتر از نام ورکفلو است، چون اگر نام ورکفلو تغییر کند، ID همچنان ثابت می‌ماند.

Workflow ID

  • نوع داده: عدد یا Expression

  • کاربرد: اجرای یک ورکفلو بر اساس شناسه داخلی آن در N8N.

  • مثال عملی: اگر ID ورکفلوی اعتبارسنجی کاربر 24 باشد، مقدار Workflow ID را برابر 24 قرار دهید.

  • مثال Expression: استفاده از مقدار {{$json.workflowId}} برای انتخاب پویا.

  • نکته مهم: اجرای پویا بر اساس ID قدرتمند است، اما باید مطمئن باشید مقدار ورودی معتبر و کنترل‌شده است.

URL

  • نوع داده: متن / URL

  • کاربرد: دریافت تعریف ورکفلو از یک آدرس خارجی.

  • مثال عملی: خواندن فایل JSON یک ورکفلو از یک آدرس داخلی سازمانی.

  • نکته مهم: این حالت برای استفاده روزمره توصیه نمی‌شود، مگر اینکه مدیریت نسخه و امنیت URL به‌درستی انجام شده باشد.

Local File

  • نوع داده: مسیر فایل

  • کاربرد: اجرای ورکفلو از روی فایل JSON ذخیره‌شده روی سرور.

  • مثال عملی: مسیر /data/workflows/normalize-user.json در یک نصب self-hosted.

  • نکته مهم: این گزینه معمولاً فقط در محیط‌های self-hosted کاربرد دارد و ممکن است در نسخه Cloud محدود باشد.

Wait for Sub-Workflow Completion

  • نام پارامتر: Wait for Sub-Workflow Completion

  • نوع داده: Boolean / روشن یا خاموش

  • کاربرد: مشخص می‌کند Parent Workflow منتظر پایان اجرای Sub-Workflow بماند یا بلافاصله ادامه دهد.

  • حالت روشن: Parent Workflow صبر می‌کند تا Sub-Workflow کامل شود و خروجی آن را دریافت می‌کند.

  • حالت خاموش: Sub-Workflow اجرا می‌شود و Parent Workflow بدون انتظار ادامه می‌دهد.

  • مثال عملی: برای اعتبارسنجی داده باید روشن باشد، چون نتیجه اعتبارسنجی برای ادامه مسیر لازم است. برای ثبت لاگ یا ارسال اعلان غیرضروری می‌تواند خاموش باشد.

Workflow Inputs

  • نام پارامتر: Workflow Inputs یا داده ورودی

  • نوع داده: JSON، فیلدهای تعریف‌شده یا داده آیتم‌های ورودی

  • کاربرد: داده‌هایی را مشخص می‌کند که از Parent Workflow به Sub-Workflow ارسال می‌شوند.

  • مثال عملی: ارسال userId، email، phone و orderId به Sub-Workflow.

  • نکته: بهتر است قبل از این نود با Set یا Edit Fields فقط داده‌های لازم را آماده کنید تا Sub-Workflow ورودی تمیز و قابل پیش‌بینی داشته باشد.

Mode / نحوه اجرای آیتم‌ها

  • نوع داده: گزینه انتخابی یا رفتار وابسته به نسخه

  • کاربرد: مشخص می‌کند داده‌ها به صورت یک‌جا یا آیتم‌به‌آیتم به Sub-Workflow ارسال شوند.

  • مثال عملی: اگر ۱۰۰ سفارش دارید و می‌خواهید هر سفارش جدا پردازش شود، اجرای آیتم‌به‌آیتم منطقی‌تر است. اگر Sub-Workflow قرار است یک گزارش کلی از همه سفارش‌ها بسازد، ارسال همه آیتم‌ها با هم مناسب‌تر است.

Continue On Fail

  • نام تنظیم: Continue On Fail

  • نوع داده: Boolean

  • کاربرد: اگر Sub-Workflow خطا داد، اجرای Parent Workflow کاملاً متوقف نشود.

  • مثال عملی: اگر ارسال پیامک شکست خورد اما ثبت سفارش نباید متوقف شود، می‌توانید Continue On Fail را فعال کنید.

  • نکته مهم: فعال کردن این گزینه بدون مدیریت خروجی خطا می‌تواند باعث پنهان شدن مشکلات شود. بهتر است بعد از آن از IF یا Error handling استفاده شود.

Retry On Fail

  • نام تنظیم: Retry On Fail

  • نوع داده: Boolean همراه با تعداد تلاش و فاصله زمانی

  • کاربرد: در صورت شکست اجرای نود، N8N چند بار دوباره تلاش می‌کند.

  • مثال عملی: اگر Sub-Workflow شامل درخواست HTTP به یک API ناپایدار است، فعال کردن Retry می‌تواند خطاهای موقت را کاهش دهد.

Always Output Data

  • نام تنظیم: Always Output Data

  • نوع داده: Boolean

  • کاربرد: حتی اگر نود خروجی نداشته باشد، یک خروجی خالی تولید می‌کند تا مسیر بعدی کاملاً قطع نشود.

  • مثال عملی: وقتی Sub-Workflow گاهی خروجی ندارد اما می‌خواهید ورکفلوی اصلی همچنان به نودهای بعدی برسد.

Execute Once

  • نام تنظیم: Execute Once

  • نوع داده: Boolean

  • کاربرد: اجرای نود فقط یک بار، حتی اگر چند آیتم ورودی وجود داشته باشد.

  • مثال عملی: وقتی Sub-Workflow باید یک گزارش کلی بسازد و نباید برای هر آیتم جداگانه اجرا شود.

نکات مهم هنگام پیکربندی

  • Sub-Workflow باید ذخیره شده باشد تا از ورکفلوی اصلی قابل انتخاب یا اجرا باشد.

  • برای دریافت ورودی از Parent Workflow، در Sub-Workflow از Execute Sub-Workflow Trigger یا Execute Workflow Trigger استفاده کنید.

  • اگر به خروجی Sub-Workflow نیاز دارید، گزینه Wait for Sub-Workflow Completion را فعال نگه دارید.

  • از ارسال داده‌های حجیم و غیرضروری به Sub-Workflow خودداری کنید.

  • برای جلوگیری از خطا، ساختار ورودی و خروجی Sub-Workflow را مشخص و ثابت نگه دارید.

  • در پروژه‌های تیمی، نام‌گذاری استاندارد برای Sub-Workflowها اهمیت زیادی دارد؛ مانند util_validate_email یا service_send_sms.

ورودی‌ها و خروجی‌ها

نود Execute Sub-Workflow داده‌های ورودی خود را از نود قبلی دریافت می‌کند و آن‌ها را به Sub-Workflow ارسال می‌کند. در Sub-Workflow، نود Trigger مخصوص این داده‌ها را دریافت می‌کند و سپس پردازش انجام می‌شود.

ورودی نود

ورودی می‌تواند یک یا چند آیتم JSON باشد. هر آیتم معمولاً شامل داده‌هایی است که باید در Sub-Workflow پردازش شوند.

{  "userId": 145,  "name": "Ali Ahmadi",  "email": "ali@example.com",  "phone": "09121234567",  "orderId": "ORD-10025"}

نمونه ورودی چند آیتمی

[  {    "userId": 145,    "email": "ali@example.com",    "phone": "09121234567"  },  {    "userId": 146,    "email": "sara@example.com",    "phone": "09129876543"  }]

دریافت ورودی در Sub-Workflow

در Sub-Workflow، نود Execute Sub-Workflow Trigger داده‌های ارسال‌شده را دریافت می‌کند. بعد از آن می‌توانید با نودهایی مثل Set، IF، Code، HTTP Request یا دیتابیس، داده را پردازش کنید.

خروجی نود

اگر گزینه Wait for Sub-Workflow Completion فعال باشد، خروجی نود Execute Sub-Workflow معمولاً خروجی نهایی Sub-Workflow خواهد بود. بنابراین بهتر است در انتهای Sub-Workflow با نود Set یا Edit Fields خروجی را به شکل استاندارد آماده کنید.

نمونه خروجی اعتبارسنجی کاربر

{  "userId": 145,  "isValid": true,  "normalizedPhone": "+989121234567",  "emailStatus": "valid",  "message": "User data is valid"}

نمونه خروجی در حالت خطا

{  "userId": 145,  "isValid": false,  "errors": [    "Invalid email format",    "Phone number is required"  ]}

تفاوت خروجی در حالت انتظار و بدون انتظار

  • Wait فعال: خروجی Sub-Workflow به Parent Workflow برمی‌گردد و می‌توانید در نودهای بعدی از آن استفاده کنید.

  • Wait غیرفعال: Parent Workflow منتظر نتیجه نمی‌ماند. این حالت برای کارهای جانبی مثل ثبت لاگ، ارسال اعلان یا اجرای فرآیندهای پس‌زمینه مناسب است.

ساختار پیشنهادی ورودی و خروجی

برای جلوگیری از پیچیدگی، بهتر است همیشه برای Sub-Workflow یک قرارداد داده‌ای مشخص داشته باشید.

{  "meta": {    "sourceWorkflow": "Order Created",    "correlationId": "exec-2024-001"  },  "data": {    "orderId": "ORD-10025",    "customerId": 145,    "amount": 2500000  }}

در خروجی نیز بهتر است وضعیت پردازش، پیام و داده نهایی را جدا کنید.

{  "success": true,  "message": "Invoice created successfully",  "data": {    "invoiceId": "INV-9001",    "orderId": "ORD-10025"  }}

نکات پیشرفته و ترفندها

۱. ساخت کتابخانه داخلی از Sub-Workflowها

در پروژه‌های بزرگ می‌توانید مجموعه‌ای از Sub-Workflowهای عمومی بسازید؛ مثل ارسال پیامک، اعتبارسنجی ایمیل، ثبت لاگ، نرمال‌سازی تاریخ، دریافت توکن API یا ذخیره فایل. این کار باعث می‌شود تیم شما به مرور یک کتابخانه آماده از فرآیندهای قابل استفاده مجدد داشته باشد.

۲. استفاده از correlationId برای ردیابی اجراها

وقتی چندین ورکفلو به هم متصل هستند، عیب‌یابی سخت‌تر می‌شود. بهتر است در Parent Workflow یک شناسه ردیابی بسازید و آن را به همه Sub-Workflowها ارسال کنید.

{  "correlationId": "order-ORD-10025-2024",  "source": "Order Workflow",  "payload": {    "orderId": "ORD-10025"  }}

با این روش می‌توانید در لاگ‌ها، دیتابیس یا ابزارهای مانیتورینگ، تمام مراحل مربوط به یک سفارش یا کاربر را دنبال کنید.

۳. استانداردسازی خروجی Sub-Workflowها

بهتر است همه Sub-Workflowها خروجی مشابه داشته باشند. مثلاً همیشه success، message، data و errors را برگردانند. این کار باعث می‌شود Parent Workflow راحت‌تر بتواند نتیجه را بررسی کند.

{  "success": false,  "message": "Payment verification failed",  "data": null,  "errors": [    {      "code": "PAYMENT_NOT_FOUND",      "detail": "No payment found for this order"    }  ]}

۴. ترکیب با IF برای مدیریت نتیجه

بعد از Execute Sub-Workflow می‌توانید از نود IF استفاده کنید و بر اساس مقدار success مسیرهای مختلف بسازید.

  • اگر success برابر true بود، ادامه فرآیند اصلی اجرا شود.

  • اگر success برابر false بود، خطا ثبت شود یا پیام هشدار ارسال گردد.

۵. پردازش دسته‌ای برای داده‌های زیاد

اگر تعداد زیادی آیتم دارید، بهتر است قبل از Execute Sub-Workflow از Split In Batches استفاده کنید. این کار فشار روی سیستم، APIها و دیتابیس را کاهش می‌دهد.

  • دریافت ۱۰ هزار رکورد از دیتابیس

  • تقسیم به دسته‌های ۱۰۰تایی

  • اجرای Sub-Workflow برای هر دسته

  • ذخیره نتیجه و رفتن به دسته بعدی

۶. جلوگیری از وابستگی بیش از حد

هرچند Sub-Workflowها بسیار مفید هستند، اما اگر تعداد فراخوانی‌ها بیش از حد زیاد شود، درک جریان کلی سخت می‌شود. بهتر است هر Sub-Workflow یک مسئولیت مشخص داشته باشد و از ساخت زنجیره‌های طولانی و مبهم پرهیز شود.

۷. نسخه‌بندی Sub-Workflowها

برای فرآیندهای حساس، بهتر است هنگام تغییرات بزرگ، نسخه جدیدی از Sub-Workflow بسازید. مثلاً به جای تغییر مستقیم Send Invoice، یک نسخه Send Invoice v2 ایجاد کنید و پس از تست، Parent Workflowها را به نسخه جدید متصل کنید.

۸. استفاده از Set در ابتدای Sub-Workflow

در ابتدای Sub-Workflow، یک نود Set یا Edit Fields قرار دهید تا ورودی را تمیز و استاندارد کند. این کار باعث می‌شود اگر Parent Workflow داده اضافه ارسال کرد، پردازش داخلی Sub-Workflow تحت تأثیر قرار نگیرد.

۹. استفاده از Set در انتهای Sub-Workflow

در انتهای Sub-Workflow نیز یک نود Set قرار دهید تا خروجی نهایی دقیقاً همان چیزی باشد که Parent Workflow انتظار دارد. این روش مخصوصاً برای تیم‌ها و پروژه‌های بلندمدت بسیار مهم است.

۱۰. استفاده در معماری سرویس‌محور داخلی

می‌توانید هر Sub-Workflow را مثل یک سرویس داخلی در نظر بگیرید. برای مثال:

  • User Service: اعتبارسنجی و تکمیل اطلاعات کاربر

  • Notification Service: ارسال پیامک، ایمیل و پیام تلگرام

  • Invoice Service: ساخت و ارسال فاکتور

  • Logging Service: ثبت خطاها و رخدادها

محدودیت‌ها و خطاها

محدودیت‌های مهم

  • نیاز به طراحی دقیق ورودی و خروجی: اگر ساختار داده‌ها مشخص نباشد، Parent Workflow و Sub-Workflow به‌راحتی دچار ناسازگاری می‌شوند.

  • پیچیدگی در عیب‌یابی: وقتی چندین Sub-Workflow پشت سر هم اجرا می‌شوند، پیدا کردن محل خطا دشوارتر می‌شود.

  • احتمال ایجاد حلقه بی‌نهایت: اگر یک ورکفلو خودش را مستقیم یا غیرمستقیم صدا بزند، ممکن است اجرای بی‌پایان ایجاد شود.

  • مصرف منابع بیشتر: هر اجرای Sub-Workflow یک اجرای جداگانه محسوب می‌شود و می‌تواند روی حافظه، زمان اجرا و صف پردازش اثر بگذارد.

  • وابستگی به دسترسی و Credentialها: Sub-Workflow باید به Credentialها و منابع موردنیاز خود دسترسی داشته باشد.

  • محدودیت در Cloud یا self-hosted: بعضی گزینه‌ها مثل Local File ممکن است فقط در نصب self-hosted در دسترس باشند.

خطای رایج: Workflow not found

  • علت: Workflow ID اشتباه است، ورکفلو حذف شده یا دسترسی کافی وجود ندارد.

  • راه‌حل: ID ورکفلو را بررسی کنید، از انتخاب از لیست استفاده کنید و مطمئن شوید ورکفلو ذخیره شده است.

خطای رایج: Sub-workflow has no trigger

  • علت: ورکفلوی مقصد با نود Execute Sub-Workflow Trigger یا Execute Workflow Trigger شروع نشده است.

  • راه‌حل: در ابتدای Sub-Workflow نود Trigger مناسب را اضافه کنید.

خطای رایج: No data returned

  • علت: Sub-Workflow خروجی نهایی ندارد، مسیر اجرا به نودی ختم شده که داده‌ای تولید نکرده یا Wait for Completion غیرفعال است.

  • راه‌حل: در انتهای Sub-Workflow یک نود Set قرار دهید و خروجی استاندارد بسازید. همچنین وضعیت Wait for Sub-Workflow Completion را بررسی کنید.

خطای رایج: Execution timed out

  • علت: Sub-Workflow بیش از حد طولانی اجرا شده، API خارجی پاسخ نداده یا حجم داده زیاد است.

  • راه‌حل: داده‌ها را دسته‌بندی کنید، Timeout نودهای HTTP را تنظیم کنید، Retry منطقی قرار دهید و مراحل سنگین را به فرآیندهای جدا تقسیم کنید.

خطای رایج: Maximum call stack یا اجرای تکراری بی‌پایان

  • علت: یک ورکفلو خودش یا ورکفلویی را صدا می‌زند که دوباره به آن برمی‌گردد.

  • راه‌حل: وابستگی بین ورکفلوها را بررسی کنید و از فیلدهایی مثل depth یا executionLevel برای محدود کردن عمق فراخوانی استفاده کنید.

خطای رایج: Credential error

  • علت: Sub-Workflow به Credential موردنیاز دسترسی ندارد یا Credential حذف/تغییر کرده است.

  • راه‌حل: Credentialهای داخل Sub-Workflow را بررسی و دوباره متصل کنید. توجه داشته باشید Credentialهای Parent Workflow به‌صورت خودکار جایگزین Credentialهای Child Workflow نمی‌شوند.

خطای رایج: Unexpected input format

  • علت: Parent Workflow داده‌ای با ساختار متفاوت از انتظار Sub-Workflow ارسال کرده است.

  • راه‌حل: قبل از Execute Sub-Workflow از Set یا Code برای تبدیل داده به ساختار استاندارد استفاده کنید. همچنین در ابتدای Sub-Workflow اعتبارسنجی انجام دهید.

روش پیشنهادی برای مدیریت خطا

  • در Sub-Workflow از IF برای تشخیص خطاهای قابل پیش‌بینی استفاده کنید.

  • خروجی خطا را با ساختار استاندارد برگردانید.

  • در Parent Workflow نتیجه را بررسی کنید و مسیر موفق یا ناموفق بسازید.

  • برای خطاهای مهم از یک Sub-Workflow مرکزی برای ثبت لاگ استفاده کنید.

ایده ها

  • سیستم مرکزی ارسال اعلان: یک Sub-Workflow بسازید که بر اساس نوع پیام، اعلان را از طریق SMS، Email، Telegram یا Slack ارسال کند.

  • موتور اعتبارسنجی داده: یک Sub-Workflow عمومی برای بررسی ایمیل، شماره موبایل، کد ملی، فیلدهای الزامی و فرمت تاریخ طراحی کنید.

  • ثبت لاگ هوشمند: همه ورکفلوها خطاها و رخدادهای مهم را به یک Sub-Workflow مرکزی ارسال کنند تا در دیتابیس ذخیره و در صورت نیاز هشدار داده شود.

  • پردازش چندمرحله‌ای سفارش: هر مرحله مثل بررسی پرداخت، ساخت فاکتور، کاهش موجودی و ارسال پیامک در یک Sub-Workflow جدا قرار بگیرد.

  • سیستم غنی‌سازی اطلاعات مشتری: یک Sub-Workflow بسازید که با دریافت ایمیل یا شماره موبایل، اطلاعات مشتری را از CRM، دیتابیس، ابزار ایمیل مارکتینگ و APIهای دیگر جمع‌آوری کند.

منابع و مستندات اصلی

دسته بندی: N8N برچسب ها:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هجده + 2 =