ستقدم لك هذه المقالة التطبيقات ذات الصلة بـ Windows Workflow 4.0 في Visual Studio 2010. آمل أن تساعدك هذه المقالة القصيرة في تطوير Workflow 4.0.
تم تثبيت Visual Studio 2010 مؤخرًا على جهاز ظاهري. الواجهة هي WPF، ولا يتم المبالغة في استخدام وحدة المعالجة المركزية والذاكرة. عند فتح مشروع معمل مرفق بسيط جدًا، يكون استخدام وحدة المعالجة المركزية بشكل عام أقل من 20٪، ويكون استخدام الذاكرة أقل من 800 ميجا.
أقرب إلى المنزل، دعونا نقدم Windows Workflow 4.0.
لقد تغير نموذج سير العمل كثيرًا مقارنة بالإصدار 3.5.
نحن نعلم أن مسارات العمل في الإصدار 3.5 تتم استضافتها في WorkflowRuntime، ويتم إنشاء مثيلات سير العمل وتنفيذها من خلال WorkflowRuntime؛ ولا توجد فئة WorkflowRuntime في الإصدار 4.0، لذا يمكنك بسهولة إنشاء مثيلات WorkflowInstance وتنفيذ مهام سير العمل مباشرةً. الكود الموجود في Lab هو كما يلي:
WorkflowInstance myInstance = New WorkflowInstance(new SayHello(),
new SayHelloInArgs(userName));
myInstance.OnCompleted = مندوب (WorkflowCompletedEventArgs e)
{
Console.WriteLine("*** المفوض OnCompleted قيد التشغيل على مؤشر الترابط {0} ***"،
Thread.CurrentThread.ManagedThreadId);
SayHelloOutArgs outArgs = new SayHelloOutArgs(e.Outputs);
تحية = outArgs.Greeting;
syncEvent.Set();
};
myInstance.OnUnhandledException = مندوب (WorkflowUnhandledExceptionEventArgs e)
{
Console.WriteLine(e.UnhandledException.ToString());
إرجاع UnhandledExceptionAction.Terminate؛
};
myInstance.OnAborted = مندوب (WorkflowAbortedEventArgs e)
{
Console.WriteLine(e.Reason);
syncEvent.Set();
};
myInstance.Run();
توجد فئة WorkflowInvocer في الإصدار 4.0، ويمكن لهذه الفئة أيضًا تنفيذ مهام سير العمل، ولكن يتم استخدام هذه الفئة لاختبار سير العمل بشكل كبير.
[طريقة الاختبار]
الفراغ العام mustReturnGreetingWithName ()
{
قاموس <سلسلة، كائن> الإدخال = قاموس جديد
<سلسلة، كائن>()
{
{"اسم المستخدم"، "اختبار"}
};
معرف القاموس <سلسلة، كائن> الإخراج؛
الإخراج = WorkflowInvocer.Invoc(new SayHello(), input);
Assert.AreEqual("مرحبًا، اختبار من سير العمل 4"،output["Greeting"]);
}
النشاط في الإصدار 3.5 هو الفئة الأساسية لجميع الأنشطة. لتنفيذ الأنشطة المخصصة، ما عليك سوى تجاوز طريقة التنفيذ () للنشاط؛ في الإصدار 4.0، يتم اشتقاق جميع الأنشطة من فئة WorkflowElement المجردة، ويتم تخصيصها افتراضيًا في Visual Studio تُرث الأنشطة من CodeActivity أو CodeActivity<T>، وبالمثل، تحتاج طريقة Execute() أيضًا إلى إعادة كتابتها لتنفيذ منطق التنفيذ المخصص.
الفئة العامة MyActivity1: CodeActivity
{
تجاوز محمي تنفيذ باطلة (سياق CodeActivityContext)
{
// رمز التنفيذ الخاص بك
}
}
بالطبع، لا يزال بإمكانك استخلاص أنشطة مخصصة من النشاط، لكنه يختلف تمامًا عن 3.5.
الفئة العامة SayHelloInCode: النشاط
{
تجاوز محمي WorkflowElement CreateBody()
{
إرجاع تسلسل جديد ()
{
الأنشطة =
{
نيووريتلين ()
{
Text = "مرحبًا بسير العمل 4 في الكود"
}
}
};
}
}
يمكن لوظيفة خدمة سير العمل المضافة حديثًا في الإصدار 4.0 نشر سير العمل مباشرةً كخدمة WCF. وبالطبع، يجب أيضًا تصميم سير العمل باستخدام وظيفة استجابة WCF. يوفر الإصدار 4.0 أربعة أنشطة متعلقة بـ WCF: الاستلام والاستقبال والإرسال والرد من خلال هذه الأنشطة، يمكن تعريف عمليات خدمة WCF بشكل مرئي.
تم تنفيذ النموذج الأساسي لمصمم سير العمل في الإصدار 4.0، ويمكن تنفيذ المصممين المخصصين بسهولة.