Comment puis-je construire moteur de règles qui peut exécuter défini par l'utilisateur si les règles dans d'autre C # .net

StackOverflow https://stackoverflow.com/questions/771843

  •  12-09-2019
  •  | 
  •  

Question

J'ai besoin de construire de nouvelles moteur de règles dans lequel je règle comme celle qui est stockée dans la feuille Excel, sous forme de tableau.

<If>  "Name = Nita "
<Value> "200"
<else> "Name = Gita"
<value> "300"
<LookInto> "/Name/@Income"

J'ai deux fichiers dire 1 n 2. Je dois voir dans le premier fichier si nom est Nita ou Gita. Sur la base de l'exécution, je vais obtenir la valeur. Maintenant, cette valeur de résultat i besoin de comparer avec le deuxième fichier, qui est un fichier XML et dont le chemin a été défini dans.

peut-il me suggérer que est quelque chose en C # que je peux utiliser efficacement pour développer le même ,, ou quelqu'un peut-il me suggérer comment je peux y parvenir avec C # .. j'ai besoin une idée pour la conception de classe du même.

J'utilise .Net 1.1.

Était-ce utile?

La solution

Tout d'abord, vous devez créer des classes qui peuvent définir vos règles. Une fois que vous avez cette structure en place, vous serez en mesure de construire un moteur qui utilise ces classes.

Je chercherais à créer quelque chose comme:

class RuleEngine 
{
  public RuleMatch[] RuleMatches { get; set; }
  public void RunEngine(inputdata...) 
  {  
    // do processing in here
  }
}

class RuleMatch 
{
  public Rule[] Rules { get; set; }
  public Object ValueIfMatched { get; set; }
}

class Rule 
{
  public String FieldName { get; set; }
  public MatchType Match { get; set; }
  public Object Value { get; set; }
)

enum MatchType 
{
  Equal = 1,
  NotEqual = 2,
  GreaterThan = 4,
  LessThan = 8,
  Like = 16
}

Ensuite, allez de là ....

Cette structure serait mieux si elle a été changée pour avoir un ensemble de règles qui pourraient être ajoutées à un ensemble de règles, par exemple (a et b) OU (c et d) - Je vais laisser cela vous penser pour l'instant.


S'il vous plaît noter que je suis en utilisant des C # 3.0 constructions ici, vous devez créer des propriétés privées complètes 1.1.

Autres conseils

Vous pouvez créer un DSL avec boo, mais je ne sais pas si cela fonctionnera avec 1.1

Vous allez être très limité par .NET 1.1. Je pense que votre première étape sera de mettre à niveau.

Les étapes suivantes pourraient impliquer le moteur de règles intégré dans Windows Workflow Foundation; ce moteur, et les concepteurs graphiques qui y sont associés, ont été conçus pour être utilisables en dehors de WF.

Une autre chose à regarder sera le bloc d'application de validation qui fait partie du Microsoft Enterprise Library .

Aucune de ces choses existaient il y a six ans, lorsque .NET 1.1 dominaient le monde.

Ou vous pouvez simplement laisser quelqu'un d'autre faire ce travail et utiliser un bon moteur de règles .NET comme le produit de InRule Technology, Règles IBM / ILOG pour conseiller .Net ou Blaze pour .Net. Ils travaillent bien et vous donnera un environnement de règles puissant dans .Net

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