尝试将累积函数(intValue)的结果插入到散列映射中时出错<string,integer =“”>()

时间:2017-04-20 13:35:52

标签: drools

我试图在Hashmap()中插入一个值,但是当我尝试将累积函数的结果(在drl文件中为$ totals)作为Hashmap的值时,我的测试用例失败了。我没有运气也试过Integer.valueOf($ totals)而不是$ totals。

我的drl文件包含:

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

我的订单类

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;
    }
}

有什么建议可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

尝试此绑定:

Number($totals : intValue > 0) 

如果您在问题中逐字添加错误消息,将会有所帮助。

“引发错误” - 这是否意味着“抛出异常”或“报告错误”。何时何地......?