2016-04-05 7 views
0

Betrachten Sie in Drools eine Reihe von Regeln, die eine Aktivierungsgruppe bilden, alle von ihnen haben die gleiche Bedeutung und alle von ihnen sind aktiviert. Da sie sich in einer Aktivierungsgruppe befinden, kann nur einer von ihnen auslösen.Ist die Regelauswahl in Drools nicht deterministisch oder zufällig?

Ich möchte wissen, ob die geifert Motor stellt sicher, dass jede dieser Regeln hat ungefähr die gleiche Chance des Brennens (Auswahl ist zufällig) oder wenn es nur formal undefined die Regel wird ausgelöst ist (Auswahl ist nicht deterministisch). Im letzteren Fall würde die ausgelöste Regel von dem Zustand der Maschine abhängen, wenn überhaupt und in der Praxis z.B. fast immer wird die oberste Regel ausgelöst.

Antwort

0

Vorausgesetzt, es gibt n Regeln mit gleicher Priorität, die alle aktiviert sind: Es gibt keine Zufallsauswahl, die von der Engine zur Auswahl der nächsten auslösenden Regel vorgenommen wird, dh Sie können die Engine nicht zur Auswahl von a verwenden Gewinner in einer Lotterie.

Es gibt so etwas wie eine Prioritätswarteschlange, und nach einem effizienten Verfahren werden neue Aktivierungen eingegeben. Sie können diesen Code lesen oder einen Test entwickeln, um festzustellen, wie, aber Sie sollten Ihre Anwendung nicht auf diesen Ergebnissen basieren.