Considérons le scénario suivant dans Drools: Nous avons une règle, en comparant les objets de type A
et B
les uns contre les autres.Drools: Hiérarchisation des faits basée sur la valeur d'un champ
rule 1
when
$a : A()
$b : B($a.matches($b), flagged == false)
then
mofidy($b) { flag($a) }
end
Cependant, A
objets ont un champ appelé priority
, et quand un B
arrive dans la mémoire de travail, un correspondant A
avec la plus haute priorité devrait le signaler, au-dessus de tous les autres A
s correspondant. Comment est-ce possible dans Drools? Comment cela affecte-t-il les performances?
Merci pour votre réponse! Est-ce que le segment 'when' choisit le' A' avec la plus haute priorité, puis vérifie s'il correspond à un 'B'? Ou choisit-il le plus grand «A» correspondant au «B» donné? – fzwd
La première condition est la vérification de tout 'A' et la seconde filtre le' A' avec la priorité la plus élevée (il filtre en fait tous, sauf celui qui a la plus haute priorité). –