تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الثامن والستون - مقدمة إلى عالم wwf
#3
تطبيق عملي :

سنقوم الآن بعمل تطبيق بسيط ، سنقوم بالطلب من المستخدم ادخال كلمة المرور ، في حالة كون كلمة المرور صحيحة سوف نقوم بعرض رسالة ترحيب وإلا اعادة المحاولة لادخال كلمة المرور مرة أخرى .

لذا قم ببدء مشروع جديد Sequential Workflow Console Application وسمه كما تريد ، ستظهر لك شاشة المصمم بالشكل التالي كبداية :


الآن سنقوم بادراج Code Activity وسنضع الأمر التالي في الحدث codeActivity1_ExecuteCode :

C#:

كود :
private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("***** First WPF Example *****\n\n");
Console.ForegroundColor = ConsoleColor.White;
}
vb.net:

كود :
Private Sub codeActivity1_ExecuteCode(ByVal sender As Object, ByVal e As EventArgs)
Console.ForegroundColor = ConsoleColor.Yellow

Console.WriteLine("***** First WPF Example *****" & Chr(10) & "" & Chr(10) & "")

Console.ForegroundColor = ConsoleColor.White
End Sub
الخطوة التالية هي اضافة حلقة تكرارية لا يتم الخروج منها الا بادخال كلمة مرور صحيحة ، لذا قم بسحب While Loop ، وسنقوم بتحديد ال Condition الذي ستخرج منه اما بناء على :

- دالة function تعود بقيمة منطقية Boolean بحيث يتم استدعائها مع كل Loop وتعيد false للتوقف أو true للاستمرار.
- او بناء على declarative rule condition اي عن طريق جملة خاصة .

في مثالنا هذا سنعرف دالة AskAgain والتي ستعيد لنا True في حالة الجملة الخاطة لاعادة السؤال فيما تعيد لنا false في حالة الوصول لكلمة السر الصحيحة .

لذا من الشاشة الجانبية اكتب اسم الدالة في الشرط Condition بالشكل التالي - بعد تعريف خاصية بكلمة المرور اولاً - :


وكود الدالة :
C#:

كود :
public string Password { get; set; }
private void AskAgain(object sender, ConditionalEventArgs e)
{
Console.Write("Enter Password: ");
Password = Console.ReadLine();
if (Password == "Ahmed Gamal")
e.Result = false;
else
e.Result = true;
}
vb.net:

كود :
Public Property Password() As String
Get
End Get
Set
End Set
End Property
Private Sub AskAgain(ByVal sender As Object, ByVal e As ConditionalEventArgs)
Console.Write("Enter Password: ")
Password = Console.ReadLine()

If Password = "Ahmed Gamal" Then
e.Result = False
Else
e.Result = True
End If
End Sub

الآن خطوتنا الأخيرة هي اضافة Activity فيما لو لم يتم ادخال كلمة مرور صحيحة ، سيتم فيها طباعة كلمة This Password is Wrong ، لذا قم بسحب Activity وضع هذا الكود فيها :
C#:

كود :
private void codeActivity2_ExecuteCode(object sender, EventArgs e)
{
Console.WriteLine("This Password is Wrong...");
}
vb.net:

كود :
Private Sub codeActivity2_ExecuteCode(ByVal sender As Object, ByVal e As EventArgs)
Console.WriteLine("This Password is Wrong...")
End Sub
هكذا سيكون الشكل الكامل لل Sequential WF بالشكل التالي :



وشاشة النتائج :


*** لاحظ ان مثل هذا ال WF يمكن تطبيقه على نظام دخول معقد جداً كما هو الحال في نظام دخول بسيط ، نفس الهيكل مع اختلاف محتويات الكود لكل منهما ، لكن الصورة العامة واضحة وهو ما يفيد كثيراً في تسهيل قراءة وفهم محتويات الكود اضافة لعمليات ال trace وال Debug .

نكمل في الدرس القادم ...
}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
الدرس الثامن والستون - مقدمة إلى عالم wwf - بواسطة Raggi Tech - 14-10-12, 10:17 PM


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم