اکتیویتی Parallel
استفاده ازاکتیویتی Parallel در Workflow
در این قسمت از آموزش Workflow، سیستم گردش کاری طراحی خواهیم کرد که از اکتیویتی Parallel در آن استفاده خواهد شد. با استفاده از اکتیویتی Parallel می توان چندین کار را بصورت غیرهمزمان انجام داد.
مراحل انجام کار
پروژه گردش کار UsingParallelActivity شامل چهار مرحله زیر است:
- ایجاد یک پروژه از نوع Workflow Console Application
- طراحی Workflow و نحوه استفاده از اکتیویتی Parallel
- اجرای Workflow
- سیستم گردش کار UsingParallelActivity چگونه کار می کند؟
ایجاد یک پروژه از نوع Workflow Console Application
یک پروژه جدید از نوع Workflow Console Application ایجاد کرده و آنرا UsingParallelActivity نامگذاری کنید.
طراحی Workflow و نحوه استفاده از اکتیویتی Parallel
از پنل Solution Explorerr فایل Workflow1.xaml را باز کنید و Workflow را مطابق زیر طراحی نمایید:
- از پنل ToolBox، اکتیویتی Parallel را انتخاب کرده و به داخل صفحه طراحی گردش کار بکشید.
- مطابق شکل زیر از پنل Toolbox دو اکتیویتی Sequence را به داخل Parallel بکشید و آنها را مطابق زیر تنظیم نمایید:
توجه: با استفاده از اکتیویتی Delay می توان اجرای workflow را تا گذشت یک زمان مشخص به تأخیر انداخت. برای تنظیم زمان تأخیر، روی اکتیویتی Delay راست کلیک کرده و گزینه Properties را انتخاب نمایید، سپس مطابق شکل بالا، قسمت Duration را با مقدار "00:00:05" تنظیم نمایید. بنابراین بعد از اجرای هر گام حلقه Foreach، پنج ثانیه تأخیر خواهیم داشت.
اجرای Workflow
پروژه UsingParallelActivity را بعنوان پروژه StartUp تنظیم نمایید و در ادامه برای اجرای Workflow دکمه های میانبر Ctrl+F5 را فشار دهید. همان طور که می بینید، گام های حلقه ی Foreach بصورت موازی یا Parallel پیش می رود و بعد از هر بار اجرای گام حلقه، 5 ثانیه تأخیر خواهیم داشت:
سیستم گردش کار UsingParallelActivity چگونه کار می کند؟
اجرای Workflow با اکتیویتی Sequence1 شروع می شود، سپس 5 ثانیه تأخیر خواهیم داشت اما در این فاصله، اجرای Workflow بلافاصله به شاخه دوم اکتیویتی Parallel یعنی Sequence2 منتقل می شود.
حالا Sequence2 با تأخیر مواجه می شود و باید اجرای آن 5 ثانیه متوقف شود، اما در این فاصله، اجرای Workflor به Sequence1 شیفت داده می شود ولی حالا هر دوی شاخه ها یعنی Sequence1 و Sequence2 در وضعیت توقف یا Delay هستند. در اینجا تا زمانی که یکی از شاخه ها بیدار نشود، تمام اکتیویتیِ Parallel منتظر خواهد ماند. و هر کدام از شاخه ها که زودتر بیدار شود، اجرای Workflow به آن شیف داده خواهد شد.
توجه: در اکتیویتی Parallel اجرای تمام شاخه ها در یک thread یکسان انجام خواهد شد، بنابراین شاخه ها بصورت غیرهمزمان یا پی در پی اجرا خواهند شد و زمانی اجرای شاخه ی جدید آغاز می شود که یا شاخه قبلی کامل اجرا شده باشد و یا متوقف (idle) شده باشد.
{module خرید و دانلود فصل دوم آموزش Workflow}
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 9479