سبد (0)

تبدیل Workflow به XAML

در برنامه های واقعی، انواع Workflow ها را با نوشتن کد ایجاد می کنیم و مرتب نیاز داریم که آنها را تست کنیم. اما همان طور که می دانید ذخیره سازی، اجرا و یا انتقال Workflow ها از طریق یک فایل XAML صورت می پذیرد.

در این آموزش قصد داریم یک نمونه Workflow را به یک رشته XAML تبدیل کنیم.


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

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

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

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

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

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

فایل Workflow1.xaml را که بصورت پیشفرض ایجاد شده است حذف نمایید.


2 نوشتن کدهای #C برای ایجاد Workflow

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

فایل Program.cs

using System;
using System.Linq;
using System.Activities;
using System.Activities.Statements;
using System.Text;
using System.Xaml;
using System.Activities.XamlIntegration;
using System.IO;

namespace ConvertWFObjectToXML
{
    /// 
    /// Author : Amir Pahlavan sadegh
    /// provided to you by : http://www.beyamooz.com
    /// 
    class Program
    {
        static void Main(string[] args)
        {
            //Create a Workflow instance object
            ActivityBuilder ab = new ActivityBuilder();
            ab.Implementation = new Sequence()
            {
                Activities ={new WriteLine{Text="Message from Workflow"}}
            };
            //Convert Workflow instance to xml string
            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);
            XamlWriter xw = ActivityXamlServices.CreateBuilderWriter(new XamlXmlWriter(sw,new XamlSchemaContext()));
            XamlServices.Save(xw, ab);
            Console.WriteLine(sb.ToString());

            Console.WriteLine("-------------\nProvided to you by : http://www.beyamooz.com \npress any key ...");
            Console.ReadLine();
        }
    }
}


3 اجرای Workflow

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

یکبار دیگر به خروجی چاپ شده در کنسول توجه فرمایید:

رشته چاپ شده در کنسول

<?xml version="1.0" encoding="utf-16"?>
<Activity x:Class="{x:Null}" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Sequence>
        <WriteLine Text="Hello" />
    </Sequence>
</Activity>

4 پروژه گردش کار ConvertWFInstanceToXML چگونه کار می کند؟

کد زیر را در نظر بگیرید:

فایل Program.cs

XamlServices.Save(xw, ab);           

XamlServices نیازهای معمول برای کار کردن با فایل های XAML را برای ما فراهم می کند. این کارها عبارت اند از:

  1. reading XAML
  2. writing an object graph
  3. reading an object
  4. writing out an XAML file

دستور بالا، شیء ActivityBuilder را می خواند (reading) و داخل یک شیء XamlWriter می نویسد (writing).

با استفاده از ActivityBuilder می توانیم اکتیویتی ها را بسته بندی کنیم بطوری که XAML خروجی آن یک Workflow قابل لود خواهد بود. به عبارت دیگر اگر مثلاً ما یک اکتیویتی Sequence را بصورت مستقیم در یک XamlWriter ذخیره کنیم، XML Workflow خروجی را نمی توان برای استفاده های بعدی لود نمود. اما با وجود ActivityBuilder اینکار قابل انجام خواهد بود. 

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

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