2008-09-18 5 views
17

Je suis censé créer un moteur de règles simple en C#. Tout conduit sur la façon dont je peux procéder? C'est un moteur de règles minimaliste qui utiliserait le serveur SQL 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.Comment concevoir un moteur de règles?

Répondre

14

Si vous utilisez .NET 3.0 ou version ultérieure, vous can use the Rules Engine of Windows Workflow Foundation sans avoir à utiliser acutally Workflow.

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

0

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

+0

@ Scott, je cherche à développer un moteur de règles métier avec C#. Comme inRule ou quelque chose, mais très simple. Et je suis à la recherche de modèles ou de tout plan basé sur lequel je peux créer mon moteur de règles. –

3
  1. Je ne peux pas croire que vous implémenteriez votre propre compte étant donné qu'il y en a tant disponibles commercialement et open source.

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

0

Avez-vous reçu des indications sur la méthode? (Si cela est complété par du matériel de cours, qu'apprenez-vous actuellement?) Si cela est censé être un système assez basique, vous pourriez trouver le succès en recherchant Deterministic Finite State Machine et Nondeterministic Finite State Machine

+0

@jwarzech, ce n'est pas pour les cours. C'est un moteur de règles commerciales, supposé être un travail commercial - mais c'est assez simple. Il y a quelques classes génériques (10 ou plus?) De règles. btw, j'ai fait une fois la «théorie du calcul» à l'école. Merci pour la réponse. –

0

Si vous avez des analystes d'affaires pour programmer le haut niveau moteur de règles, puis bien - choisissez l'un des moteurs de règles mentionnés ci-dessus ou lancez le vôtre (y compris les flux de travail). Si ce n'est pas le cas, il vous suffit de coder votre logique métier dans le code et si vous avez besoin d'embaucher des analystes métier et de refaire le système, vous êtes dans une bonne position.

0

Si vous voulez écrire quelque chose comme votre mise en œuvre de cette ...

[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 ... ce

[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 simples ici: http://www.duanewingett.info/2015/01/21/SimpleCRuleEnginePart1TheRuleEngine.aspx