![]() |
|
معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express (/showthread.php?tid=29674) |
معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express - ابو ليلى - 24-05-19 الموضوع للذين يعملون مع تقنية Dev Express فقط
السلام عليكم و رحمة الله و بركاته كل عام و انتم بخير , تقبل الله دعائكم و زين بالصالحات اعمالكم مر وقت طويل على اخر مشاركة معكم , مشاغل الدنيا التي لا تنتهي. اليوم نتحدث عن فكرة جميلة قد تكون راودت اغلبكم و الكثير منكم ربما عمل بها او حاول تطبيقها. في ظل تطور التطبيقات كان لزاماً علينا ان نقتبس من بعضها الافكار و نطبقها في مشاريعنا. و لكي لا نطيل الحديث كثيرا الفكرة برمتها تتمحور حول ايجاد الية لاستقبال التنبيهات داخل البرنامج مثل برامج (الواتس اب و الماسنجر و غيرها). كلنا يعرف نظام الاخطارات داخل هذه التطبيقات و كيف انها بمجرد ورود رسائل جديدة تقوم بتفعيل الاخطارات عبر ايقونة صغيرة تظهر على واجهة التطبيق تفيد بورود عدد محدد من الرسائل. غالبا تكون هذه التطبيقات بنظام شبكي (وجود اكثر من طرف يتشاركون التطبيق فيما بينهم). في مشاريعنا الشبكية قد نظطر احيانا لعزل الواجهات وفق صلاحيات محددة , قد يتشارك اكثر من عضو على نفس الجدول ولكن لكل عضو صلاحية محددة (البعض لديه صلاحية ادخال بيانات اولية , بينما الاخر يعالج ارتباطات اخرى للبيانات). حتى تتضح الصورة اكثر , انا لدي برنامج خاص بمشفى و تحديدا يعالج فكرة ايرادات مالية للمراجعين . يقسم هذا البرنامج الى اكثر من واجهة واجهة في الاستقبال يقوم الموظف بادخال بيانات اولية للمراجع فقط (اسم,عمر,هاتف,عنوان...الخ) واجهة في الادارة المالية تقوم باستقبال هذه البيانات و من ثم تقوم بادراج اجراءات خاصة لهذا المراجع و حسابات مالية تتناسب مع نوع كل اجراء. هكذا نظام يعتمد على تقسيم المهام في الغالب ستحتاج فيه الى الية تقوم بتنبيه الادارة المالية بوجود ملفات للمراجعين في الاستقبال بحاجة الى معالجة مالية فيقوم موظف الادارة المالية بترحيل البيانات اليه و استكمال باقي الاجراءات الخاصة به. حتى هذه النقطة الامور مفهومة من الناحية النظرية . من الناحية العملية انت بحاجة الى تقنية تنبيه للادارة المالية التي تقبع بعيدا عن واجهة الاستقبال . في لغة البرمجة نحن نحتاج الى الكثير من التفكير بايجاد وسيلة مرضية و سلسة في نفس الوقت لمعالجة هذه العقبة. و حتى لا نضيع وقتاً كثيرا , هناك خدمات يوفرها لك السيرفر (SQL Server ) تحديدا لاننا نتعامل معه بشكل كبير . هذه الخدمة توفر لك مراقبة الجدول من حيث كل حركة (ادخال , تعديل , حذف) و بعدها يمكنك اصدار رسالة تستقبلها في واجهة البرنامج تكون بمثابة تنبيه عن حصول تغيرات على الجدول تعرف هذه التقنية باسم (SqlDependency) و هي تندرج في باب خدمة (ٍService Broker) . يمكنك البحث عن كيفية استخدام التقنية و الحصول على الكثير من المعلومات. يجدر الذكر ان هذه التقنية صصمت للعمل مع (ASp) و ليس مع تطبيقات سطح المكتب. انا لن اعتمد عليها بشكل مباشر بل ساعتمد على مكتبة مجانية تغنيني من عناء انشاء و تجهيز الكثير من الامور بسم الله نبدأ المكتبة مجانية و يوجد لها اكثر من اصدار يخص تطبيقات سطح المكتب و تطبيقات الويب. اسم المكتبة (SqlTableDependency) يمكنك تحميلها عبر (NuGet Package) الخاصة بالـ Visual Studio صورة من برنامج يستخدم المكتبة (دقق عند ترحيل البيانات) الفكرة نشئت في البرنامج على كائن رئيسي هو (المراجع) هذا المراجع له جدولين بنفس البنية . الجدول الاول يتعامل معه موظف الاستقبال لادخال البيانات الاولية يمكنك اعتباره جدول مؤقت. بعد اشعار موظف الادارة المالية بوجدود بيانات في هذا الجدول يتم عندها نقل هذه البيانات الى جدول اخر موجود لدى الادارة المالية. و بعدها يرتبط هذا الكائن بعمليات اخرى سلف ذكرها . الاخطارات التي تظهر في نافذة الترحيل تفيد بان هناك بيانات لمراجعين و يجب على الادراة التصرف حيالهم. بعد عملية الترحيل للبيانات تختفي هذه الاخطارات (و قد يحافظ موظف الادارة على وجود هذه البيانات في جدول الاستقبال او قد يحذفها) كونها قد رحلت الى جدول الادارة. حتى تستطيع ان تطبق نفس الفكرة يجب ان يكون برنامجك شبكي و ان تكون لديك قاعدة بيانات تحتوي على الجداول اللازمة للتعامل معها. في هذا البرنامج لدي جدول يقوم الاستقبال بادخال اسماء المراجعين فيه و بعدها انا احتاج الى تنبيه يظهر لدى الادارة بوجود بيانات قيد الانتظار و تحتاج الى ترحيل. الجدول بسيط جداً صممه باي شكل تريد و باي حقول تحبها. و صمم كلاس خاص للجدول فيه حقول توافق حقول الجدول (شرحنا عنها سابقا في مقال منفصل). بعد ان تكون قد حملت المكتبة انت تحتاج الى استيراد المراجع في واجهة النموذج كما يلي PHP كود : Imports TableDependency.SqlClientتشغيل
PHP كود : ALTER DATABASE [Database Name] SET ENABLE_BROKER PHP كود : ALTER DATABASE [Database Name] SET DISABLE_BROKER PHP كود : SELECT is_broker_enabled FROM sys.databases WHERE name = 'Database name' او يمكنك وضع اجراء خاص ينفذ العملية لك بعيدأ عن العمل اليدوي Stored Procedure
PHP كود : Create procedure [dbo].[exmoney_RunBroker]الدالة الخاصة به يمكنك وضعها في كلاس منفصل PHP كود : Public Sub RunBroker(dbname As String)يمكنك مناداة الدالة مع بداية تشغيل البرنامج و ارسال الوسائط اللازمة. بعد ذلك انت بحاجة الى تعريف كائن من النوع TableDependency و ربطه مع الجدول المراد مراقبة التغييرات عليه. PHP كود : Private dep As SqlTableDependency(Of Pats_Temp) بعدها نحتاج الى تشغيل الخدمة في واجهة البرنامج , دعنا نسميها المزامنة PHP كود : Private Sub Play_Broker()GetInstance: لا تهتم لها كثيرا (انا اعمل وفق تقنية Singleton Design Pattern) و هذا سبب وجودها , انت ستستدعيها بشكل مباشر. ِِAutomatic_RefreshData : اجراء يقوم بتشغيل المزامنة و ربط التغيرات كما يلي PHP كود : Private Sub Automatic_RefreshData()و ستحتاج هذا الاجراء ايضاً وهو خاص باقتناص التغيرات الحاصلة جعلته Task لكي لا يؤثر على سير البرنامج (يعمل في مسار منفصل) PHP كود : Public Async Function Changed(ByVal sender As Object, ByVal e As RecordChangedEventArgs(Of Pats_Temp)) As Taskكل سجل لم يرحل يكون لديه اشارة False. Badge1 : من ادوات Dev Express سيتم تفصيلها لاحقاً (هي الدائرة الحمراء التي تحتوي على الرقم) الان في صندوق الادوات و بعد انجزنا اغلب العمل , يبقى لدينا تخصيص بسيط لم يسعفني الوقت في انجازه نختار الاداة التالية هذه الاداة تضاف الى النموذج الرئيسي و تستطيع التعامل معها بشكل مرئي نحددها و نختار من Smart Tag الخاص بها Edit Element لتظهر لنا الصورة التالية ابحث في خصائصها لتتعرف عليها بشكل اكبر انتهى عملنا و اصبح لديك القدرة على اظهار اخطار (تنبيه عددي) وفق الاكواد السابقة. بما ان المقال قصيرة اردت ان انوه الى اداة اخرى جيدة و مفيدة و الكثير يطلب تواجدها هذه الاداة تشبة Splash Screen (مؤشر انتظار) تفيد في الانتظار الى حين انجاز بعض المهام الجيد في هذه الاداة انها تتلون حسب الستايل المستخدم يمكنك تحصيلها في صندوق الادوات و بعد اضافتها الى الفورم تختار اضافة Wait Form و هو فورم عادي ينزل مع الفورمات الموجودة لديك وهذا شكله طريقة استخدامه بسيطة جداً وفق الكود التالي ضع الكود قبل مجموعة المهام التي تريد انجازها و تحتاج الى وقت PHP كود : SplashScreenManagerMain.ShowWaitForm()PHP كود : SplashScreenManagerMain.CloseWaitForm() بارك الله لكم في ما تبقى من شهر رمضان و اعاننا الله و اياكم على صيامه و قيامه. لا تنسونا من صالح دعواتكم (لي و لاهلي) مرفق ملف TableDependency.SqlClient.dll الاصدار الاخير (8.5.8.0) حتى تاريخ 17-10-2020 متوافق مع Net FrameWork 4.5.2 رابط المشروع على github.com monitor-table-change-with-sqltabledependency RE: معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express - حريف برمجة - 24-05-19 مشكور اخي الكريم ،، الفكرة هذي موجوده أيضا في قواعد بيانات FIREBASE بدون أدوات او كتابة كود . وانت الآن افرحتنا بوجود الخدمة مع SQL SERVER .... جزاك الله خير . RE: معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express - sendbad100 - 24-05-19 وعليكم السلام ورحمة الله وبركاتة
اهلا وسهلا اخي / ابو ليلى
اشتقنا لك ولمقالاتك الرائعة
اتمنى ان تكون بالف صحة وعافية
شكرا على هذا المقال الجميل
جزاك الله الف خير
+1
5 نجوم
RE: معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express - ابو ليلى - 25-05-19 (24-05-19, 05:39 AM)حريف برمجة كتب : مشكور اخي الكريم ،،العفو منك اخي , شكرا لمرورك و تعليقك , يوجد الكثير للحديث عنه من خدمات في SqlServer و خصوصاً هذه الخدمة و لكن ضيق الوقت يحول دائمأ , حتى هذه المقال جائت على عجل فرج الله همكم و همي (اللهم انك سميع عليم و مجيب للدعاء) (24-05-19, 01:56 PM)sendbad100 كتب : اهلا اخي سندباد100 و انا مشتاق لكم اكثر لم اقطعكم يوما , كنت دائم المرور و لكن على عجل بسبب مشاغلي, صحتي و الحمد لله بخير , و اطلب من الله ان تكونوا جميعاً بخير وفقكم الله لما يحب و يرضى RE: معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express - Ebrahim5556 - 22-06-19 اخي لو تكرمت ممكن تفيدنا بتنفيذ لاني مافهمت اعجبتني الفكره بس لم افهمها فلو تكرمت نفذ مشروع وارفعه هنا بارك الله فيك RE: معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express - Anannan - 09-06-20 السلام عليكم استاذنا العزيز مجهود يشكر عليه بحق وربي يجعله في ميزان حسناتك . بالله عندي كم استفسار واريدك علي الخاص فياريت رقم هاتفك RE: معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express - عبد العزيز البسكري - 17-10-20 السّلام عليكم و رحمة الله و بركاته
أستاذنا الكريم أبو ليلى
SqlTableDependency
هل من الممكن إذا كانت هذه المكتبة على شكل Dll تفيدنا بها الله يجازيك كل خير
حاولت كثيرا عن طريق Nuget و لم اتمكن من تحميلها
إحتراماتي
RE: معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express - ابو ليلى - 18-10-20 (17-10-20, 04:03 AM)عبد العزيز البسكري كتب : و عليكم السلام و رحمة الله و بركاته تم ارفاق الملف مع رابط المشروع في الموضوع RE: معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express - عبد العزيز البسكري - 18-10-20 بارك الله فيك و لك و جزاك خير الجزاء
إحتراماتي
RE: معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express - عبدالحميد حسني - 10-02-22 ماشاء الله احسنت |