0

我的要求是我需要计算来自同一客户的订单请求,而无需在规则中硬编码 customerid。原因是如果我有 1000 个客户,那么我需要为此编写 1000 条规则。为避免这种情况,我需要通用方法来处理所有客户对象。

例如,customerA 和 customerB 有四个订单请求对象。我的规则应该能够计算出来自单个客户的请求数量,并且我还需要存储这些对象。

基本上我需要 sql's group by equivalent method in drools 。

请提供指点

4

1 回答 1

0

你有没有尝试过这样的事情?:

rule 'Count Order Requests'
when
    $c: Customer()
    $n: Number() from accumulate( 
        $o: OrderRequest(customer == $c),
        count($o)
    )
then
    //use $n
end

即使对于没有任何 OrderRequest 的客户,此规则也会触发。如果这不是您想要的,那么您必须在 $n 的 intValue 上添加一个约束:

$n: Number(intValue > 0) from accumulate (....)

希望能帮助到你,

于 2013-02-20T09:04:26.600 回答