۱۳۸۹ جمعه ۱۹ شهريور
 
 
 
کلمه عبور خود را فراموش کرده اید؟
 
 
 قسمت دوم آشنایی با Windows Workflow Fundamental
.NET
تاریخ ثبت:  ۸۸/۱۲/۱۴
تعداد نمایش:  ۶۹۱
  نویسنده: مهران شیخ الاسلامی
 
   ۱۰  نفر تا این لحظه به این مقاله امتیاز داده اند.
 
   Bookmark and Share

قسمت دوم : اولین پروژه

بعد از یک معرفی کلی درباره WF و قبل از ادامه آشنایی با جزئیات آن، ابتدا یک پروژه کوچک را با استفاده از WF ایجاد میکنیم تا با محیط برنامه نویسی WF در ویژوال استودیو آشنا شوید. پروژه ما نیز مانند بقیه زبانها که اولین پروژه خود را برای شروع ایجاد میکنند، پروژه Hello world معروف است. در این مثال و بقیه مثال ها که در ادامه می آیند، از زبان برنامه نویسی C# استفاده شده است.

برای ایجاد پروژه Hello world، یک گردش کار ترتیبی ایجاد و یک فعالیت استاندارد را به گردش کار اضافه میکنیم، در انتها نیز کد مورد نظر برای نمایش “Hello world” را اضافه میکنیم.

ایجاد پروژه گردش کار

پروژه های WF نیز به روش مشابهی مانند بقیه انواع پروژه ها در ویژوال استودیو ایجاد میشوند. بعد از اجرای Visual Studion آنگاه  File > New > Project را انتخاب میکنیم. یک پنجره ایجاد پروژه مانند شکل 1 نمایش داده میشود. بعد از انتخاب زبان C#، Workflow را به عنوان یک گروه از قالب های پروژه میبینیم. همانطور که در شکل 1 نشان داده شده است، چندین قالب پروژه در دسترس است. برای این مثال، باید Sequential workflow console application را انتخاب کنید. این موجب ایجاد برنامه در قالب کنسول میشود که از استفاده از WF پشتیبانی میکند. یک گردش کار ترتیبی (Sequential workflow) مدلی است که یک مجموعه از مراحل را که پشت سر هم تعریف شده اند، اجرا میکند.

حالا باید یک نام برای پروژه انتخاب کنیم(مثلا HelloWorldWF)، محل ایجاد پروژه را انتخاب سپس Ok میکنیم تا پروژه ایجاد شود.

شکل 1: پنجره ایجاد پروژه گردش کار جدید

بعد از ایجاد پروژه، پنجره Solution explorer فایل های اولیه را که به عنوان یک قسمت از پروژه ایجاد شده اند را نشان میدهد، که در شکل 2 نشان داده شده است. دقت کنید در شکل 2 پوشه References جهت نمایش ارجاعات اسمبلی برای پروژه نشان باز شده است. با انتخاب پروژه گردش کار به عنوان قالب، ارجاعات اسمبلی مورد نیاز برای استفاده از WF نیز اضافه میشود. اسمبلی های مرتبط با WF در زیر آمده است :

·         System.Workflow.Activities

·         System.Workflow.ComponentModel

·         System.Workflow.Runtime

با این اسمبلی ها کلاس های مرتبط با WF در تعدادی فضای نام (NameSpace) دسته بندی میشوند. قالب پروژه یک فایل Program.cs را نیز ایجاد کرده است. از آنجایی که این یک پروژه در محیط کنسول است، این فایل شامل متد Main مرتبط با پروژه است، که در قسمت های بعد کد تولید شده برای آن را نیز بررسی میکنیم.

شکل 2 پنجره Solution برای پروژه جدید گردش کار

معرفی محیط طراحی گردش کار (Workflow designer)

به همراه پروژه، یک فایل دیگر نیز به نام Workflow1.cs ایجاد شده است. این فایل شامل کد مشخص کننده گردش کار و همچنین محیط ویژوال طراحی گردش کار به عنوان ویرایشگر آن است. وقتی این فایل را باز کنید، چون زمانی است که پروژه ساخته شده است، نمای اولیه محیط طراحی باید شبیه شکل 3 باشد. محیط طراحی گردش کار، اصلی ترین محیطی است که شما برای تعریف گردش کار استفاده میکنید. همچنین میتوانید گردش کار را تماما در کد تعریف کنید. ولی یکی از بهترین ویژگی های WF محیط طراحی آن است، و استفاده از آن کارایی شما را در زمان تعریف گردش کار افزایش میدهد. محیط طراحی امکان کشیدن و انداختن (همان Drag & Drop) فعالیت (Activity) ها از جعبه ابزار ویژوال استودیو به محیط گردش کار را نیز میدهد.

 

استفاده از فعالیت های گردش کار (Workflow activities)

