J'ai faits suivantstri sur la valeur d'attribut dans Drools
declare PriceInfo
price : Integer
end
J'utilise cette règle pour insérer:
règle « insérer » agenda-groupe « trouver-maison tournée » quand
then
PriceInfo p1 = new PriceInfo();
PriceInfo p2 = new PriceInfo();
PriceInfo p3 = new PriceInfo();
PriceInfo p4 = new PriceInfo();
PriceInfo p5 = new PriceInfo();
p1.setPrice(200);
p2.setPrice(300);
p3.setPrice(400);
p4.setPrice(500);
p5.setPrice(600);
insert(p1);
insert(p2);
insert(p3);
insert(p4);
insert(p5);
end
Cela va insérer 5 faits de PriceInfo dans le moteur de règles. J'essaye de le trier dans l'ordre croissant ou décroissant de cette règle.
rule "sort-number"
agenda-group "find-rotated-house"
when
$priceInfo : PriceInfo($price : price)
not PriceInfo(price < $price)
then
$logger.info($priceInfo.toString());
retract($priceInfo);
end
Cependant, dans cette règle, je rétracte le fait. Si je ne me rétracte pas, je reçois la valeur minimum, c'est-à-dire 200. D'autres faits ne sont pas activés. Je veux garder le fait intact dans RE après le tri.
Cette règle fonctionne également mais avec rétractation.
rule "sort-number-1"
agenda-group "find-rotated-house"
when
Number($intValue : intValue) from accumulate(PriceInfo($price : price), min($price))
$p : PriceInfo(price == $intValue)
then
$logger.info($p.toString());
retract($p);
end
Aidez-nous s'il vous plaît.
Merci
Merci pour votre réponse. – Kumar