2017-04-20 2 views
0

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?

Répondre

0

Essayez cette liaison:

Number($totals : intValue > 0) 

Il serait utile si vous ajoutez le message d'erreur verbatim à votre question.

"Lève une erreur" - signifie-t-il "déclenche une exception" ou "signale une erreur". Quand et où ...?

+0

Merci beaucoup, ça marche maintenant. – Alex