2016-06-25 21 views
1

Ich habe eine Anforderung für die Behandlung mehrerer Regeln und wählen Sie einen Wert nach den passenden Kriterien.Welche Regel-Engine soll verwendet werden?

könnte die Regel

Fall-1

---------------------------------------- 
| A | B | C | D | priority | value | 
---------------------------------------- 
| a1 | b1 | | c1 | 1  | 250 | 
---------------------------------------- 
|  | b2 | c2 | d2 | 3  | 200 | 
---------------------------------------- 
| a3 | b3 | c3 | d3 | 2  | 100 | 
---------------------------------------- 

sich nach den oben definierten Regeln sein, schauen wir zuerst höchste Anzahl passender Kriterien für und den Wert dieser Regel auswählen, (dh Regel mit dem Wert "100")

Fall-2

---------------------------------------- 
| A | B | C | D | priority | value | 
---------------------------------------- 
| a1 | b1 | | c1 | 1  | 100 | 
---------------------------------------- 
| | b2 | c2 | d2 | 2  | 200 | 
---------------------------------------- 

Wenn zwei sich widersprech RUL Es wird mit der gleichen Anzahl übereinstimmender Kriterien gefunden, dann nach der Priorität gesucht und die Regel mit der höchsten Priorität ausgewählt. In diesem Fall (Regel mit dem Wert „100“.

Fall-3

---------------------------------------- 
| A | B | C | D | priority | value | 
---------------------------------------- 
| a1 | b1 | | c1 | 3  | 100 | 
---------------------------------------- 
| | b2 | c2 | d2 | 2  | 200 | 
---------------------------------------- 
| a3 | b3 | c3 | d3 | 1  | 300 | 
---------------------------------------- 
| a4 | b4 | c4 | d4 | 1  | 400 | 
---------------------------------------- 

In diesem Fall, wenn mehr als eine Regel mit dem gleichen Anzahl von Kriterien entsprechenden gefunden und mit gleicher Priorität dann wählen Sie die Regel mit höchster Wert (dh Rule4 mit Wert 400)

Ich weiß, dass es sehr spezifisch aussieht, aber ich habe versucht, zu googlen, konnte aber keine Regel-Engine finden, die in diesem Fall verwendet werden könnte. Bitte helfen Sie mir mit einigen Zeiger und Ideen zu beginnen mit.

+1

Ich glaube nicht, dass jede Suchmaschine "beste Lösung für das Problem des virtuellen Benutzers" finden wird. OTOH, warum denkst du, dass eine Regel-Engine nicht in der Lage sein wird, dieses einfache Problem zu lösen? Daher lautet die Antwort auf Ihre Frage: Jede Regel-Engine reicht aus. – laune

+0

Stimmen Sie mit Laune überein. Jede Regel-Engine sollte in Ihrem Fall in Ordnung sein. – Alex

Antwort

0

Wie andere darauf hingewiesen haben, sollte jede Regel-Engine in Ihrem Fall funktionieren. Da dies auf den ersten Blick ein sehr leichter Anwendungsfall zu sein scheint, können Sie Rulette dazu fast trivial verwenden (Disclosure - ich bin der Autor). Sie können Ihre Regeln definieren und dann die API getAllRules verwenden, um die Liste der anwendbaren Regeln zu erhalten, nach denen Sie min/max wie erforderlich ausführen können.

Ich bin jedoch neugierig, zu verstehen, warum Sie widersprüchliche Regeln definieren und dann eine "Priorität" auf sie anwenden möchten?