اجرای Workflow از طریق لود XAML

چاپ

در اینجا قصد داریم یک 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}