یک فعالیت (Activity) نمایش دهنده یک مرحله یا گام در گردش کار است و اساسی ترین جزء سازنده تمام گردش کار هاست. تمام فعالیت ها بطور مستقیم یا غیر مستقیم از کلاس پایه System.Workflow.ComponentModel.Activity مشتق شده اند. مایکروسافت یک سری از فعالیت های استاندارد را برای استفاده در اختیار قرار داده، ولی میتوانیم در صورت نیاز، فعالیت های سفارشی (Custom Activities) را نیز ایجاد کنیم.

شکل 3 نمای اولیه از محیط طراحی گردش کار

برای گردش کار های ترتیبی (مانند این مثال)، ترتیب فعالیت ها در گردش کار ترتیب اجرا را مشخص میکند. گردش کار ترتیبی یک نقطه شروع و پایان مشخص شده دارد. همانطور که در شکل 3 نشان داده شده، این نقطه ها با یک پیکان در بالای گردش کار (برای شروع) و یک دایره برای پایان در پایین مشخص شده اند. هر چیزی که بین این دو نقطه قرار بگیرد، فعالیت هایی است که توسط شما مشخص شده. بعد از قرار دادن فعالیت ها در گردش کار نیز میتوانید جای آنها را تغییر دهید!

شکل 4 یک سری از فعالیت ها را که توسط مایکروسافت در اختیار شما قرار داده شده نشان میدهد. در قسمت های بعد آنها را به طور خلاصه معرفی میکنم.

شکل 4 نمای جزیی از فعالیت های استاندارد

وارد کردن کد

برای این مثال، فقط باید یک فعالیت کد (CodeActivity) را به درون گردش کار بکشید. فعالیت کد ساده ترین راه برای اجرای هر کدی است که میخواهید به عنوان یک مرحله در گردش کار باشد. گردش کار شما حالا باید مشابه شکل 5 باشد.

شکل 5 گردش کار با یک فعالیت کد

به علامت تعجب در بالای فعالیت دقت کنید. این نشان دهنده وجود یک خطا یا بیشتر مرتبط با این فعالیت است. به عنوان مثال وقتی که فعالیت دارای ویژگی های لازم (Required properties) است که قرار داده نشده اند. (هر فعالیت دارای یک سری ویژگی است گه در زمان طراحی حتما باید قرار داده شوند) اگر روی علامت تعجب روی فعالیت کد کلیک کنید، خطایی مانند "Property ExecuteMode is not set" میبینید. برای رفع این خطا فعالیت را انتخاب و پنجره properties را انتخاب کنید. ویژگی های ممکن برای این فعالیت را میبینید.

شکل 6 پنجره ویژگی ها برای یک فعالیت

ExecuteCode در واقع یک رویداد عمومی (Public event) برای کلاس فعالیت کد است. این ویژگی نام یک اداره کننده رویداد را میخواهد. وقتی که فعالیت کد به عنوان قسمتی از گردش کار اجرا میشود، کدی که داخل این فعالیت قرار داده اید اجرا میشود.

نام codeActivity1_ExecuteCode را در مقدار وارد کرده و enter را بزنید. همچنین میتوانید بر روی فعالیت در محیط طراحی دو بار کلیک کرده تا برای این فعالیت یک اداره کننده (handler) را ایجاد کنید. پس از آن فایل workflow1.cs برای ویرایش باز میشود. در زیر کد موجود در این مرحله را میبینید.

using System;

using System.Workflow.Activities; 

namespace HelloWorldWF

{

    public sealed partial class Workflow1 : SequentialWorkflowActivity

    {

        public Workflow1()

        {

            InitializeComponent();

        }

   private void codeActivity1_ExecuteCode(object sender,

     EventArgs e)

        {

        }

    }

}

دقت کنید که کلاس Workflow1 از کلاس SequentialWorkflowActivities مشتق میشود. این کلاس پایه ای است که برای گردش کار های ترتیبی استفاده میشود. کلاس SequentialWorkflowActivity بطور غیر مستقیم از کلاس Activity مشتق شده، به این معنی که خود گردش کار در واقع یک نوع فعالیت است.

برای شروع، فقط به نمایش یک خط پیام بسنده میکنیم، بنابراین قطعه کد زیر را وارد میکنیم:

private void codeActivity1_ExecuteCode(object sender, EventArgs e)

        {

            Console.WriteLine("Hello");

        }

 

 

  کیفیت مقاله ارائه شده از نظر شما   
برای دادن رتبه به این مقاله می بایست Login کرده باشید.
  درباره نویسنده
مهران شیخ الاسلامی
همه مقاله های نوشته شده توسط این کاربر (۴)
 
  پیام جدید
هیچ سؤال یا نظری برای این موضوع فرستاده نشده است.

 عنوان فرستنده تاریخ

Copyright © 2006 - 2010 All Rights Reserved.
Please direct your questions or comments to