TAHA
10-28-2009, 10:44 PM
مرورري بر wf در net.3
http://pnu-club.com/imported/mising.jpg
1- مقدمه ای برWFF
واقعا همه نرم افزارهای تجاری امروزه هدفی مشترک دارندو آن هم پشتیبانی از فرایندهای تجاری است.بعضی از فرآیندها کاملاً اتوماتیک هستندیعنی فقط به ارتباطات میان برنامه های کاربردی استناد می کنند و بقیه آنها که در اکثریت نیز هستند علاوه بر ارتباطات بین برنامه ها به مقداردهی اولیه فرایندها توسط اشخاص ،تایید اسناد ،برطرف نمودن شرایط استثنایی که رخ می دهد و... استناد می کنند.
در هر یک از دوحالت اغلب میتوان یک سری گسسته از گامهای شناخته شده را مشخص نمود که به آن Workflow می گویند. یک Workflow فعالیتهای اشخاص و نرم افزارها درگیر در فرایند را شرح میدهد.هنگامی که این Workflow تعریف می شود، یک برنامه کاربردی می تواند در راستای آن تعریف ساخته شود تا فرایندهای تجاری آن برنامه کاربردی را پشتیبانی کند.
ساختن و اجرا کردن یک Workflow در نرم افزار یک چالش منحصر به فرد را مطرح می کند.برخی از فرآیندهای تجاری برای کامل شدن به ساعتها،روزها و یا ماهها زمان نیاز دارند.برای نمونه چگونه توسعه دهندگان اطلاعات مربوط به حالت جاری Workflow را برای این مدت زمان نگهداری میکنند؟این نوع از Workflowهای طویل الاجرا همچنین می خواهند به صورت نامحدود با سایر نرم افزارها ارتباط برقرار کنند.چگونه می توان چالشهای ایجاد شده توسط ارتباطات ناهماهنگ را بر توسعه دهنگان ساده تر نمود؟و ازآنجاییکه تعاملات در نرم افزار به صورت ثابت مدلسازی شده اند، اشخاص قادر باشند که فرایندهای تجاری را به صورت پویا تغییر دهند (به خاطر اینکه مردم به داشتن انعطاف پذیری بیشتر گرایش دارند).چگونه می¬توان Workflow را برای رفتارهای گوناگون، مضاد و پیش بینی نشده اشخاص مدیریت نمود؟بدون داشتن زیرساخت صحیح براورده کردن نیازمندیهایی شبیه اینها بسیار سخت است.اگر تکنولوزی برای پشتیبانی Workflow ها صریحا طراحی شده باشد، ساختن این نوع مفید از نرم افزارها میتواند سرراست باشد.
Microsoft Windows Workflow Foundation)WWF) برای برآورده کردن این نیازمندیها ساخته شده است.یک جزء هسته از .Net Framework 3 ، که میخواهد یک جزء اساسی سکوی Windows برای توسعه دهندگان باشد.WWF اسکلتی مشترک برای ساختن Workflow ها در برنامه های کاربردی ویندوزی مهیا می نماید خواه این Workflow ها تعاملات بین نرم افزار، تعاملات بین اشخاص و یا هر دو این نوع تعاملات را داشته باشند.WWF در Windows Vista, XP, 2003 قابل است.
3-1- چه برنامه های کاربردی به Workflow نیاز دارند؟
به منظور درک چیزهایی که از Workflow میخواهیم بهتر است که در مورد انواع برنامه¬های کاربردی که ممکن است از Workflow استفاده کنند بیشتر فکر کنیم . در اینجا برخی از این برنامه های کاربردی اورده شده است:
1-برنامه Asp.Net ای که برای کنترل ترتیب نمایش صفحات به کاربرهایش از Workflow استفاده میکند.استفاده از Workflow میتواند تغییر جریان فرمها را بدون تغییر دادن خود فرمها امکان پذیر کند(مانند جداسازی واسط کاربری از منطق برنامه).
2-برنامه مرکب در محیط سرویس گرا ممکن است رفتار هسته اش را با استفاده از Workflowپیاده سازی نماید.هر چه بیشتر و بیشتر برنامه منطقش را از طریق Web Service به معرض نمایش بگذارد،ایجاد فرایندهای تجاری بر روی این سرویسها ساده تر میشود.تکنولوژی Workflow برای منطقی که سرویسها را می خواهد طلب کند و آنها را به در یک برنامه مرکب به هم مرتبط کند یک زیر ساخت مناسب مهیا می¬کند.
3-برنامه ای که یک مشکل مشخص را حل می¬کند مانند CRM یا مدیریت روابط مشتری، یا فروشگاه مجازی ، یا سرویسهای مالی ممکن است که در راستای یک Workflow ساخته شود.این نوع از برنامه ها عموماً فرایندهای تجاری متفاوتی را پیاده¬سازی می¬کنند.ساختن منطقی که فرایندهایش را بر روی یک Workflow هدایت می¬کند، ساخت برنامه را سریعتر می-کند،تغییرات را سریعتر می توان اعمال نمود و سفارشی نمودن آن را ساده تر می نماید.
2- مروری بر روی Visual Studio 2005 Designer for Windows Workflow Foundation
VS2005 برای اینکه توسعه دهندگان بتوانند سریعا Workflowها را توسعه دهند یک واسط گرافیکی بسیار عالی در اختیارشان قرار داده است.
زبان علامتگذاری Workflow های WF:
هر Workflow ای که با WF تولید شود می تواند بوسیله ترکیبی از فایلهای زیر نمایش داده شود
1- یک فایل XML ،یا نشانه گذاری،که شامل فرداده های اعلانی از Workflow باشند.
2- یا یک فایل نشانه گذاری شده در ترکیب با یک فایل Code-Behind که شامل کدهایی است که رفتار و مشخصات Workflow را نمایش می¬دهد.
3- یک یا چند فایل کد که شامل هر دو منطق تعریف شده و رفتار Workflow باشد.
فایل نشانه¬گذاری شده در یک extensible Application Markup Language)XAML) نوشته شده است.
از آنجایی که XAML شمایی منتشر شده دارد،شما می توانید این فایل را با استفاده از یک Text Editor یا XML Editor بسازید.اگرچه VS2005 یک واسط گرافیکی مناسب دارد که این فایل را به صورت اتوماتیک ایجاد می کند.
توسعه دهندگان Workflow می توانند فایل فراداده و منطق آن را از هم جدا و یا با هم مجتمع کنند.
فایل کد یک از دو نوع زیر خواهد بود:
1-یک فایل کد بیس که شامل منطق برنامه را کپسوله می¬کنداین فایل ممکن است به زبان C# یا VB نوشته شده باشد.
2-فایل قوانین Workflow که منطق برنامه را در رابطه با قوانین تعریفی را کپسوله می¬کند تا اینکه کد را کپسوله کند.
خصوصیات این Designer عبارتند از:
یک نمای طراحی drag-and-drop که اجازه ایجاد نمودن Workflow های سفارشی با استفاده از Activity های انتخاب شده از منوی Toolbox را به شما می دهد.
یک واسط که اجازه کارکردن بر روی نشانه گذاری Workflowتان را با استفاده از ابزارهای گرافیکی حسی می دهد.
داشتن یک پنجره برای مشخصات و ویژگیهای آن (Properties window) که توسعه دهندگان به راحتی می توانند مشخصات آن را تنظیم نمایند.
اشکال زدایی Workflowهایتان بوسیله الصاق نمودن به فرآیند Share Point،در ضمن می توانید
در Workflow هایتان breakpoint نیز قرار دهید.
همچنین قادر هستید که خطاها،تصحیح خطاها و مدیریت رخدادها را به فعالیتها متصل کنید.
3- معماری میزبانی Workflow
عاملیت Workflow در WSS )Windows Share Point Services 3.0) برای WF)Microsoft Windows Workflow Foundation) ساخته شده است یعنی یکی از اجزای سکوی ویندوز که اسکلت برنامه نویسی و ابزاری برای توسعه و اجرای برنامه های کاربردی مبتنی بر Workflow را مهیا می¬کند.مخصوصاً WSS از دو جزء اصلیWF یعنی طراح(WF VS2005 Designer) و موتور زمان اجرای آن(WF runtime engine) استفاده می¬کند.
طراح(WF VS2005 Designer) یک افزودنی است که در VS2005 میزبان شده است و توسعه دهندگان را برای ایجاد Workflow ها و فعالیتهای درون آنها توانمند می¬سازد.WWF مدل Workflow ای را مهیا می¬کند تا به توسعه دهندگان این اجازه داده شود که جریان فرایند تجاریشان را توصیف کنند. Workflow ها می¬توانند ساختارهای گرافیکی استفاده شده، مشخصات فایل XML، کد و یا ترکیبی از آنها را بنویسند.
موتور زمان اجرا (WF runtime engine) اجرای Workflow را مدیریت می کند و اجازه میدهد که آنها برا یمدت زمان زیاد و پس از راه اندازی مجدد ماشین بازهم وجود داشته باشند.سرویسهای زمان اجرا مهیاکننده سرویسهای اصلی و مرکزی مانند سرویس تراکنش¬ها و سرویس ماندگاری را برای موتور زمان اجرا هستند.WF به همه فرایندهای برنامه کاربردی این اجازه را می دهد که Workflow هایشان را بر روی WF هاست شده اجرا کنند یعنی WF را در داخل فرایندهایشان بالا بیاورند.وقتی که شما Workflow های WSS را می نویسید،
WSS برای WF میزبان است.
موتور زمان اجرا مهیا کننده سرویسهایی است که هر Workflow ای به آن نیاز دارد مانند ترتیب گذاری، مدیریت حالتها، امکانات پیگیری و پشتیبانی از تراکنش ها. موتور WF هنگام بار گذاری و خارج نمودن از بارگذاری ماشین حالت و همچنین جهت مدیریت حالت جاری Workflow های در حال اجرا مورد استفاده قرار می گیرد.
WSS از موتور زمان اجرای WF میزبانی می کند. WSS پیاده¬سازیهای خاصی از سرویسهای زیر را برای موتور WF فراهم می کند که عبارتند از تراکنش، ماندگاری، نقشها، پیگیری، مبادله پیام.توسعه دهندگان می توانند راه¬حلهای خود را بر اساس WSS ایجاد نمایند.
شکل زیر معماری Workflow در WSS را نشان می دهد.WSS موتور زمان اجرای WF را در داخل فرآیندش میزبانی کرده است و پیاده¬سازی¬های خاصی از سرویسهای مورد نیاز را مهیا نموده است.عاملیت موتور زمان اجرای WF از طریق WSS Object Model به معرض نمایش گذاشته شده است.
3-1- ماندگاری Workflow
یکی از مهمترین سرویسهایی که WSS برای موتور Workflow ای WF مهیا می¬کند سرویس ماندگاری است.Workflow ها شامل تعاملات انسانی که ذاتاً طویل الاجرا هستند. در شرایط ایده¬آل اشخاص زمان نسبتاً زیادی را برای تکمیل کارشان احتیاج دارند.در بسیاری از سناریوهای اداری Workflow ها عموما یک روز طول می¬کشند اگر بیشتر نشود!.حال به Workflow ایی که مسیر تایید اسناد را ایجاد می¬کند توجه کنید این سناریو ممکن است بیش از چند روز به طول بیانجامد برای آینکه باید سند مورد بررسی قرار گرفته و سپس تایید شود.
بسیار واضح است است که قرار دادن تمام نمونه¬های Workflow در تمام زمان اجرا عملی نیست خیلی زود منابع مورد نیازی که توسط Workflow های زمان اجرا انباره شده اند سیستم را به حالت توقف(Halt) می برند.
درعوض ،هنگامی که نمونه Workflow به نقطه¬ای میرسد که منتظر دریافت ورودی از طرف کاربراست WSS آن را از حافظه خارج و اطلاعات مربوط به آن را نگهداری می کند.سپس هر وقت یک رخداد مناسب اتفاق افتاد مانند اینکه کاربر ورودی را واردکند یا ،نیاز به شروع مجدد Workflow داشته باشیم، WSS مجددا آن نمونه از Workflow را با استفاده از داده¬های ذخیره شده به حافظه می آورد به طوری که نمونه Workflow می تواند می تواند دریافت و مدیریت نماید رخداد را همانطوری که مورد نیاز است. بنابراین ازآنجاییکه ممکن است نعداد بیشماری نمونه Workflow در یک زمان معین در حال اجرا باشند اما فقط کسری از آنها واقعا در حافظه هستند و از منابع استفاده می کنند.
http://pnu-club.com/imported/mising.jpg
1- مقدمه ای برWFF
واقعا همه نرم افزارهای تجاری امروزه هدفی مشترک دارندو آن هم پشتیبانی از فرایندهای تجاری است.بعضی از فرآیندها کاملاً اتوماتیک هستندیعنی فقط به ارتباطات میان برنامه های کاربردی استناد می کنند و بقیه آنها که در اکثریت نیز هستند علاوه بر ارتباطات بین برنامه ها به مقداردهی اولیه فرایندها توسط اشخاص ،تایید اسناد ،برطرف نمودن شرایط استثنایی که رخ می دهد و... استناد می کنند.
در هر یک از دوحالت اغلب میتوان یک سری گسسته از گامهای شناخته شده را مشخص نمود که به آن Workflow می گویند. یک Workflow فعالیتهای اشخاص و نرم افزارها درگیر در فرایند را شرح میدهد.هنگامی که این Workflow تعریف می شود، یک برنامه کاربردی می تواند در راستای آن تعریف ساخته شود تا فرایندهای تجاری آن برنامه کاربردی را پشتیبانی کند.
ساختن و اجرا کردن یک Workflow در نرم افزار یک چالش منحصر به فرد را مطرح می کند.برخی از فرآیندهای تجاری برای کامل شدن به ساعتها،روزها و یا ماهها زمان نیاز دارند.برای نمونه چگونه توسعه دهندگان اطلاعات مربوط به حالت جاری Workflow را برای این مدت زمان نگهداری میکنند؟این نوع از Workflowهای طویل الاجرا همچنین می خواهند به صورت نامحدود با سایر نرم افزارها ارتباط برقرار کنند.چگونه می توان چالشهای ایجاد شده توسط ارتباطات ناهماهنگ را بر توسعه دهنگان ساده تر نمود؟و ازآنجاییکه تعاملات در نرم افزار به صورت ثابت مدلسازی شده اند، اشخاص قادر باشند که فرایندهای تجاری را به صورت پویا تغییر دهند (به خاطر اینکه مردم به داشتن انعطاف پذیری بیشتر گرایش دارند).چگونه می¬توان Workflow را برای رفتارهای گوناگون، مضاد و پیش بینی نشده اشخاص مدیریت نمود؟بدون داشتن زیرساخت صحیح براورده کردن نیازمندیهایی شبیه اینها بسیار سخت است.اگر تکنولوزی برای پشتیبانی Workflow ها صریحا طراحی شده باشد، ساختن این نوع مفید از نرم افزارها میتواند سرراست باشد.
Microsoft Windows Workflow Foundation)WWF) برای برآورده کردن این نیازمندیها ساخته شده است.یک جزء هسته از .Net Framework 3 ، که میخواهد یک جزء اساسی سکوی Windows برای توسعه دهندگان باشد.WWF اسکلتی مشترک برای ساختن Workflow ها در برنامه های کاربردی ویندوزی مهیا می نماید خواه این Workflow ها تعاملات بین نرم افزار، تعاملات بین اشخاص و یا هر دو این نوع تعاملات را داشته باشند.WWF در Windows Vista, XP, 2003 قابل است.
3-1- چه برنامه های کاربردی به Workflow نیاز دارند؟
به منظور درک چیزهایی که از Workflow میخواهیم بهتر است که در مورد انواع برنامه¬های کاربردی که ممکن است از Workflow استفاده کنند بیشتر فکر کنیم . در اینجا برخی از این برنامه های کاربردی اورده شده است:
1-برنامه Asp.Net ای که برای کنترل ترتیب نمایش صفحات به کاربرهایش از Workflow استفاده میکند.استفاده از Workflow میتواند تغییر جریان فرمها را بدون تغییر دادن خود فرمها امکان پذیر کند(مانند جداسازی واسط کاربری از منطق برنامه).
2-برنامه مرکب در محیط سرویس گرا ممکن است رفتار هسته اش را با استفاده از Workflowپیاده سازی نماید.هر چه بیشتر و بیشتر برنامه منطقش را از طریق Web Service به معرض نمایش بگذارد،ایجاد فرایندهای تجاری بر روی این سرویسها ساده تر میشود.تکنولوژی Workflow برای منطقی که سرویسها را می خواهد طلب کند و آنها را به در یک برنامه مرکب به هم مرتبط کند یک زیر ساخت مناسب مهیا می¬کند.
3-برنامه ای که یک مشکل مشخص را حل می¬کند مانند CRM یا مدیریت روابط مشتری، یا فروشگاه مجازی ، یا سرویسهای مالی ممکن است که در راستای یک Workflow ساخته شود.این نوع از برنامه ها عموماً فرایندهای تجاری متفاوتی را پیاده¬سازی می¬کنند.ساختن منطقی که فرایندهایش را بر روی یک Workflow هدایت می¬کند، ساخت برنامه را سریعتر می-کند،تغییرات را سریعتر می توان اعمال نمود و سفارشی نمودن آن را ساده تر می نماید.
2- مروری بر روی Visual Studio 2005 Designer for Windows Workflow Foundation
VS2005 برای اینکه توسعه دهندگان بتوانند سریعا Workflowها را توسعه دهند یک واسط گرافیکی بسیار عالی در اختیارشان قرار داده است.
زبان علامتگذاری Workflow های WF:
هر Workflow ای که با WF تولید شود می تواند بوسیله ترکیبی از فایلهای زیر نمایش داده شود
1- یک فایل XML ،یا نشانه گذاری،که شامل فرداده های اعلانی از Workflow باشند.
2- یا یک فایل نشانه گذاری شده در ترکیب با یک فایل Code-Behind که شامل کدهایی است که رفتار و مشخصات Workflow را نمایش می¬دهد.
3- یک یا چند فایل کد که شامل هر دو منطق تعریف شده و رفتار Workflow باشد.
فایل نشانه¬گذاری شده در یک extensible Application Markup Language)XAML) نوشته شده است.
از آنجایی که XAML شمایی منتشر شده دارد،شما می توانید این فایل را با استفاده از یک Text Editor یا XML Editor بسازید.اگرچه VS2005 یک واسط گرافیکی مناسب دارد که این فایل را به صورت اتوماتیک ایجاد می کند.
توسعه دهندگان Workflow می توانند فایل فراداده و منطق آن را از هم جدا و یا با هم مجتمع کنند.
فایل کد یک از دو نوع زیر خواهد بود:
1-یک فایل کد بیس که شامل منطق برنامه را کپسوله می¬کنداین فایل ممکن است به زبان C# یا VB نوشته شده باشد.
2-فایل قوانین Workflow که منطق برنامه را در رابطه با قوانین تعریفی را کپسوله می¬کند تا اینکه کد را کپسوله کند.
خصوصیات این Designer عبارتند از:
یک نمای طراحی drag-and-drop که اجازه ایجاد نمودن Workflow های سفارشی با استفاده از Activity های انتخاب شده از منوی Toolbox را به شما می دهد.
یک واسط که اجازه کارکردن بر روی نشانه گذاری Workflowتان را با استفاده از ابزارهای گرافیکی حسی می دهد.
داشتن یک پنجره برای مشخصات و ویژگیهای آن (Properties window) که توسعه دهندگان به راحتی می توانند مشخصات آن را تنظیم نمایند.
اشکال زدایی Workflowهایتان بوسیله الصاق نمودن به فرآیند Share Point،در ضمن می توانید
در Workflow هایتان breakpoint نیز قرار دهید.
همچنین قادر هستید که خطاها،تصحیح خطاها و مدیریت رخدادها را به فعالیتها متصل کنید.
3- معماری میزبانی Workflow
عاملیت Workflow در WSS )Windows Share Point Services 3.0) برای WF)Microsoft Windows Workflow Foundation) ساخته شده است یعنی یکی از اجزای سکوی ویندوز که اسکلت برنامه نویسی و ابزاری برای توسعه و اجرای برنامه های کاربردی مبتنی بر Workflow را مهیا می¬کند.مخصوصاً WSS از دو جزء اصلیWF یعنی طراح(WF VS2005 Designer) و موتور زمان اجرای آن(WF runtime engine) استفاده می¬کند.
طراح(WF VS2005 Designer) یک افزودنی است که در VS2005 میزبان شده است و توسعه دهندگان را برای ایجاد Workflow ها و فعالیتهای درون آنها توانمند می¬سازد.WWF مدل Workflow ای را مهیا می¬کند تا به توسعه دهندگان این اجازه داده شود که جریان فرایند تجاریشان را توصیف کنند. Workflow ها می¬توانند ساختارهای گرافیکی استفاده شده، مشخصات فایل XML، کد و یا ترکیبی از آنها را بنویسند.
موتور زمان اجرا (WF runtime engine) اجرای Workflow را مدیریت می کند و اجازه میدهد که آنها برا یمدت زمان زیاد و پس از راه اندازی مجدد ماشین بازهم وجود داشته باشند.سرویسهای زمان اجرا مهیاکننده سرویسهای اصلی و مرکزی مانند سرویس تراکنش¬ها و سرویس ماندگاری را برای موتور زمان اجرا هستند.WF به همه فرایندهای برنامه کاربردی این اجازه را می دهد که Workflow هایشان را بر روی WF هاست شده اجرا کنند یعنی WF را در داخل فرایندهایشان بالا بیاورند.وقتی که شما Workflow های WSS را می نویسید،
WSS برای WF میزبان است.
موتور زمان اجرا مهیا کننده سرویسهایی است که هر Workflow ای به آن نیاز دارد مانند ترتیب گذاری، مدیریت حالتها، امکانات پیگیری و پشتیبانی از تراکنش ها. موتور WF هنگام بار گذاری و خارج نمودن از بارگذاری ماشین حالت و همچنین جهت مدیریت حالت جاری Workflow های در حال اجرا مورد استفاده قرار می گیرد.
WSS از موتور زمان اجرای WF میزبانی می کند. WSS پیاده¬سازیهای خاصی از سرویسهای زیر را برای موتور WF فراهم می کند که عبارتند از تراکنش، ماندگاری، نقشها، پیگیری، مبادله پیام.توسعه دهندگان می توانند راه¬حلهای خود را بر اساس WSS ایجاد نمایند.
شکل زیر معماری Workflow در WSS را نشان می دهد.WSS موتور زمان اجرای WF را در داخل فرآیندش میزبانی کرده است و پیاده¬سازی¬های خاصی از سرویسهای مورد نیاز را مهیا نموده است.عاملیت موتور زمان اجرای WF از طریق WSS Object Model به معرض نمایش گذاشته شده است.
3-1- ماندگاری Workflow
یکی از مهمترین سرویسهایی که WSS برای موتور Workflow ای WF مهیا می¬کند سرویس ماندگاری است.Workflow ها شامل تعاملات انسانی که ذاتاً طویل الاجرا هستند. در شرایط ایده¬آل اشخاص زمان نسبتاً زیادی را برای تکمیل کارشان احتیاج دارند.در بسیاری از سناریوهای اداری Workflow ها عموما یک روز طول می¬کشند اگر بیشتر نشود!.حال به Workflow ایی که مسیر تایید اسناد را ایجاد می¬کند توجه کنید این سناریو ممکن است بیش از چند روز به طول بیانجامد برای آینکه باید سند مورد بررسی قرار گرفته و سپس تایید شود.
بسیار واضح است است که قرار دادن تمام نمونه¬های Workflow در تمام زمان اجرا عملی نیست خیلی زود منابع مورد نیازی که توسط Workflow های زمان اجرا انباره شده اند سیستم را به حالت توقف(Halt) می برند.
درعوض ،هنگامی که نمونه Workflow به نقطه¬ای میرسد که منتظر دریافت ورودی از طرف کاربراست WSS آن را از حافظه خارج و اطلاعات مربوط به آن را نگهداری می کند.سپس هر وقت یک رخداد مناسب اتفاق افتاد مانند اینکه کاربر ورودی را واردکند یا ،نیاز به شروع مجدد Workflow داشته باشیم، WSS مجددا آن نمونه از Workflow را با استفاده از داده¬های ذخیره شده به حافظه می آورد به طوری که نمونه Workflow می تواند می تواند دریافت و مدیریت نماید رخداد را همانطوری که مورد نیاز است. بنابراین ازآنجاییکه ممکن است نعداد بیشماری نمونه Workflow در یک زمان معین در حال اجرا باشند اما فقط کسری از آنها واقعا در حافظه هستند و از منابع استفاده می کنند.