Wie kann ich Regelmaschine bauen, die Benutzer definiert, wenn sonst Regeln in C # .net ausführen kann

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

  •  12-09-2019
  •  | 
  •  

Frage

Ich habe Anforderung neue Regelmaschine zu bauen, in denen ich Regel wie diese haben, die in Excel-Tabelle gespeichert ist, in tabellarischer Form.

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

Ich habe zwei Dateien sagen 1 n 2 i in der ersten Datei, um sehen müssen, dass, ob Namen Nita oder Gita ist. Basierend auf Ausführung wird i Wert. Nun ist dieser Ergebniswert muß ich mit dem zweiten Datei vergleichen, die eine XML-Datei und Pfad, das definiert wurde in.

kann mir jemand vorschlagen, dass gibt es etwas in C #, die ich effektiv das gleiche entwickeln können ,, oder kann mir jemand empfehlen, wie ich dies mit C # erreichen kann .. Ich brauche eine Idee für Klassendesign der gleiche.

Ich bin mit .NET 1.1.

War es hilfreich?

Lösung

Zunächst müssen Sie Klassen erstellen, die Ihre Regeln definieren kann. Sobald Sie diese Struktur an Ort und Stelle haben, werden Sie in der Lage sein, einen Motor zu bauen, der diese Klassen verwendet wird.

ich auf die Schaffung etwas aussehen würde:

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
}

Dann geht von dort ....

Diese Struktur würde besser, wenn es geändert wurde eine Gruppe von Regeln zu haben, die zu einer Gruppe von Regeln hinzugefügt werden könnten, zum Beispiel (a und b) oder (c und d) - Ich werde es dir überlassen darüber nachdenken, für jetzt.


Bitte beachten Sie, ich einige C # 3.0-Konstrukte bin mit hier, müssen Sie volle private Eigenschaften in 1.1 erstellen.

Andere Tipps

Sie könnten einen DSL mit boo schaffen, aber ich weiß nicht, ob das mit 1.1 funktioniert

Sie werden von .NET 1.1 sehr begrenzt. Ich denke, Ihr erster Schritt wird sein, zu aktualisieren.

Die nachfolgenden Schritte könnte die Regel-Engine eingebaut in Windows Workflow Foundation einzubeziehen; dieser Motor und die grafischen Designer mit ihrem verbundenen, wurden entwickelt, nutzbar außerhalb von WF sein.

Ein andere Sache zu prüfen, wird die Validierung Application Block sein, den Teil der Microsoft Enterprise Library ist.

Keines dieser Dinge vor sechs Jahren existierte, als .NET 1.1 die Erde regiert.

Oder Sie könnten nur lassen Sie jemand anderes diese Arbeit machen und ein gutes .NET Rules Engine wie InRule Technology Produkt, IBM / ILOG Rules for .NET oder Blaze Advisor für .Net verwenden. Sie arbeiten gut und geben Ihnen eine leistungsfähige Regeln Umgebung in .Net

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top