سبد (0)

اکتیویتی Compensate

اکتيويتي Compensate

در مطلب قبل ديديد که اگر اجراي Workflow با خطا مواجه شود، اکتيويتي CompensableActivity آنرا مديريت خواهد کرد. اما اگر بخواهيم زمان اجراي Workflow يک اکتيويتي دلخواه را بدون بروز خطا بصورت دستي compensate کنيم چه بايد کرد. اکتيويي Compensate اينکار را براي ما انجام خواهد داد.


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

 پروژه گردش کار UseCompensateActivity شامل مراحل زير است:

  1. ايجاد يک پروژه از نوع Workflow Console Application
  2. ايجاد و طراحي Workflow
  3. اجراي Workflow
  4. پروژه ي گردش کار UseCompensateActivity  چگونه عمل مي کند؟

ايجاد يک پروژه از نوع Workflow Console Application

در پنل Solution Explorer روي Solution Chapter03 راست کليک کرده و از گزينه ADD زير منوي New Project را انتخاب نماييد. سپس در پنجره Add New Project گزينه workflow را انتخاب کرده و سپس از سمت راست پنجره گزينه Workflow Console Application را انتخاب نماييد. حالا قسمت Name را با مقدار UseCompensateActivity تنظيم نماييد و نهايتاً روي دکمه OK کليک کنيد.


ايجاد و طراحي Workflow

فايل Workflow1.xaml را باز کنيد و کارهاي زير را انجام دهيد:

  1. از پنل Toolbox، اکتيويتي Sequence را بداخل صفحه بکشيد و مطابق عکس زير، متغير token را از نوع CompensationToken تعريف نماييد. (براي تنظيم "Variable type" ابتدا از ليست کشويي گزينه ي Browse for type را انتخاب کنيد و سپس در پنجره نمايان شده کلمه ي "CompensationToken" را وارد نماييد.)
  2. اکتيويتي CompensableActivity را داخل Sequence قرار دهيد. و قسمت Body و CompensationHandler آنرا مطابق تصوير زير تنظيم نماييد. فراموش نکنيد که خصوصيت Result اين اکتيويتي را با متغير token تنظيم نماييد.
  3. اکتيويتي WriteLine را به داخل Sequence بکشيد و آنرا مطابق زير تنظيم کنيد.
  4. در آخر اکتيويتي Compensate را بداخل Sequence کشيده و خصوصيت target آنرا را با متغير token تنظيم نماييد.


اجراي Workflow

پروژه UseCompensateActivity را بعنوان پروژه StartUp تنظيم نماييد و در ادامه براي اجراي Workflow دکمه هاي ميانبر Ctrl+F5 را فشار دهيد:


پروژه ي گردش کار UseCompensateActivity  چگونه عمل مي کند؟

همان طور که متوجه شديد، با استفاده از متغير token، اکتيويي compensate را به CompensableActivity متصل کرديم. حالا از اين طريق اکتيوتي Compensate متوجه خواهد شد که کدام CompensableActivity عمليات جبران يا همان Compensate را انجام خواهد داد ...!

توجه: اگر در Workflow بيش از يک CompensableActivity داشته باشيم، متغير token به آخرين اکتيويتي اي که به آن Assign شده باشد لينک خواهد شد.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه