در اینجا قصد داریم یک Workflow را از طریق لود شدن یک فایل XAML اجرا نماییم.


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

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

  1. اضافه کردن یک پروژه از نوع Workflow Console Application
  2. طراحی گردش کار
  3. نوشتن کدهای #C برای اجرای Workflow از طریق لود کردن یک رشته XAML
  4. اجرای Workflow
  5. پروژه گردش کار LoadUpWorkflowFromXML چگونه کار می کند؟

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

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

در پنجره Add New Project گزینه workflow را انتخاب کرده و سپس از سمت راست پنجره گزینه Workflow Console Application را انتخاب نمایید. حالا قسمت Name را با مقدار LoadUpWorkflowFromXML تنظیم نمایید و نهایتاً روی دکمه OK کلیک کنید.


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

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

  1. از پنل ToolBox، اکتیویتی Sequence را انتخاب کرده و به داخل صفحه طراحی گردش کار بکشید.
  2. از پنل Toolbox اکتیویتی WriteLine را به داخل Sequence بکشید و فیلد Text آنرا مطابق زیر مقدار دهی نمایید.


3 نوشتن کدهای #C برای اجرای Workflow از طریق لود کردن یک رشته XAML

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

فایل Program.cs

using System;
using System.Activities;
using System.Activities.Statements;
using System.IO;
using System.Collections;
using System.Text;
using System.Activities.XamlIntegration;
namespace LoadUpWorkflowFromXML
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"C:\beyamooz\Chapter01\LoadUpWFFromXML\Workflow1.xaml";
            string tempString = "";
            StringBuilder xamlWFString = new StringBuilder();
            StreamReader xamlStreamReader =
            new StreamReader(filePath);
            while (tempString != null)
            {
                tempString = xamlStreamReader.ReadLine();
                if (tempString != null)
                {
                    xamlWFString.Append(tempString);
                }
            }
            Activity wfInstance = ActivityXamlServices.Load(new StringReader(xamlWFString.ToString()));
            WorkflowInvoker.Invoke(wfInstance);
        }
    }
}

4 اجرای Workflow

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


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

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

فایل Program.cs

string filePath = @"C:\Users\pahlevansadegh.amir\Documents\Visual Studio 2013\Projects\Chapter01\LoadUpWorkflowFromXML\Workflow1.xaml";
            string tempString = "";
            StringBuilder xamlWFString = new StringBuilder();
            StreamReader xamlStreamReader =
            new StreamReader(filePath);
            while (tempString != null)
            {
                tempString = xamlStreamReader.ReadLine();
                if (tempString != null)
                {
                    xamlWFString.Append(tempString);
                }
            }

با استفاده از کد بالا، رشته XML مربوط به Workflow از داخل فایل خوانده شده و آنرا در یک xamlWFString ذخیره می کند.

سپس با استفاده از دستور زیر، ActivityXamlServices رشته ذخیره شده در xamlWFString را می خواند و Workflow ساخته می شود:

فایل Program.cs

Activity wfInstance = ActivityXamlServices.Load(new StringReader(xamlWFString.ToString()));

{module خرید و دانلود فصل اول آموزش Workflow}