Drools 检查列表中的总和是否大于100

Drools 检查列表中的总和是否大于100,drools,drools-guvnor,drools-planner,drools-fusion,drools-flow,Drools,Drools Guvnor,Drools Planner,Drools Fusion,Drools Flow,我必须在列表上写一个drool函数,它必须做以下事情 创建一个总和 检查总和是否大于100 下面是我创建的流口水规则 rule "001" when $charge : MainClass(subList.size() > 0) $item : SubListClass(number < 0) from $charge.subOrderROList $total : Number() from accumulate(S

我必须在列表上写一个drool函数,它必须做以下事情

  • 创建一个总和
  • 检查总和是否大于100
  • 下面是我创建的流口水规则

        rule "001"   
    when 
           $charge : MainClass(subList.size() > 0)
           $item   : SubListClass(number < 0) from  $charge.subOrderROList
           $total  : Number() from accumulate(SubListClass( $p : number ),sum( $p ) 
    then
           int index = $charge.SubListClass.indexOf($item)+1;
        violations.error(kcontext, "ad", "ad.message", new String[]{String.valueOf(index),$item.getNumber().toString()},index);
       end` 
    
    规则“001”
    什么时候
    $charge:MainClass(subList.size()>0)
    $item:SubListClass(编号<0)来自$charge.SubOrderErrorList
    $total:Number()来自累计(子列表类($p:Number)、总和($p)
    然后
    int index=$charge.SubListClass.indexOf($item)+1;
    错误(kcontext,“ad”,“ad.message”,新字符串[]{String.valueOf(index),$item.getNumber().toString()},index);
    结束`
    
    我无法检查$total是否大于100


    谢谢

    如果可以通过添加负数来获得大于100的总和,这将是正确的。。我保留了Q中的约束条件,因此请根据需要进行更改。可能是
    number>0

    rule "001"   
    when 
      $charge: MainClass(subList.size() > 0)
      $total: Number( intValue > 100 )
              from accumulate( SubListClass($p: number < 0)
                               from  $charge.subOrderROList,
                               sum( $p ) )
    then
    
    规则“001”
    什么时候
    $charge:MainClass(subList.size()>0)
    $total:数量(intValue>100)
    来自累积(子列表类($p:编号<0)
    从$charge.SUBSORDERRORLIST开始,
    总额(百万美元)
    然后