كيف يمكنني بناء محرك القاعدة الذي يمكنه تنفيذ المستخدم المحدد إذا كان قواعد أخرى في C # .NET

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

  •  12-09-2019
  •  | 
  •  

سؤال

لدي شرط لبناء محرك قاعدة جديدة لدي حكم مثل هذا يتم تخزينه في ورقة Excel، بتنسيق جدول.

<If>  "Name = Nita "
<Value> "200"
<else> "Name = Gita"
<value> "300"
<LookInto> "/Name/@Income"

لدي ملفان يقولان 1 ن 2. أحتاج إلى أن أرى في الملف الأول ما إذا كان الاسم نيتا أو جيتا. بناء على التنفيذ سأحصل على قيمة. الآن هذه النتيجة قيمة أحتاج إلى المقارنة مع الملف الثاني، وهو ملف XML وتم تحديد مساره في.

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

أنا أستخدم .NET 1.1.

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

المحلول

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

أود أن أنظر إلى إنشاء شيء مثل:

class RuleEngine 
{
  public RuleMatch[] RuleMatches { get; set; }
  public void RunEngine(inputdata...) 
  {  
    // do processing in here
  }
}

class RuleMatch 
{
  public Rule[] Rules { get; set; }
  public Object ValueIfMatched { get; set; }
}

class Rule 
{
  public String FieldName { get; set; }
  public MatchType Match { get; set; }
  public Object Value { get; set; }
)

enum MatchType 
{
  Equal = 1,
  NotEqual = 2,
  GreaterThan = 4,
  LessThan = 8,
  Like = 16
}

ثم استمر من هناك ....

سيكون هذا الهيكل أفضل إذا تم تغييره للحصول على مجموعة من القواعد التي يمكن إضافتها إلى مجموعة من القواعد، على سبيل المثال (A و B) أو (C و D) - سأترك هذا الأمر لك التفكير في حاليا.


يرجى ملاحظة أنني أستخدم بعض بنيات C # 3.0 هنا، وستحتاج إلى إنشاء خصائص خاصة كاملة في 1.1.

نصائح أخرى

يمكنك إنشاء DSL مع بوو، لكنني لا أعرف ما إذا كان ذلك سيعمل مع 1.1

ستكون محدودة للغاية بواسطة .NET 1.1. أعتقد أن خطوتك الأولى ستكون الترقية.

يمكن أن تنطوي الخطوات اللاحقة على محرك القواعد المضمن في مؤسسة WINDOWS WATEPFLOW؛ تم تصميم هذا المحرك، والمصممين الرسوم البياني المرتبط به، لتكون قابلة للاستخدام خارج WF.

شيء آخر يجب أن ننظر إليه سيكون كتلة تطبيق التحقق من الصحة هو جزء من مكتبة Microsoft Enterprise..

لم تكن أي من هذه الأشياء قبل ست سنوات عندما حكمت .NET 1.1 الأرض.

أو يمكنك فقط السماح لشخص آخر بهذا العمل واستخدام محرك قواعد جيدة .NET مثل منتج تكنولوجيا InRule، وقواعد IBM / ILOG لمستشار .NET أو Blaze Advisor. أنها تعمل بشكل جيد وسوف تعطيك بيئة قواعد قوية في .NET

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