J'ai essayé d'insérer une valeur dans un Hashmap() mais mon cas de test échoue lorsque j'ai essayé de mettre le résultat d'une fonction accumulate ($ total dans le fichier drl) en tant que valeur de Hashmap. J'ai également essayé Integer.valueOf ($ totals) au lieu de $ totals sans chance.Erreur lors de la tentative d'insertion du résultat d'une fonction accumulate (intValue) dans un hashmap <String, Integer>()
Mon fichier DRL contient:
rule "calculate total per item"
no-loop
when
$o : Order($lines : orderLines)
$ol : OrderLine(this memberOf $lines.values() , quantity > 0)
$totals : Number(intValue > 0) from accumulate (
OrderLine($qty : quantity, item.barcode == $ol.getItem().getBarcode()) from $lines.values(),
sum($qty)
)
then
System.out.println("total: " + $totals); //prints out total: 7.0
modify($o){
getPerItems().put($ol.getItem().getBarcode(), $totals); //this line throws an error
//getPerItems().put($ol.getItem().getBarcode(), 1); // If I replace $totals with a number, it works
}
end
Ma classe Commander
public class Order {
private HashMap<Integer, OrderLine> orderLines = new HashMap<Integer, OrderLine>();
private HashMap<String, Integer> perItems = new HashMap<String, Integer>();
...
public HashMap<String, Integer> getPerItems() {
return perItems;
}
}
Tous les conseils pour surmonter ce problème?
Merci beaucoup, ça marche maintenant. – Alex