آشنایی با انواع Workflow ها در Windows Workflow Foundation

در ادامه مقالات مربوط به جریان های کاری تصمیم دارم تا به مباحث پیشرفته مربوط به طراحی Workflow ها در محیط Windows Workflow Foundation(WF)  و نحوه توسعه و استفاده از آنها در شرپوینت برای افراد علاقمند بپردازم. برای شروع کار با WF ابتدا باید مفاهیمی را در مورد انواع جریان های کاری برای شما تشریح کنم. پس با من همراه باشید.

انواع Workflow ها :

هر جریان کاری (Workflow) در WF (Windows Workflow Foundation) شامل تعدادی فعالیت (Activity) است. هرکدام از این فعالیت ها توابع جریان کاری را اجرا می کنند. جریان کاری برای این فعالیتها مانند یک ظرف است که روشی را برای کنترل چرخه زندگی و ترتیب اجرای آنها فراهم می کند. WF بطور بالقوه جریان های کاری سیستم (system Workflows)و انسانی (human Workflows) را که با هم حالت رقابتی نیز دارند، به شکل یک مدل یکپارچه پشتیبانی می نماید.جریانهای کاری سیستم تمایل به اجرای فعالیت های خوش تعریف، روشهای از پیش تعریف شده، دارند، درحالیکه جریانهای کاری انسانی اینطور نیستند! برای پیاده سازی هر دوی آنها، WF دو نوع Workflow را فراهم می کند: Sequential Workflows ، قادر به اجرای فعالیت هایی که به صورت یک الگوی از پیش تعریف شده هستند، و State Machine Workflows ، که قادر به پاسخدهی به رویدادهای خارجی ای هستند که توسط وضعیت ها اتفاق می افتند. هر دوی آنها بر یک محیط اجرا تکیه دارند و هر دو می توانند از فعالیت های یکسان تعریف شده، استفاده نمایند.نوع Sequential یا ترتیبی به طور طبیعی برای جریان های کاری سیستم مناسب میباشد، درحالیکه نوع State Machine یا ماشین حالت روشی برای مدلسازی تعاریف بی قاعده طبیعی از جریان های کاری انسانی را فراهم می کند. یک جریان کاری مستقل میتواند ترکیبی از هر دو شیوه فوق باشد، یعنی پذیرش ترکیبی از هر دو.

در صورت لزوم، یک برنامه نویس یا توسعه دهنده می تواند انواع مختلفی از جریان های کاری را ایجاد کند، اما برنامه های کاربردی WF بیشتر مواقع از یکی از این دو شیوه استاندارد استفاده می کنند. در ادامه به شیوه پیاده سازی این دو روش خواهم پرداخت.

۱- جریان های کاری ترتیبی (Sequential Workflows)

جریان های کاری ترتیبی برای برنامه های کاربردی، جایی که فعالیت ها به صورت دستورات خوش تعریف در آن اجرا می شوند، انتخاب شده است.این ترتیب یا توالی شامل حلقه ها، انشعاب ها و انواع دیگری از کنترل جریان ها می تواند باشد، اما با این وجود جریان کاری دارای یک مسیر تعریف از شروع تا پایان است. کتابخانه اولیه فعالیت ها(Activities Library) که در WF موجود است، شامل گروهی از فعالیت هاست که می توانند در جریان های کاری ترتیبی استفاده شوند. این activity ها عبارتند از :

  • IfElse : برای اجرای فعالیت ها در ساختارهای شرطی که شامل دو یا چند مسیر ممکن است، استفاده می شود.
  • While : برای اجرای تکراری یک یا چند فعالیت به صورت طولانی، تا زمانیکه شرط درست باشد، استفاده می گردد.
  • Sequence : برای اجرای گروهی از فعالیت ها به صورتی که هر کدام در یک زمان و با یک ترتیب مشخص شده اجرا شوند.
  • Parallel : اجرای دو یا چند فعالیت به صورت موازی و انتظار برای تکمیل شدن همه توالی ها(Sequence) قبل از ادامه سایر توالی ها.
  • Code : برای اجرای تعداد قابل توجهی کد برنامه.
  • CompensationHandler : شامل اطلاحات منطقی یا کدی که در حین وقوع خطا، در زمان اجرای یک گروه خاص از فعالیت های دیگر، اجرا می گردد.
  • Listen : انتظار برای یک رویداد (event) خاص، سپس اجرای یک یا چند فعالیت در زمانیکه رویداد دریافت شود.
  • Delay : به حالت تعلیق درآوردن اجرای یک جریان کاری برای مدت زمان مشخص.
  • CallExternalMethod : فراخوانی یک متد در یک شی(object) که در برنامه کاربردی فعلی وجود دارد ولی خارج از جریان کاری است.
  • HandleExternalEvent : انتظار برای یک فراخوانی از متدی دیگر که در برنامه کاربردی فعلی وجود دارد ولی خارج از جریان کاری است.
  • InvokeWorkflow : وادار کردن جریان کاری دیگر برای شروع به اجرای وظایفش.
  • InvokeWebService : فراخوانی یک سرویس وب(web service).
  • TransactionScope : اجازه ترکیب وظیفه انجام شده توسط یک یا چند فعالیت متفاوت در یک تراکنش مستقل.
  • Terminate : پایان اجرای یک جریان کاری.

