Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

[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