‫سوء تفاهم با WF

WF یا همان Window Workflow Foundation فناوری جدیدی است که مایکروسافت از نسخه 3.0 به دات‌نت اضافه کرده و در نسخه 4.0 حسابی به آن رسیده است. ظاهراً این فناوری برای مایکروسافت خیلی با ارزش است چون سعی دارد این فناوری را مدام توسعه داده و از آن در جاهای مختلف استفاده کند. مثلاً مایکروسافت در TFS 2010 در کنار MSBuild از یک لایه اضافی برای راحت‌تر کردن و توسعه امکانات Team Build استفاده کرده که در این لایه از WF 4.0 استفاده شده.

از اولین باری که اسم Windows Workflow را شنیدم فکر می‌کردم قرار است از این تکنولوژی برای راحت‌تر کردن پیاده‌سازی Workflowهای معمول سازمان‌ها استفاده شود. حتی در شرکت قبلی این نقشه را داشتم که از WF برای پیاده‌سازی Workflow در شرکت مشتری استفاده کنم. اما زهی خیال باطل. چون به تازگی به خاطر نیازی که در Team Build 2010 به Workflow پیدا کردم متوجه شدم WF برای آن کار مناسب نبوده است. برای درک بهتر موضوع می‌توان Workflowها را به دو نوع اداری و برنامه‌ای تقسیم کرد:

Workflow اداری: منظور روش انجام کار در ادارات و سازمان‌هاست. وقتی که شما به یک اداره رفته و درخواستی را به کارمند «الف» ارائه می‌دهید یک Workflow را شروع کرده‌اید. این درخواست مثلاً می‌تواند به کارمند «ب» رفته و همین طور در آن اداره در اثر شرایط و ترتیب معین بین افراد مختلف گردش کرده تا نهایتاً به یک حالت خاص برسد. خیلی از نرم‌افزارهای معمول اداری چنین امکانی را پیاده‌سازی کرده و به کاربر اجازه می‌دهند Workflow دلخواه خودش را تعریف و در سیستم استفاده کند. این نرم‌افزارها معمولاً از هیچ فناوری خیلی خاصی به جز امکانات معمول platform توسعه نرم‌افزار استفاده نمی‌کنند.

WorkFlow برنامه‌ای: Workflow را در سطح یک نرم‌افزار تشریح می‌کند. به عنوان یک مثال خیلی ساده، فرض کنید بخشی از یک نرم‌افزار شامل استخراج رکورد خاصی از اطلاعات، تصمیم گیری بر اساس اطلاعات موجود در آن رکورد، ارسال ایمیل، نمایش پیغام و بعضی کارهای دیگر بر اساس آن تصمیم‌گیری باشد. روال توضیح داده شده در اینجا را می‌توان به صورت یک Workflow چند بخشی بیان کرد.

Windows Workflow Foundation یا WF برای پشتیبانی از Workflow برنامه‌ای ایجاد شده است. WF کمک می‌کند که هر کدام از تکه‌های خیلی بزرگ نرم‌افزار به یک Activity تبدیل شود. این تکه‌ها بعداً در قالب یک Workflow با هم ارتباط پیدا می‌کنند. نهایتاً این Workflow در جایی host شده و توسط WF Runtime شروع به اجرا می‌کند. WF مدعیست به برنامه‌نویسان امکان می‌دهد تا بخش‌ها مختلف Workflow به طور موازی و در کامپیوترهای مختلف به اجرا درآورند. در واقع شعار WF نوشتن برنامه‌های بزرگی است که به راحتی برنامه‌های کوچک قابل توسعه و نگهداری هستند.

اما چرا نمی‌توان یک Workflow اداری را با کمک WF پیاده سازی کرد؟ چون به نظز من یک Workflow اداری اولاً تشکیل شده از قطعاتی از اطلاعات نه قطعاتی از نرم‌افزار، ثانیاً نباید از کاربر اداری توقع داشت برای تعریف Workflow از ویژوال استودیو و XAML استفاده کند، ثالثاً استفاده از WF نیاز به Build مجدد نرم‌افزار دارد که این امکان در محیط کاربر اداری فراهم نیست، رابعاً WF ابزار بیش از حد بزرگی برای انجام این کار است. انجام این کار با WF مثل این است که برای بلند کردن یک دوچرخه معمولی از یک جرثقیل چند ده تنی استفاده شود.

