ارثبری از کلاس CodeActivity

چاپ

ساخت یک اکتیویتی با ارثبری از کلاس CodeActivity

همان طور که در شکل زیر مشاهده می کنید کلاس CodeActivity که یک کلاس Abstract است، از کلاس Activity ارثبری دارد:

اما کلاس CodeActivity متدی بنام Execute دارد که می توانیم با override کردن آن در اکتیویتی سفارشی مان کد دلخواهمان را داخل آن قرار دهیم. در این قسمت از آموزش Workflow قصد داریم اکتیویتی سفارشی ای ایجاد کنیم که داخل یک فایل Text می نویسد.


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

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

  1. اضافه کردن فایل MyActivity.cs
  2. ايجاد و طراحي Workflow
  3. اجراي Workflow
  4. پروژه ي گردش کار UsingExistsInCollectionActivity چگونه عمل مي کند؟

اضافه کردن فایل FileWriter.cs

در پروژه ActivityLibrary، یک فایل جدید با نام FileWriter.cs ایجاد نمایید و کدهای زیر را در آن قرار دهید:

FileWriter.csle

using System;
using System.Activities;
using System.Threading;
public sealed class FileWriter : CodeActivity
{
    [RequiredArgument]
    public InArgument fileName { get; set; }
    [RequiredArgument]
    public InArgument fileData { get; set; }
    protected override void Execute(CodeActivityContext context)
    {
        string lines = fileData.Get(context);
        // Write the string to a file.
        System.IO.StreamWriter file =  new System.IO.StreamWriter(fileName.Get(context));
        file.WriteLine(lines);
        //simulate writing process.
        Thread.Sleep(5000);
        file.Close();
    }
}

 حالا پروژه را Build کنید تا اکتیویتی سفارشی ما یعنی FileWriter در پنل Toolbox ظاهر شود.


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

در پروژه WorkflowConsoleApp  یک Workflow جدید با نام TestFileWriterWF.xaml اضافه نمایید. توجه داشته باشید که برای اضافه کردن یک Workflow جدید به پروژه، در واقع در پنجره Add New Item باید گزینه Activity را انتخاب کنیم.

حالا برای طراحی Workflow مراحل زیر را طی نمایید:

  1. از پنل Toolbox، اکتيويتي Sequence را بداخل صفحه بکشيد.
  2. یک اکتیویتی WriteLine اضافه کنید و خصوصیت Text آنرا با "Start" تنظیم نمایید.
  3. از پنل Toolbox، اکتيويتي FileWriter را در زیر اکتیویتی WriteLine قرار دهید آرگومان های fileData و fileName را مطابق زیر تنظیم نمایید.
  4. در آخر یک اکتیویتی WriteLine دیگر اضافه کنید و خصوصیت Text آنرا با "End" تنظیم نمایید:


اجراي Workflow

پروژه WorkflowConsoleApp را بعنوان پروژه StartUp تنظيم نماييد و در ادامه براي اجراي Workflow، فایل Program.cs را بصورت زیر تغییر داده و دکمه هاي ميانبر Ctrl+F5 را فشار دهيد:

Program.cs

Activity workflow1 = new TestFileWriterWF();
WorkflowInvoker.Invoke(workflow1);

همانطور که در تصویر زیر مشاهده می کنید، بعد از اجرای کامل Workflow فایل beyamooz.txt در مسیر مشخص شده ایجاد شده است:


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

همان طور که در بالا مشاهده فرمودید، استفاده از کلاس CodeActivity بسیار ساده است. از این کلاس برای ایجاد اکتیویتی های ساده استفاده می کنیم. در واقع تنها کاری که باید انجام دهیم  override کردن متد Execute در اکتیویتی سفارشی مان است.

متد Execute زمانی فراخوانی می شود که اکتیویتی سفارشی مان اجرا شود.