قبل از هر چیز: این نوشته صرفا ترجمه خودمونی یه مقاله‌ست از قسمت بلاگ سایت workflowengine . io با همین عنوان یعنی WORKFLOW ENGINE VS . STATE MACHINE . چون من نمیدونم Workflow Engine و State Machine رو چی ترجمه کنم که درست باشه توی کل ترجمه از خود این کلمه‌ها استفاده میکنم. وقتی که شرکتها تصمیم می‌گیرند که یه سیستمی رو پیاده‌سازی کنند که بهشون کمک کنه که فرایندهای کسب و کارشون رو مدیریت کنند، انتخابشون معمولا بین یه Workflow Engine و یه State Machine خواهد بود. هرچند که رفتار هر دو سیستم خیلی شبیه هم هست، ولی هر کدومشون چندتا ویژگی متمایز دارن. پس، لازمه که مزایا و معایب هر دو رو آنالیز کنیم تا بتونیم تصمیم بگیریم کدوم برای نیازهای شرکت ما مناسب‌تره. در کل تفاوت این دو تا توی تمرکزشون نهفته‌س. توی یه Workflow Engine ، در حالی که یک State Machine تا موجب انشعاب به فعالیت بعدی بشه. به بیان دیگه، State Machine اما Workflow Engine نه. برای اینکه بفهمیم کدوم سیستم رو انتخاب کنیم لازمه که چندتا از ویژگی‌های عمده‌شون رو بررسی کنیم. یک Workflow Engine زمانی که تسک‌ها یکی بعد یکی دیگه انجام میشن از الگوی ترتیبی پشتیبانی می‌کنه. قدم بعدی توی workflow تا زمانی که قدم قبلی کامل نشده شروع نمیشه. مثال هم یک سندی که تا وقتی که توسط وکیل امضا نشده توسط رییس امضا نمیشه. نتیجه اینکه، به نظر میرسه Workflow Engine توی ماهیتش. State Machine اما کار می‌کنه. چون قدم‌ها توی State Machine با رویداد/اکشن‌های مشخصی برداشته می‌شن، نمی‌شه گفت که قطعا به یه نظم دقیق انجام میشن. از این نظر State Machine ها انعطاف‌پذیری بیشتری دارن. هرچند که، وقتی که شرکت یه نیازهای کاری جدید داره، عوض میشه. یه State Machine رو تصور کنید که این سه تا رو داره: و. الان، ما می‌تونیم سه تا رو ببینیم و خب های واضح بین اونها رو. بعدا شما تصمیم می‌گیرید که چندتا دیگه هم اضافه کنید، مثلا، و. اینجا تعداد ها و های بینشون به طور قابل توجهی زیاد میشه. به علاوه، هنگام اضافه کردن های جدید، باید بدونید که نمی‌تونید یکی از اون‌ها رو بدون شکستن بقیه تغییر بدید. در نتیجه بجای اینکه خیلی ساده چندتا عملکرد سیستم رو عوض کنید، خودتون رو توی موقعیتی می‌بینید که دارید یک سیستم جدید رو از پایه می‌سازید. به همین خاطر، وقتی که می‌بینید که قوانین کسب و کارتون ممکنه در طول زمان تغییر کنه (‌که تقریبا اجتناب‌ناپذیر هست) Workflow Engine گزینه بهتریه. در نگاه اول استفاده از State Machine ظاهرا ساده به نظر میاد. توسعه‌دهنده فقط لازمه که فرایندهای شرکت رو بررسی کنه و یک دیاگرامی رسم کنه از چندتا، و هایی که باعث به این ها میشن. اما مشکل اصلی State Machine اینه که در عمل، فقط به درد بیزنس‌هایی با مشکلات تک‌بعدی می‌خوره. State Machine برای پروژه‌هایی که چند متمایز دارن خوب کار می‌کنه، اما. یه ساده که با State Machine ساخته شده ممکنه به مشکلاتی زیادی بخوره. بعد شما به های زیادی فکر می‌کنید، مثل، یا. به علاوه، هر کدوم از این ها می‌تونه به های جدید تقسیم بشه. مثلا، شما ممکنه بخواید یه اضافه کنید یا اینکه اضافه کنید که یه مشتری جدید از طریق چه کانالی پیدا شده (ایمیل، تماس تبلیغاتی و غیره) وقتی که تلاش کنید این های جدید رو رسم کنید، سیستم به زودی غیرقابل مدیریت میشه. ممکنه در نگاه اول Workflow Engine ها خیلی پیچیده به نظر بیان، چون چندتا عنصر جدید باید پیاده بشن. اما. وقتی که به خوبی پیاده‌سازی بشه، مزایا به پیچیدگی‌ها می‌چربه. به نظر میاد. استفاده از اونها برای هم رایجه، به دلیل قابلیت اختصاص‌دادن سریع وظایف به مجریای مختلف. به علاوه، Workflow Engine ها مستندات ثابتی دارن. یه توسعه‌دهنده جدید می‌تونه بدون صرف ساعت‌های زیاد و بررسی کدهای بی‌پایان برنامه، سیستم رو راحت بشناسه. همکاری افراد بیرون و درون شرکت برای توسعه کسب و کار لازمه. پس، یه پلتفورم مشترک که توسط شرکت استفاده میشه باید برای همه اعضا تمیز و واضح باشه. مدیرها باید بتونن ببینن که یه اکشن توی هر زمانی توی کدوم وضعیت بوده و هست. معمولا State Machine خوانایی خوبی نداره. در هر لحظه و. پس وقتی که میخواید هایی رو معرفی کنید که ممکنه طبق شرایطی اتفاق بیوفتن، تعداد های شما دو برابر میشه. وقتی هم که تعداد ها خیلی زیاد بشه، خوانایی سیستم به صفر میل می‌کنه. در مقایسه با State Machine ها، Workflow Engine ها ذاتا قابل پیش‌بینی‌ترن. اونها از ی استفاده می‌کنن که همیشه از ابتدا تعیین‌شده‌ن. فرض کنید که شما نیازمند تایید اسناد توسط هردو نفر و هستید. ممکنه سند توسط هر کدومشون اول امضا بشه. اگه یه Workflow Engine رو انتخاب کنید، این روند از قبل تعیین شده‌ست. مثلا اول مدیر مستقیم سند رو امضا میکنه، بعد مدیر کل. در نتیجه، مدیر کل سند رو نمی‌گیره تا وقتی که مدیر مستقیم امضاش کنه. این هم هیچ‌وقت تغییر نمی‌کنه. در یک الگوی State Machine ، این کاربره که تصمیم می‌گیره که کدوم مدیر اول باید سند رو امضا کنه. در این مثال تصمیم‌ها رو افراد می‌گیرن. اما وقتی State Machine ها بدست عوامل بیرونی کنترل بشن، ممکنه های مختلفی منجر به تکمیل شدن بشن. از این نظر، سود Workflow Engine بیشتره، شما می‌تونید با مشخص کردن تمام ها و های منتهی به ها، اون رو طراحی کنید. در کل، همینم هست که کرده.