عنوان:

WF:Windows Workflow #1


نویسنده: محمد جواد تواضعی
تاریخ: ۱۳۹۱/۰۹/۰۲ ۲:۱۱
آدرس: www.dntips.ir
چرا از WorkFlow در پروژه‌های نرم افزاری استفاده می‌شود ؟

زمانیکه در حال انجام یک پروژه نرم افزاری هستید که این پروژه دارای پیچیدگی خاصی از لحاظ فرآیند و قوانین کاری می‌باشد بهترین راه حل Workflow Engine یا BPMS Engine می‌باشد.
البته شایان ذکر می‌باشد که میان این دو Engine تفاوت‌های بسیاری وجود دارد. شاید خیلی از برنامه نویس‌ها از خود این سوال را بپرسند که تمام قوانین کاری و فرآیند‌های یک سازمان را می‌توان با کد نویسی انجام داد، چه نیازی به این Engine‌ها برای مکانیزه کردن فرایند‌های یک سازمان است؟
جواب این سوال را با یک مثال ساده آغاز می‌کنم :
فرض کنید یک فرآیند خیلی ساده داریم که کار آن دریافت اطلاعات از بانک اطلاعاتی و ارسال آن به مدیر بخش و دریافت تایید از طرف مدیر می‌باشد. این کار توسط دو کاربر انجام می‌شود که در سازمان نقش و سطح دسترسی مختلفی را دارا می‌باشند و به این نکته توجه کنید و آن اینکه فرض کنید زمانیکه نرم افزار شما در سازمانی در حال انجام کار می‌باشد به شما خبر داده می‌شود که کاربر x به مرخصی رفته و نقش آن به کسی دیگر سپرده شده است و این کار باید از طریق سیستم و با تایید مدیر انجام شود و یا سطح دسترسی افراد در سازمان عوض شود. این ساده‌ترین فرآیند‌ی است که در زمان انجام پروژه با آن رو به رو می‌شویم .
اگر این فرآیند‌های ساده را بخواهیم با  100% کد نویسی  انجام دهیم، تعداد خط کد‌ها بسیار زیاد، زمان بر و انرژی زیادی از گروه گرفته می‌شود و مشکل به تعداد خط کد زیاد نیست، مشکل اصلی آن جایی است که برای پروژه بعدی قصد استفاده از این سیستم را داشته باشیم و نیاز به تغییر در بعضی از قسمت‌های سیستم باشد در این قسمت است که بیشترین زمان و انرژی از گروه گرفته می‌شود ولی در صورت استفاده از Workflow می‌توان در کمترین زمان و هزینه، پیچیده‌ترین Business Logic‌ها را پیاده سازی کرد.
نکته دیگری که در مورد اینگونه Engine‌ها باید گفته شود این است که در معماری SOA نقش فراوانی را دارا می‌باشند .

