Je construis un moteur de règles qui se ferme après la correspondance de la première règle. L'ordre des règles est fait en utilisant Salience, lock-on-active (pour empêcher les correspondances) et le groupe d'activation de quitter dès que l'entrée correspond à la première règle.Drools 7.2: Construire un moteur de règles (mode moniteur et hautes performances)
L'entreprise a maintenant une nouvelle exigence pour un mode de surveillance où le moteur doit continuer à faire correspondre l'entrée à une règle qui n'est pas en mode moniteur.
Par exemple:
Object(attr1 = 1, attr2 = 2)
monitor Rule 1: if (attr1 = 1)
non-monitor Rule 2: if(attr = 1 and attr2= 2)
non-monitor Rule 3: ..
Ici, il doit correspondre à la fois la règle 1 et la règle 2, mais MUST (pour plus performante) sortie dès que la règle 2 est adaptée car il est dans un mode non-moniteur . Les règles du mode moniteur sont simplement utilisées pour voir si elles sont évaluées et si nous déclenchons des événements sur le backend pour nos besoins professionnels. J'utilise actuellement PackageDescBuilder, RuleDescrBuilder, etc. pour charger dynamiquement nos règles à partir de la base de données. Un simple StatelessKieSession est utilisé pour évaluer et stocker les résultats dans le prédicat dans le cadre de l'ERS. Q: Comment les nouvelles règles peuvent-elles être construites et quels concepts dois-je explorer ici à cette fin?
Je fais référence à cette documentation ici: https://docs.jboss.org/drools/release/7.2.0.Final/drools-docs/html_single/#_rule_attributes
Merci!
Il est plus simple d'appeler 'fireAllRules (1)' pour arrêter après la première règle ayant été tiré. – laune