آموزش Workflow – آموزش ساخت اکتیویتی با BookmarkReviewed by صابر بوستانی on Jan 7Rating: 2.5
آموزش Workflow – آموزش ساخت اکتیویتی با Bookmark

آموزش Workflow – آموزش ساخت اکتیویتی با Bookmark

با سلام و عرض ادب. در خدمت دوستان عزیز هستیم با آموزش Workflow – آموزش ساخت اکتیویتی با Bookmark از وب سایت آموزش برنامه نویسی سورس باران. در این دوره، آموزش Workflow در ۴۶ جلسه بصورت متنی به شما آموزش داده خواهد شد. لطفا تا انتها با ما همراه باشید…

ساخت اکتیویتی با Bookmark

با استفاده از InArgument و OutArgument و InOutArgument می توانیم داده های دلخواهمان را زمانی که Workflow شروع یا Start می شود به آن پاس دهیم و یا زمانی که پایان یافت از آن دریافت کنیم. اما چگونه می توان داده ها را به Workflow ای که در حال اجراست پاس داد؟

برای انجام این کار Bookmark ها به ما کمک خواهند کرد. در این قسمت از آموزش Workflow قصد داریم با استفاده از Bookmark یک اکتیویتی بنام MyReadLine ایجاد نماییم.

 

مراحل انجام کار

پروژه گردش کار UseBookmark شامل ۶ مرحله زیر است:

  1. اضافه کردن یک پروژه از نوع Workflow Console Application
  2. ساخت اکتیویتی با استفاده از Bookmark
  3. طراحی گردش کار
  4. نوشتن کدهای #C برای اجرای Workflow
  5. اجرای Workflow
  6. پروژه گردش کار UseBookmark چگونه کار می کند؟

 

اضافه کردن یک پروژه جدید از نوع Workflow Console Application

در پنل Solution Explorer مطابق شکل زیر روی Solution Chapter01 راست کلیک کرده و از گزینه ADD زیر منوی New Project را انتخاب نمایید:

در پنجره Add New Project گزینه workflow را انتخاب کرده و سپس از سمت راست پنجره گزینه Workflow Console Application را انتخاب نمایید. حالا قسمت Name را با مقدار UseBookmark تنظیم نمایید و نهایتاً روی دکمه OK کلیک کنید. در پنل Solution Explorer مطابق شکل زیر روی پروژه UseBookmark راست کلیک کرده و از گزینه ADD زیر منوی New Item را انتخاب نمایید:

در پنجره باز شده یعنی Add New Item مطابق زیر Code File را انتخاب کنید و قسمت Name را با MyReadLineActivity تنظیم نمایید:

 

ساخت اکتیویتی با استفاده از Bookmark

اما در ادامه فایل MyReadLineActivity.cs را باز کنید و کدهای زیر را به آن اضافه نمایید:

فایل را ذخیره کنید و با استفاده از دکمه F6 پروژه را Build کنید. حالا اگر فایل Workflow1.xaml را باز کنید و به پنل Toolbox توجه کنید، مشاهده خواهید کرد که اکتیویتی MyReadLine به آن اضافه شده است.

طراحی گردش کار

از پنل Solution Explorerr فایل Workflow1.xaml را باز کنید و Workflow را مطابق زیر طراحی نمایید:

  1. از پنل ToolBox، اکتیویتی Sequence را انتخاب کرده و به داخل صفحه طراحی گردش کار بکشید.
  2. روی اکتیویتی Sequence کلیک کنید و سپس از پایین صفحه، تب Variables را انتخاب نمایید. حالا یک متغییر از نوع Int32 بنام GreetingMessage ایجاد نمایید.
  3. حالا از پایین صفحه، تب Arguments را انتخاب نمایید و مطابق شکل زیر آرگومان BookmarkNameInarg را تعریف نمایید.
  4. از پنل Toolbox اکتیویتی WriteLine را به داخل Sequence بکشید و فیلد Text آنرا مقدار دهی نمایید.
  5. حالا نوبت به استفاده از اکتیویتی سفارشی خودمان است. مطابق شکل زیر اکتیویتی MyReadLine را داخل Sequence قرار دهید و روی آن راست کلیک کرده و Properties را انتخاب نمایید. در ادامه فیلدهای نشان داده را مطابق شکل تنظیم نمایید.
  6. یکبار دیگر از پنل Toolbox اکتیویتی WriteLine را به داخل Sequence بکشید و فیلد Text آنرا مقدار دهی نمایید.

 

نوشتن کدهای #C برای اجرای Workflow

اما در ادامه فایل Program.cs را باز کنید و مطابق زیر کدها را تغییر دهید (قسمت قرمز رنگ):

 

اجرای Workflow

پروژه UseBookmark را بعنوان پروژه StartUp تنظیم نمایید و در ادامه برای اجرای Workflow دکمه های میانبر Ctrl+F5 را فشار دهید. با این کار Workflow ذخیره شده و بدون عملیات debugging نتیجه نشان داده خواهد شد. همان طور که می بینید، نتیجه در Console ویندوز اجرا می شود و اعدادی که انتظارش را داشتیم چاپ می شود:

 

پروژه گردش کار UseBookmark چگونه کار می کند؟

در مرحله ۲ (ساخت اکتیویتی با استفاده از Bookmark)، کلاسی را ایجاد کردیم که از NativeActivity ارثبری دارد. NativeActivity یک اکتیویتی abstract ویژه است که با استفاده از آن می توانید اکتیویتی های پیچیده بسازید.

درباره نحوه ی ساخت اکتیویتی های پیجیده در فصل ۵ بیشتر صحبت خواهد شد.

اما در کد زیر، با استفاده از متد ()context.CreateBookmark یک Bookmark با دو آرگومان BookMarkName و BookMarkCallback ایجاد کرده ایم:

 

زمانی که در فایل Program.cs تابع ()wfApp.ResumeBookmark را فراخوانی می کنیم، متد OnResumeBookmark ای که در فایل MyReadLineActivity.cs تعریف کردیم، اجرا خواهد شد. اما در کد زیر، با تنظیم خصوصیت CanInduceIdle نشان می دهیم که آیا اکتیویتی سفارشی ما می تواند باعث شود که Workflow متوقف (Idle) شود یا خیر؟ مقدار پیشفرض false است:

اما قطعه کد زیر را در نظر بگیرید:

زمانی که دستور بالا اجرا می شود، متد ()OnResumeBookmark در اکتیویتی MyReadLine فراخوانی خواهد شد و مقدار که در کنسول توسط کاربر وارد شده است توسط متد ()Console.ReadLine دریافت شده و به ()OnResumeBookmark پاس داده می شود.

 

 

لیست جلسات قبل آموزش Workflow :

آموزش Workflow – Workflow چیست؟

آموزش Workflow – ساخت اولین برنامه Workflow

آموزش Workflow – آموزش ایجاد Workflow با استفاده از #C

آموزش Workflow – آموزش کار با آرگومان ورودی در Workflow

آموزش Workflow – آموزش کار با آرگومان خروجی در Workflow

آموزش Workflow – آموزش کار با آرگومان ورودی و خروجی Workflow

آموزش Workflow – آموزش استفاده از متغیرها در Workflow

آموزش Workflow – آموزش اجرای غیرهمزمان Workflow