نظرات

  • Petek در ۱۳۹۱/۰۹/۰۲ ۱۱:۱۱
    با سلام
    آیا کتاب فارسی در زمینه WF در بازار موجود می‌باشد و ممنون می‌شم دوستان در این زمینه دست به قلم شده و مطالبی در زمینه یادگیری آن منتشر کنند. با تشکر
  • مهمان در ۱۳۹۱/۰۹/۰۲ ۱۱:۱۵
    بدون شک، استفاده از Workflow Engine یا BPMS میتواند تاثیر زیادی در رویه‌های سازمانی بگذارد. متاسفانه در ایران کمتر به آنها توجه شده است. امیدوارم مطالب خوبی در آینده در این زمینه بخوانیم
  • مهدی پایروند در ۱۳۹۱/۰۹/۰۲ ۱۲:۳
    مشکل جایی شروع میشه که خروجی هایی که هر سازمان از یه مفهوم دارند متفاوت هست، بطور مثال در حوزه نرم افزار‌های مربوط به حضور و غیاب که به ظاهر شاید فقط ورود و خروج و اضافه کار و کسر کار است ولی در ریز کار و در اعمال قوانین مربوط به سازمان استفاده کننده کاملا متفاوت و شاید تجمیع آنها در قالب هارد کد دست نیافتی باشد: برای نمونه میتوان روی نوع برخورد با اضافه کاری صحبت کرد که در یک سازمان طریق تجمیع و محاسبه این مورد در روز و ماه و سال تفاوت است. جایی حتی ورود قبل از ساعت کاری اضافه کار محسوب میشود و ضرایب و نوع ضرایب آن متغییر و متفاوت است، شاید با گروه بندی و راهکارهایی از این دست بتوان از این سفارشی سازی‌ها تا حدودی در امان ماند ولی در نهایت کار پروژه به اجبار باید به تولید یه موتور تعریف قوانین برای سپردن این مسئولیت (ساخت و ویرایش، بهمراه پیچیدگیهای سازمانی آن) برود که در بعضی از اوقات WF جواب دلخواه هیچ کدام از دو سمت را نمیدهد.
    • محمد جواد تواضعی در ۱۳۹۱/۰۹/۰۲ ۱۵:۵۲
      اینجا است که BPMS Engine‌ها خودشان را نشان می‌دهند. تمام  Bpms‌ها دارای ماژول BRE می‌با شند که شما می‌توانید قوانین کاری را در آن تعریف کنید. بعضی از این BPMS‌ها مانند Intalio Bpms این امکان را به شما می‌دهند که قوانین کاری را در زمان اجرای برنامه تغییر دهید و دیگر سازمان لازم به تغییر فرایند و انتظار برای ایجاد بر نامه جدید نیست. خودشان می‌توانند چارت سازمانی و قوانین کاری خود را در این Engine بدون اینکه لازم به توقف برنامه باشد تعریف و به روز رسانی کنند .
  • مهمان در ۱۳۹۱/۰۹/۰۲ ۱۵:۵۸
    مطلب بسیار جالبیه.از دوستان باتجربه ممنون میشم که BPMS را آموزش دهند.به شخصه با مواردی که ذکر شد کاملا درگیر هستم و به دنبال راه حل.
    • محمد جواد تواضعی در ۱۳۹۱/۰۹/۰۲ ۱۷:۱۱
      آقا محسن اگر عمر یاری کند بعداز آموزش Workflow ابتدا به آموزش زبان BPM می‌پردازم که یک رویکرد تحلیل می‌باشد سپس به آموزش یک BPMS
  • مهمان در ۱۳۹۱/۰۹/۰۲ ۱۸:۲۹
    بی صبرانه منتظر آموزش‌های مفیدتان هستم. بسیار ممنون
  • پویا امینی در ۱۳۹۱/۰۹/۰۵ ۱۹:۲۴
    با سلام. دوست عزیز من روی یه برنامه‌ی کار می‌کنم که یه سری سلسله مراتب داره مثلاً یک درخواست ثبت می‌شود و باید امضا مجاز آن را تایید کند و بعد از آن به سمت سرپرست واحد ارسال می‌شود و سرپرست واحد بعد از آن می‌تواند آن را به سمت کارشناس ارسال کند و هم می‌تواند به سمت انباردار ارسال کند . من این سلسله مراتب را با DB پیاده کردم حال برای سازمان‌های مختلف مجبورم این سلسله مراتب را عوض کنم مثلاً امضا مجاز از این سلسله مراتب حذف می‌شود برای این کار من خیلی باید کد‌های خودم را تغییر دهم آیا می‌توانم این روند را با استفاده از WF پیاده کنم؟

    ممنونم
    • محمد جواد تواضعی در ۱۳۹۱/۰۹/۰۵ ۲۰:۲
      سلام
      شما گردش کاری را به راحتی می‌توانید با WF انجام دهید .
      • پویا امینی در ۱۳۹۱/۰۹/۰۵ ۲۰:۳۵
        آیا منبع خاصی برای کار سراغ دارید؟ ممنون
        • محمد جواد تواضعی در ۱۳۹۱/۰۹/۰۵ ۲۳:۴۰
          شما می‌توانید از طریق این سایت پیگیر باشید به زودی مطالب آموزشی در این زمینه گذاشته می‌شود . من سعی می‌کنم هر چه سریع‌تر این کار را انجام دهم ٬ و لینک یه سری Sample که در زمینه کاری شما است ٬ در سایت قرار می‌دهم .