Workflow SDK: توابع TypeScript رو دوامپذیر کن
خلاصهٔ کاملتر
Workflow SDK یه کتابخونه از Vercel هست که میخواد مفهوم «دوامپذیری» (durability) رو مستقیماً توی کد TypeScript بیاره. ایده اصلی سادهست: کافیه دایرکتیو "use workflow" رو به اول یه تابع async اضافه کنی تا اون تابع به یه workflow مدیریتشده تبدیل بشه که میتونه pause کنه، از سر گرفته بشه، و در صورت خطا بهصورت خودکار retry بزنه.
قبلاً برای ساختن فرآیندهای طولانیمدت، برنامهنویسها باید صف پیام (message queue)، workers، cron job و سیستم scheduling جداگانه راه میانداختن. Workflow SDK این همه زیرساخت رو به چند تابع ساده تقلیل میده. یه نمونه واقعی از جامعه کاربری SDK اینه که یه تیم تمام scheduling service، صفها، workers و cron jobهاشون رو با ۵ تابع در یه فایل جایگزین کردن.
ساختار اصلی کار به این شکله: یه تابع workflow با دایرکتیو "use workflow" تعریف میشه و قدمهای (steps) اون رو توابعی با دایرکتیو "use step" تشکیل میدن. میشه بین steps با sleep("7 days") صبر کرد بدون اینکه منابع سرور مصرف بشه:
export async function userSignup(email) {
"use workflow";
const user = await createUser(email);
await sendWelcomeEmail(email);
// مکث ۷ روزه بدون مصرف منابع
await sleep("7 days");
await sendOneWeekCheckInEmail(email);
return { userId: user.id, status: "done" };
}هر step میتونه خطاهای fatal رو با پرتاب FatalError مشخص کنه تا SDK بدونه کِی نباید retry بزنه. این جداسازی منطق workflow از جزئیات پیادهسازی، کد رو خواناتر و قابلنگهداریتر میکنه.
یکی از ویژگیهای مهم SDK اینه که observability (قابلیت مشاهده اجرای هر مرحله) بهصورت توکار داره. بدون هیچ تنظیم اضافهای میشه زمان اجرای هر step، وضعیتش و ترتیب اجراشون رو دید. روی Vercel این اطلاعات مستقیماً توی داشبورد نمایش داده میشه.
SDK با فریمورکهای رایج مثل Next.js، Nuxt، SvelteKit، Astro، Hono، Fastify، Express و TanStack Start کار میکنه. همچنین یکپارچگی عمیقی با AI SDK داره که برای ساختن AI Agentهای دوامپذیر — عوامل هوش مصنوعی که میتونن چند روز اجرا بشن و وضعیتشون رو حفظ کنن — ایدهآله.
نکات کلیدی:
- با یه دایرکتیو "use workflow" هر تابع async دوامپذیر میشه
- retry خودکار، نگهداری حالت، و sleep طولانی بدون مصرف منابع
- steps با "use step" تعریف میشن و میتونن خطای fatal throw کنن
- observability توکار با نمایش جزئیات هر مرحله از اجرا
- سازگار با فریمورکهای محبوب و AI SDK؛ قابل اجرا روی Vercel یا self-hosted




