متى يجب أن لا تستخدم محرك القواعد؟ [مغلق

StackOverflow https://stackoverflow.com/questions/775170

  •  13-09-2019
  •  | 
  •  

سؤال

لدي قائمة كرية جميلة بمزايا استخدام محرك القواعد، وكذلك بعض الأسباب لاستخدامها، ما أحتاج إليه هو قائمة بالأسباب التي تجعلك لا ينبغي عليك استخدام محرك قواعد

أفضل ما لدي حتى الآن هو:

لا تهدف محركات القواعد حقا إلى معالجة عمليات تنفيذ سير العمل أو عملية سير العمل ولا توجد محركات سير العمل أو أدوات إدارة العمليات المصممة للقيام بالقواعد.

أي أسباب كبيرة أخرى لماذا يجب ألا تستخدمها؟

هل كانت مفيدة؟

المحلول

أحصل على عصبي للغاية عندما أرى أشخاصا يستخدمون مجموعات قواعد كبيرة جدا (على سبيل المثال، بناء على ترتيب الآلاف من القواعد في مجموعة قاعدة واحدة). يحدث هذا في كثير من الأحيان عندما يكون محرك القواعد سينجلتون يجلس في وسط المؤسسة على أمل أن يحفظ القواعد جاف سيجعلها في متناول العديد من التطبيقات التي تتطلبها. أود أن أحدى أي شخص أن يقول لي إن محرك قواعد المنقاد مع العديد من القواعد مفهومة جيدا. أنا لست على علم بأي أدوات يمكنها التحقق من عدم وجود تعارضات.

أعتقد أن تقسيم القواعد مجموعات لإبقائها صغيرة هو خيار أفضل. يمكن أن تكون الجوانب طريقة لمشاركة قاعدة مشتركة بين العديد من الأشياء.

انا افضل اتباع نهج أكثر بساطة وأكثر مدفوعة أينما كان ذلك ممكنا.

نصائح أخرى

سأقدم 2 أمثلة من تجربة شخصية حيث كانت استخدام محرك القواعد فكرة سيئة، ربما ستساعد ذلك: -

  1. في مشروع سابق، لاحظت أن ملفات القواعد (المشروع المستخدمة المستخدمة) تحتوي على الكثير من رمز Java، بما في ذلك الحلقات والوظائف وما إلى ذلك. لقد كانت ملفات Java بشكل أساسي تنكر كملف قواعد. عندما طلبت من المهندس المعماري عن نطقه للتصميم الذي قيل لي إن "القواعد لم يكن من المفترض الحفاظ عليها من قبل مستخدمي الأعمال".

درس: يطلق عليهم "قواعد العمل" لسبب ما، لا يستخدمون القواعد عندما لا تستطيع تصميم نظام يمكن الحفاظ عليه بسهولة / فهمه من قبل مستخدمي الأعمال.

  1. قضية أخرى؛ يستخدم المشروع قواعد لأن المتطلبات كانت مفهومة / مفهومة بشكل سيء وتغييرها في كثير من الأحيان. كان حل فريق التطوير هو استخدام القواعد على نطاق واسع لتجنب نشر التعليمات البرمجية المتكررة.

درس: تميل المتطلبات إلى تغيير الكثير خلال تغييرات الإصدار الأولي ولا تضمن استخدام القواعد. استخدام القواعد عندما يتغير عملك في كثير من الأحيان (وليس المتطلبات). على سبيل المثال: - البرنامج الذي سيغير الضرائب الخاصة بك كل عام حيث تتغير قوانين الضرائب وتستخدم القواعد فكرة ممتازة. سيتغير الإصدار 1.0 من تطبيق ويب في كثير من الأحيان حيث يحدد المستخدمون متطلبات جديدة ولكن سوف يستقر مع مرور الوقت. لا تستخدم القواعد كبديل لنشر التعليمات البرمجية.

أنا محركات قوية لقواعد الأعمال، لأنه يمكن أن تساعدك في جعل حياتك أسهل بكثير كمبرمج. واحدة من الخبرات الأولى التي أجريتها أثناء العمل في مشروع مستودع البيانات كان للعثور على إجراءات مخزنة تحتوي على هياكل تعقيدا تمتد على الصفحات بأكملها. لقد كانت كابوسا لتصحيح الأخطاء، نظرا لأنه كان من الصعب للغاية فهم المنطق المطبق في هذه الهياكل الطويلة، وتحديد ما إذا كان لديك تداخل بين القاعدة في الصفحة 1 من التعليمات البرمجية وآخر من الصفحة 5. عموما، كان لدينا أكثر من 300 مثل هذه القواعد جزءا لا يتجزأ من التعليمات البرمجية.

عندما تلقينا متطلبات تطوير جديدة، بالنسبة لشيء يسمى الوجهة المحاسبية، التي كانت تنطوي على علاج أكثر من 3000 قواعد، عرفت أن شيئا ما يجب أن يتغير. مرة أخرى، لقد كنت أعمل على النموذج الأولي الذي أصبح في وقت لاحق من الوالد ما الآن هو محرك قاعدة أعمال مخصصة، قادر على التعامل مع جميع المشغلين القياسيين SQL. في البداية، كنا نستخدم Excel كأداة تأليف، وبعد ذلك، فقد أنشأنا تطبيق ASP.NET الذي سيسمح لمستخدمي الأعمال بتحديد قواعد أعمالهم الخاصة، دون الحاجة إلى رمز الكتابة. الآن النظام يعمل بشكل جيد، مع عدد قليل جدا من الأخطاء، ويحتوي على أكثر من 7000 قاعدة لحساب هذه الوجهة المحاسبية هذه. لا أعتقد أن هذا السيناريو كان ممكنا من خلال الترميز الصعب. والمستخدمون سعداء جدا بحيث يمكنهم تحديد قواعدهم الخاصة دون أن تصبح عنق الزجاجة.

لا يزال، هناك حدود لهذا النهج:

  • يجب أن يكون لديك مستخدمي أعمال قادرين لديهم فهم ممتاز لشركة الشركة.
  • يوجد عبء عمل كبير على البحث في النظام بأكمله (في حالة وجود مستودع بيانات)، من أجل تحديد جميع الشروط المشفوفة بجد والتي منطقي الترجمة إلى قواعد يتم التعامل معها بواسطة محرك قاعدة أعمال. كان علينا أيضا أن نحرص جيدا على أن تكون هذه القوالب الأولية مفهومة تماما من قبل مستخدمي الأعمال.
  • يجب أن يكون لديك تطبيق يستخدم في تأليف القواعد، حيث يتم تنفيذ خوارزميات الكشف عن قواعد الأعمال المتداخلة. وإلا فسوف ينتهي بك الأمر بفوضى كبيرة، حيث لا يفهم أي شخص أكثر النتائج التي يحصلون عليها. عندما يكون لديك خطأ في مكون عام مثل محرك قاعدة الأعمال المخصصة، فقد يكون من الصعب للغاية تصحيح الاختبارات واستكشافها للتأكد من أن الأمور التي عملت قبل العمل الآن.

يمكن العثور على مزيد من التفاصيل حول هذا الموضوع في منشور كتبته: http://dwhbp.com/post1/10/30/IMPLEMENTING-A-Business-Rule-engine.aspx.

بشكل عام، فإن أكبر ميزة لاستخدام محركات القواعد التجارية هي أنها تسمح للمستخدمين بسيارة التحكم في تعاريف قاعدة الأعمال والتأليف، دون الحاجة إلى الذهاب إلى قسم تكنولوجيا المعلومات في كل مرة يحتاجون فيها إلى تعديل شيء ما. كما أنه يقلل من عبء العمل على فرق تطوير تكنولوجيا المعلومات، والذي يمكن أن يركز الآن على بناء الأشياء ذات قيمة إضافية إضافية.

هتافات،

نيكولاي

Poit واحد لاحظت أن أكون "السيف ذو الحد المزدوج" هو:

وضع المنطق في أيدي الموظفين غير التقنيين

لقد رأيت هذا العمل رائعا، عندما يكون لديك عباقرة واحدة أو اثنين من العباقرة متعددة التخصصات على الجانب غير الفني، لكنني رأيت أيضا عدم وجود تقنيات تؤدي إلى Bloat، المزيد من الأخطاء، وفي عام 4X تكلفة التطوير / الصيانة.

وبالتالي تحتاج إلى النظر في قاعدة المستخدم الخاصة بك على محمل الجد.

اعتقدت أن مقال أليكس باباديمولي حساسة واضحة للغاية: http://thedailywtf.com/articles/soft_coding.aspx.

إنه غير شامل، لكنه حصل على بعض النقاط الجيدة.

مقالة رائعة عند عدم استخدام محرك قواعد ... (وكذلك عند استخدام واحدة) ....

http://www.jessrules.com/guedlines.shtml.

خيار آخر هو إذا كان لديك مجموعة خطية من القواعد التي تنطبق مرة واحدة فقط بأي ترتيب الحصول على نتيجة لإنشاء واجهة رائعة ولها مطورين يكتبون ونشر هذه القواعد الجديدة. ميزة هي أنه سريع سريع لأنك عادة ستقوم بتمرير جلسة السبات أو جلسة JDBC بالإضافة إلى أي معلمات حتى تتمكن من الوصول إلى جميع بيانات التطبيقات الخاصة بك ولكن بطريقة فعالة. مع قائمة الحقائق، يمكن أن يكون هناك الكثير من الحلقات / المطابقة التي يمكن أن تبطئ النظام إلى أسفل ..... إنها طريقة أخرى لتجنب محرك قواعد وتكون قادرة على نشرها بشكل حيوي (نعم، تم نشر قواعدنا الجماعية في قاعدة البيانات وليس لدينا عودة .... إما أن تقابل القاعدة أو غير ذلك). إنه مجرد خيار آخر ..... أوه وأحد فائدة أخرى لا تتعلم بناء جملة قواعد للمطورين الوارد. يجب أن يتعلموا بعض الأخدود ولكن هذا قريب جدا من جافا حتى يكون منحنى التعلم أفضل بكثير.

حقا يعتمد على سياقك. يحتوي محرك القواعد على مكانه وما ورد أعلاه هو مجرد خيار آخر إذا كان لديك قواعد في مشروع قد ترغب في النشر ديناميكيا لحالات مبسطة للغاية لا تحتاج إلى محرك قواعد.

في الأساس لا تستخدم محرك قواعد إذا كان لديك قواعد بسيطة ويمكن أن يكون لها واجهة رائعة بدلا من ذلك ..... فقط كما يمكن للمطورين القابليين ديناميكيا والجدد ينضم إلى فريقك يمكن أن يتعلمه بشكل أسرع من لغة الطبول. (ولكن هذا رأيي)

في تجربتي، تعمل محركات قواعد أفضل عندما تكون ما يلي صحيحا:

  1. مبدأ محددة جيدا لمجال المشكلات الخاصة بك
  2. جودة عالية (يفضل تلقائيا) البيانات للمساعدة في دفع معظم المدخلات الخاصة بك
  3. الوصول إلى الخبراء الموضوع
  4. مطورو البرمجيات مع خبرة إنشاء أنظمة الخبراء

إذا كانت أي من هذه الصفات الأربعة مفقودة، فلا تزال قد تجد محرك قواعد يعمل لك، ولكن في كل مرة جربتها مع مفقودة حتى 1، لقد واجهت مشكلة.

هذه بالتأكيد بداية جيدة. الشيء الآخر مع محركات القواعد هو أن بعض الأشياء مفهومة جيدا وحتمية ومباشرة إلى الأمام. حجب كشوف المرتبات هو (أو استخدامها) من هذا القبيل. أنت استطاع عبر عنها كقواس سيتم حلها بواسطة محرك قواعد، ولكن يمكنك التعبير عن نفس القواعد كجدول قيم بسيط إلى حد ما.

لذلك، محركات سير العمل جيدة عندما تعبر عن عملية طويلة الأجل سيكون لها بيانات مستمرة. يمكن أن تفعل محركات القواعد أمرا مشابها، ولكن عليك أن تفعل الكثير من التعقيد الإضافي.

محركات القواعد جيدة عندما يكون لديك قواعد المعرفة المعقدة وتحتاج إلى البحث. يمكن لمحركات القواعد حل المشكلات المعقدة، ويمكن تكييفها بسرعة لتغيير المواقف، ولكن فرض الكثير من التعقيد على التنفيذ الأساسي.

العديد من خوارزميات القرار هي بسيطة بما يكفي للتعبير كبرنامج بسيط يحركها الطاولة دون التعقيد ضمني بمحرك قواعد حقيقية.

أود أن أوصي بشدة قواعد الأعمال محركات مثل سالول كمصدر مفتوح أو محرك القواعد التجارية مثل الكراشف.

  • عندما يكون لديك الكثير من سياسات الأعمال المتقلبة في الطبيعة، من الصعب للغاية الحفاظ على هذا الجزء من رمز التكنولوجيا الأساسية.
  • يوفر محرك القواعد مرونة كبيرة للإطار وسهل التغيير والنشر.
  • لا يتم استخدام محركات القواعد في كل مكان ولكن تحتاج إلى استخدامها عندما يكون لديك الكثير من السياسات حيث تكون التغييرات لا مفر منها بشكل منتظم.

أنا لا أفهم حقا بعض النقاط مثل:
أ) يحتاج رجال الأعمال إلى فهم الأعمال بشكل جيد للغاية، أو؛
ب) الخلاف على رجال الأعمال لا يحتاجون إلى معرفة القاعدة.

بالنسبة لي، كشعب يمل فقط BRE، فإن فائدة BRE ما يسمى للسماح للنظام بالتكيف مع تغيير الأعمال، وبالتالي تركز على التكيف عن التغيير.
هل يهم إذا كانت القاعدة التي تم إعدادها في الوقت العاشر X تختلف عن القاعدة التي تم إعدادها في وقت Y بسبب:
أ) رجال الأعمال لا يفهمون الأعمال أو؛
ب) رجال الأعمال لا يفهمون القواعد؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top