Подтвердить что ты не робот

Как создать механизм правил?

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

4b9b3361

Ответ 1

Если вы используете .NET 3.0 или более позднюю версию, может использовать механизм правил Windows Workflow Foundation без необходимости использования Workflow.

Я сделал это в проекте, и вы можете использовать SQL или XML в качестве бэкэнд, и он отлично работает. Вы можете использовать IDE, поставляемую с примерами Workflow, и поместить его в свои собственные приложения. Отлично.

Ответ 2

  • Я не могу поверить, что вы будете реализовывать свои собственные, учитывая, что существует так много доступных коммерческих и открытых источников.

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

Ответ 4

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

Ответ 5

Даны ли вам указания по методу? (т.е. если это дополняется материалом курса, который вы изучаете в настоящее время?) Если это означает, что это довольно простая система, вы можете найти успех в Детерминированный Конечный автомат и Недетерминированный конечный автомат

Ответ 6

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

Ответ 7

Если вы хотите написать свою реализацию примерно так:

[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