عرض مشاركة واحدة
قديم 02-Aug-2011, 09:30 AM   #19
humam
مشرف منتدى المطورين
Arrow

في مثالنا التعبير هو العبارة err(table table_name) والتي تعيد عدد من القيم اعتمادا على حالة السجل الذي تم تنفيذ عبارة get عليه فمثلا تعيد القيمة MISSING اذا كان هذا السجل غير موجود ؟طبعا هذا السيناريو يكون غريب قد يقول قائل كيف انا اعرض السجل في النافذة امام عيني ثم بعد ذلك يكون السجل محذوف ؟ نعم هذا يحصل في الحالة التالية عندما يكون البرنامج غير معد للتعامل مع بيئة متعددة المستخدمين Multiuser environment فيحصل ما يلي عندما تقوم باستعراض هذا السجل قد يقوم مستخدم ثاني باستعراضه بنفس الوقت وقد يقوم بحذفه وانت لا تزال تشاهد السجل معروض امامك في النافذة ثم تحاول حذفه فتكون النتيجة ان هذا السجل محذوف لذا تعيد العبارة القيمة MISSING القيمة المحتملة الاخرى وهي LOCK وهذه القيمة تعاد في عدد من الحالات اولا اذا كان Module مصمم للعمل مع Multiuser Environment عندما تحاول ان تستعرض سجل يستعرض حاليا من قبل مستخدم اخر سوف تعاد هذه القيمة للدلالة على ان السجل الحالي مقفل ولذا اصلا لاتستطيع مشاهدة هذا السجل اما في حالة كون البرنامج غير معد للتعامل مع اكثر من مستخدم وعندما يعرض مستخدمان او اكثر نفس السجل واذا ضغط كلاهما على زر الحذف سوف يكون فارق زمني قليل بين المستخدمين لذا سوف يقوم المستخدم الذي جهازه اسرع بالوصول اولا الى السجل ثم يقفله (لأن عملية الحذف تتطلب اقفال السجل اولا حتى اذا كان البرنامج لايدعم ال Multiuser Environment ) وبتالي سوف يظهر للمستخدم الاخر ان السجل مقفل وتعيد العبارة err القيمة LOCK . اما اذا اعادت العبارة القيمة OKAY فهي للدلة على ان السجل موجود ويمكن حذفه واخيرا اذا لم تعاد اي من القيم الثلاثة السابقة فهذا يدل على ان السجل لم يحفظ اصلا والسناريو المحتمل هو ان المستخدم ادخل السجل في النافذة والآن يريد حذفه هنا اذا كان الزر حذف مفعل وغير مغلق قد يضغط المستخدم على الزر لحذف السجل قبل حفظه اصلا في الجدول لذا وضعنا عبارة else في نهاية العبارة case لأصطياد هذه الحالة .
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس