Как разработать систему правил?

Я'м должен создать простой двигатель правило в C#. Любой ведет о том, как я могу поступить?. Это'ы минималистичный двигателя правило, и будет использовать SQL Server в качестве серверной. У нас есть генеральный план или шаблоны проектирования, которые обычно применяются к правилу двигателей? Какому виду .Net-технологии можно использовать для разработки одного? Любой маршрут будет полезен. Спасибо.

Решение

Если вы're, используя .Чистая 3.0 или более поздней версии, вы можете использовать обработчик правил фонда рабочего процесса Windows]1 без необходимости вообще использовать рабочий процесс.

Я'ве сделали это в проекте, и вы можете использовать SQL или XML в качестве бэкэнда, и он отлично работает. Вы можете использовать IDE, который поставляется с примерами рабочих процессов и положил его в свои собственные приложения. Это's превосходное.

Комментарии (0)
  1. Я не могу поверить, что вы бы реализовать свой собственный рассматривая имеющиеся в продаже и открытым исходным кодом.

  2. Я рекомендую взглянуть на InRule как большой коммерческий вариант, что это приемлемая цена, или NxBRE в открытом космосе.

Комментарии (0)

Вы также можете попробовать http://rulesengine.codeplex.com/

Комментарии (0)

Если вы хотите написать свою реализацию что-то вроде этого...

[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();
    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();
    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

Комментарии (0)

Вы дали какие-либо указания на способ? (т. е. если это дополняется лекционный материал, что вы сейчас изучаете?) Если это предназначается, чтобы быть довольно простой системы, вы могли бы найти успех смотреть в детерминированный конечный автомат и недетерминированных конечных автоматов

Комментарии (1)

Какой двигатель правилом вы ищете? Для укладки практики? Если это так, пойти проверить StyleCop. Не ответ, но там уже может быть что-то там для вас.

Комментарии (1)

Если у вас есть бизнес-аналитики для программирования двигателя высокой уровень правила, а затем выберите одну из вышеуказанных двигателей правилом или свернуть свой собственный (в том числе бизнес-процессов). Если нет, то просто код бизнес-логики в код, и если вы когда-нибудь понадобится, чтобы нанять бизнес-аналитики и переделывать систему, вы'вновь в хорошее место, чтобы быть.

Комментарии (0)