Я должен создать простой механизм правил в С#. Любые выводы о том, как я могу продолжить?. Это минималистический механизм правил и будет использовать SQL-сервер в качестве задней части. Есть ли у нас общий дизайн или шаблоны проектирования, которые обычно применяются к механизмам правил? Какие технологии .Net можно использовать для его разработки? Любые направления были бы полезны. Спасибо.
Как создать механизм правил?
Ответ 1
Если вы используете .NET 3.0 или более позднюю версию, может использовать механизм правил Windows Workflow Foundation без необходимости использования Workflow.
Я сделал это в проекте, и вы можете использовать SQL или XML в качестве бэкэнд, и он отлично работает. Вы можете использовать IDE, поставляемую с примерами Workflow, и поместить его в свои собственные приложения. Отлично.
Ответ 2
-
Я не могу поверить, что вы будете реализовывать свои собственные, учитывая, что существует так много доступных коммерческих и открытых источников.
-
Я рекомендую взглянуть на InRule как отличный коммерческий вариант с разумной ценой или NxBRE в пространстве с открытым исходным кодом.
Ответ 3
Вы также можете попробовать http://rulesengine.codeplex.com/
Ответ 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