سؤال

أنا من المفترض أن إنشاء قاعدة بسيطة المحرك في C#.أي يؤدي على كيف يمكن المضي قدما؟.إنه أضيق الحدود القاعدة المحرك, و سوف تستخدم SQL server كما في النهاية الخلفية.هل لدينا أي مخطط أو تصميم الأنماط التي تنطبق القاعدة المحركات ؟ ما هو نوع من .صافي التكنولوجيات يمكن أن أستخدمها في تصميم واحد ؟ أي الاتجاهات سوف تكون مفيدة.شكرا

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

المحلول

إذا كنت تستخدم .صافي 3.0 أو في وقت لاحق ، يمكن استخدام قواعد المحرك من Windows Workflow Foundation دون الحاجة إلى acutally استخدام سير العمل.

لقد قمت بعمل هذا المشروع ، يمكنك استخدام SQL أو XML مثل الخلفية ، ويعمل كبيرة.يمكنك استخدام IDE الذي يأتي مع سير العمل الأمثلة ووضعها في التطبيقات الخاصة بك.انها ممتازة.

نصائح أخرى

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

  2. لا نوصي بأخذ نظرة على InRule كبير التجارية الخيار الذي هو بأسعار معقولة ، أو NxBRE في المصدر المفتوح الفضاء.

يمكنك أيضا محاولة http://rulesengine.codeplex.com/

ما نوع قاعدة المحرك الذي تبحث عنه ؟ التصميم الممارسات ؟ إذا كان الأمر كذلك الذهاب StyleCop.ليس الجواب, ولكن هناك قد يكون هناك شيء بالنسبة لك.

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

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

إذا كنت ترغب في كتابة تنفيذ شيء من هذا القبيل...

[TestMethod]
public void GreaterThanRule_WhenGreater_ResultsTrue()
{
    // ARRANGE
    int threshold = 5;
    int actual = 10;

    // ACT
    var integerRule = new IntegerGreaterThanRule();
    integerRule.Initialize(threshold, actual);

    var integerRuleEngine = new RuleEngine<int>();
    integerRuleEngine.Add(integerRule);
    var result = integerRuleEngine.MatchAll();

    // ASSERT
    Assert.IsTrue(result);
}

...أو هذا...

[TestMethod]
public void GreaterThanRule_WhenGreater_ResultsTrue()
{
    // ARRANGE
    int threshold = 5;
    int actual = 10;

    // ACT
    var integerRule = new IntegerGreaterThanRule(threshold);

    var integerRuleEngine = new RuleEngine<int>();
    integerRuleEngine.ActualValue = actual;
    integerRuleEngine.Add(integerRule);

    // Get the result
    var result = integerRuleEngine.MatchAll();

    // ASSERT
    Assert.IsTrue(result);
}

...ثم ربما تحقق من بلدي قاعدة بسيطة المحرك هنا: http://www.duanewingett.info/2015/01/21/SimpleCRuleEnginePart1TheRuleEngine.aspx

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