以通用方式编写drl

时间:2013-02-20 06:26:39

标签: drools drools-guvnor drools-fusion

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

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

基本上我需要在drools中通过等价方法获得sql的组。

请提供指示

1 个答案:

答案 0 :(得分: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 (....)

希望它有所帮助,