دیاگرام زیر یک جریان کاری ترتیبی ساده به همراه چند فعالیت آن را نمایش می دهد که توسط طراح جریان کاری WF (WF Designer) ایجاد شده است.

clip_image002

هر شخصِ با تجربه در این زمینه باید توجه داشته باشد که تعدادی از فعالیت های قراردادی استفاده شده در یک جریان کاری ترتیبی، شبیه همان فعالیت در زبان اجرای پردازش های تجاری یا Business Process Execution Language(BPEL) می باشد. که بصورت اورجینال توسط مایکروسافت و آی بی ام تعریف شده است.BPEL درحال حاضر یک استاندارد OASIS است. زبان آن بر روی تعریف جریانهای کاری سیستم متمرکز شده است، که یک زیر مجموعه از رویکردهای عمومی WF است.برای برنامه نویسانی که علاقمند به استفاده از BPEL هستند، مایکروسافت یک تکنولوژی بنام BPEL for Microsoft Workflow Foundation فراهم کرده است. این تکنولوژی به شما اجازه می دهد تا پردازشهای منطقی تعریف شده در BPEL را به داخل جریان کاری WF وارد کنید.

 

۲- جریان های کاری ماشین حالت(State Machine Workflow)

برخلاف جریان کاری ترتیبی، که فعالیت های خود را در یک الگوی از پیش تعریف شده سازماندهی می کند، یک جریان کاری ماشین حالت فعالیت های خود را در یک ماشین حالت متناهی سازماندهی می کند. دیاگرام زیر یک جریان کاری ماشین حالت ساده را که توسط دیزاینر WF ایجاد شده است، نمایش می دهد. در شکل پیشنهادی، برنامه نویس گروهی از حالت ها و رویدادها را تعریف کرده است که تراکنش های بین حالت ها را راه اندازی می کنند.

clip_image004

سازمان دهی بدین شکل یک فعالیت، زمانیکه توالی درستی از رویدادها جهت پیشبرد جریان کاری معلوم نباشد، خیلی مفید است. مانند راه اندازی رویدادهای پردازش های تجاری، یا زمانیکه تعدادی از احتمالات باعث تعریف همه مسیرهای غیر عملی ممکن شوند. جریان کاری ماشین حالت، پرش از مراحل را ساده تر کرده است و پرش به هر مرحله ای در پردازش تجاری یا لغو پردازش تجاری در هر زمان که بخواهیم، امکان پذیر است.

بنابراین ماشین حالت می تواند جریان های کاری ای را که با تفکر اغلب سازمانها تطابق دارد فراهم نماید و پردازشهای تجاری آنها را مستند سازد. در این صورت مدلسازی جریان های کاری بدین شکل، به برنامه نویسان و افراد Business ای کمک می کند تا به طور موثرتری با یکدیگر فعالیت کنند.

کتابخانه اولیه فعالیت ها(Activities Library)، شامل فعالیت هایی است که برای ایجاد جریان های کاری ماشین حالت طراحی شده اند. این فعالیت ها عبارتند از :

  • State : یک وضعیت یا حالت در یک ماشین حالت جریان کاری را نمایش می دهد.
  • EventDriven : تعیین یک تغییر وضعیت برای یک یا چند فعالیت که باید اجرا شوند و در یک وضعیت ویژه قرار دارند، وقتیکه رویداد خاصی دریافت شود.
  • SetState : تغییر وضعیت ماشین حالت جریان کاری. یک تغییر حالت ممکن است وضعیت جریان کاری را عوض کند یا نکند.
  • StateInitialization : تعیین یک یا چند فعالیت که باید بصورت پیش فرض اجرا شوند، زمانیکه یک حالت ویژه وارد شده است.
  • StateFinalization : تعیین یک یا چند فعالیت که باید بصورت پیش فرض اجرا شوند، زمانیکه یک حالت ویژه خارج شده است.

توضیحات و تعاریف فوق برای دو روش جریان های کاری ترتیبی و ماشین حالت، مقدمه ای بود برای استفاده از آنها در طراحی جریان های کاری در محیط WF، که در نوشتار بعدی به آن خواهم پرداخت. امیدوارم این نوشتار مختصر برای شناخت ساختارهای انواع Workflow ها مفید واقع گردد.

موفق باشید.

پاسخ دهید