Question

Je suis censé créer un moteur de règles simple en C #. Des pistes sur la façon dont je peux procéder? C'est un moteur de règles minimaliste, qui utilise SQL Server comme back-end. Avons-nous des modèles généraux ou des modèles de conception qui s’appliquent généralement aux moteurs de règles? Quel type de technologies .Net puis-je utiliser pour en concevoir une? Toutes les directions seraient utiles. Merci.

Était-ce utile?

La solution

Si vous utilisez .NET 3.0 ou version ultérieure, vous peut utiliser le moteur de règles de Windows Workflow Foundation sans avoir à utiliser réellement le flux de travail.

Je l'ai fait sur un projet et vous pouvez utiliser SQL ou XML comme moteur, et cela fonctionne très bien. Vous pouvez utiliser l'EDI fourni avec les exemples de workflow et le placer dans vos propres applications. C'est excellent.

Autres conseils

  1. Je ne peux pas croire que vous mettriez en œuvre votre propre compte tenu du nombre important de sources commerciales et open source disponibles.

  2. Je recommande de regarder InRule comme une excellente option commerciale à prix raisonnable, ou comme NxBRE dans l'espace open source.

Vous pouvez aussi essayer http://rulesengine.codeplex.com/

Quel type de moteur de règles recherchez-vous? Pour les pratiques de style? Si tel est le cas, rendez-vous sur StyleCop . Pas la réponse, mais il y a peut-être déjà quelque chose pour vous.

Avez-vous des indications sur la méthode? (c.-à-d. si ce matériel est complété par du matériel de cours, qu'apprenez-vous actuellement?) Si ce système est censé être un système assez basique, vous obtiendrez peut-être du succès en regardant Machine à états finis déterministe et Machine à états finis

Si vous avez des analystes d'entreprise pour programmer le moteur de règles de haut niveau, choisissez le système de règles mentionné ci-dessus ou lancez le vôtre (y compris les flux de travail). Sinon, codez simplement votre logique métier en code et si vous avez besoin d'engager des analystes métier et de refaire le système, vous êtes au bon endroit.

Si vous voulez écrire votre implémentation, quelque chose comme ça ...

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

... ou ceci ...

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

... alors peut-être consulter mon moteur de règles simple ici: http: / /www.duanewingett.info/2015/01/21/SimpleCRuleEnginePart1TheRuleEngine.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top