2016-06-06 6 views
0

Ich habe eine Reihe von Regeln für jeden meiner Benutzer. Im Moment sind diese Regeln in einer Datei eingerichtet. Aber ich möchte meinen Benutzern erlauben, Regeln zu ändern/hinzuzufügen. Die Regeln sind nicht so kompliziert. Zum Beispiel, unten sind ein paar Regeln:Den Endbenutzern erlauben, die Regeldatei zu ändern

rule "Rule 1" 
    when 
     $order : OrderInfo(getOrderDate() < new Date(...) 
    then 
     $order.setReturnEligibility(false); 
end 

rule "Rule 2" 
when 
    $item : ItemInfo(nonReturnableCategory.contains(getItemCategory().toLowerCase())) 
then 
    $item.setReturnEligibility(false); 
end 

rule "Rule 3" 
    when 
     $item : ItemInfo(isFinalSale()) 
    then 
     $item.setReturnMethod(...); 
end 

Ich möchte eine Benutzeroberfläche ähnlich Drools Werkbank bauen. Aber das ist für den Endkunden, also möchte ich, dass es eine sehr einfache, benutzerfreundliche Oberfläche ist. Und ich plante, die Regeln in einer Datenbank zu speichern.

Ich möchte den Benutzern erlauben, neue Regeln hinzuzufügen und bestehende zu ändern. Zum Beispiel, wenn Regel 3 oben nicht verfügbar war, wird der Benutzer eine Dropdown-Liste in der Benutzeroberfläche haben, wo er die Kategorien auswählen kann, die nicht zurückgegeben werden können. Oder sie können eine der Regeln aktivieren oder deaktivieren.

Was ich wissen wollte, ist, was ist der beste Weg, um die Regeln zu erhalten? Sollte ich nur die gesamte Regel-Datei als eine Zeichenfolge in der DB mit einer Art von Platzhaltern haben, und die Zeichenfolge ändern, wenn der Benutzer die Regeln hinzufügt/aktualisiert? Ich benutze Drools 6.2. Ich weiß, dass die Frage irgendwie vage ist, aber ich habe keine Ahnung, wie/wo ich anfangen soll, also wird jeder Vorschlag geschätzt.

Danke.

+0

Ihre "Endbenutzer" kennen zumindest eine solide Java-Untermenge? Bist du sicher? * – laune

Antwort

0

Wenn das Ändern einer vorhandenen Regel bedeutet, dass nur die Einschränkung den "Text mit Platzhalter" ändert, kann dies eine gute Idee sein.

Allerdings würde ich nicht die gesamte DRL-Datei als DB-Eintrag speichern. Wahrscheinlich würde ein System, bei dem einzelne Regeln als Entitäten gespeichert werden, am besten funktionieren. Attribute wären ein Name, der Text, ein "is selected" -Attribut etc.

+0

Danke für deine Vorschläge. Ich beabsichtige, Ihrer Methode zu folgen, einzelne Regeln als separate Entitäten zu speichern. Allerdings habe ich eine andere Frage bezüglich der Leistung, die ich bei http://stackoverflow.com/questions/37671645/drools-concerns-about-performance-and-thread-safety gestellt habe. Irgendwelche Vorschläge dafür? – drunkenfist