Comments

  1. Nasser Hadjloo

    نه به شکل ۱۰۰ درصد اما با این نوشته شما مخالفم

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

    سناریو های زیر رادر نظر بگیرید

    یک سیستم انبارداری که کاربر در آن انبار تعریف می کند سالی چند بار شمارش انبار دارد و می تواند بین این شمارش ها اعمال مختلفی انجام دهد که هر یک درواقع یک ‫sequence از دربرنامه ماست.

    با این سناریو حتی با چند دستور ساده می توان کل گردش کاری را کنترل کرد و اصلا نیازی به استفاده از‫ wf ندید گرچه مشخصا استفاده از ‫wf بازدهی را بالا خواهد برد

    سناریو دو
    سازمانی مثل شرکت نفت و یا شرکت های چند ملیتی را در نظر بگیرید و یا حتی سازمان های بالای ۱۵ هزار کارمند. برای پیاده سازی یک گردش کاری ساده در چنین سازمانهایی عملا با چند دستور ساده نمی توان گردش کرای را کنترل کرد چراکه معماری و کد نویسی به حد زیادی پیچیده می شود ‫و دلیل پیاده سازی wf هم ساده سازی همین عملیات است چرا که اگر هر بخش به شکل یک ‫activity دیده نشود عملا سیستم از ادامه کار باز خواهد ماند

    نظر شما چیست

  2. Hossein Fakoori Nejad

    استفاده از این مفاهیم در شیرپوینت معنی پیدا میکند. الگو سازی گردش کار های اداری – حتی در ادارات بی در و پیکر خودمان – یک صورت مسئله معمولی در میان توسعه دهنده های شیرپوینت است. اگر به این مباحث علاقمندید، پیشنهاد میکنم پیاده سازی یک گردش کار ساده در شیرپوینت را تست کنید

  3. Afshar Mohebbi

    ناصر‫:
    باید اذعان کنم ور رفتن با WF برای من گیج کننده است و خیلی دوست دارم بیشتر اونو بفهمم. با این وجود یک موضوع وجود دارد آن هم که ما معمولاً برنامه‌های آنچنان بزرگی که در سطح یک وزارت خانه به طور یکپارچه اجرا شود نمی‌نویسیم. البته فکر می‌کنم چنین برنامه‌هایی کلا در ایران وجود هم نداشته باشند.

    حسین: آیا شیرپوینت از همین تکنولوژی Windows Workflow Foundation استفاده می‌کند؟ منبع مناسبی برای این موضوع سراغ داری؟ آخه بدم نمیاد ی امتحانی بکنم.

  4. مهدی

    "چون به نظز من یک Workflow اداری اولاً تشکیل شده از قطعاتی از اطلاعات نه قطعاتی از نرم‌افزار"
    workflow از قطعاتی از اطلاعات تشکیل نشده و یک روند رو نشون میده. در این روند اطلاعات هم وجود دارند ولی باز هم دلیل نمشیه که بخوایم اون رو چیز جدایی بدونیم.

    "ثانیاً نباید از کاربر اداری توقع داشت برای تعریف Workflow از ویژوال استودیو و XAML استفاده کند"
    شما میتونید از این designer در نرم افزارهای خودتون استفاده کنید. در مورد Workflow Designer Re-Hosting تحقیق کنید.

    "ثالثاً استفاده از WF نیاز به Build مجدد نرم‌افزار دارد که این امکان در محیط کاربر اداری فراهم نیست"
    الزاما نیازی به این کار نیست و میشه Workflow ها رو در حین اجرا هم لود کرد.

    "رابعاً WF ابزار بیش از حد بزرگی برای انجام این کار است. انجام این کار با WF مثل این است که برای بلند کردن یک دوچرخه معمولی از یک جرثقیل چند ده تنی استفاده شود."
    این که مثلا SQLServer ابزار بزرگی هست، دلیل نمیشه برای کار کوچکی مثل دفترچه تلفن ازش استفاده نکنیم!

  5. مجيد آواژ

    مقاله و نظرات بسيار خوبي بود. با توجه به اينکه آخرين سابقه برنامه نويسي من روي دات نت فريمورک 2 بود، خون اين بچه هاي برنامه نويس شرکت را به شيشه کرده بودم که بايد از اين امکانات با جاي ورک فلو انجين طراحي شده خود شرکت استفاده کنند که حالا موضوع را کامل درک کردم . اما براي ورک فلو سازماني مي تواند از ورک فلو انجين اوراکل و يا موارد مشابه بسياري استفاده کرد.

  6. Afshar Mohebbi

    ‫مهدی، حسین: از راهنمایی‌ها واقعاً ممنونم. مطمئناً دفعه بعدی که سراغ WF برم حتما راجع به این موضوعات هم تحقیق خواهم کرد.

  7. ناشناس

    در صورت تمایل به مستند سازی فرآیند های سازمانی پیشنهاد می کنم سه پست اول این سایت را از دست ندهید :

    http://esmram.com

    در مورد مستند نمودن نمودار گردش کار در نرم افزار بهتر است نسبت به نوع پروژه، از نظر موضوع و اندازه تصمیم گیری کنید. یکپارچگی WF با محیط vs.net می تواند دلیل خوبی برای استفاده از آن برای مستند نمودن نمودار گردش کار نرم افزار باشد.

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

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