Drools 以通用方式编写drl
我的要求是,我需要计算来自同一客户的订单请求,而无需在规则中硬编码customerid。 原因是如果我有1000个客户,那么我需要为同样的客户编写1000条规则。 为了避免这种情况,我需要一种处理所有客户对象的通用方法 例如,customerA和customerB有四个order resquest对象。我的规则应该能够计算出单个客户的请求数量,并且我需要存储这些对象 基本上,我需要drools中sql的等价分组方法Drools 以通用方式编写drl,drools,drools-guvnor,drools-fusion,Drools,Drools Guvnor,Drools Fusion,我的要求是,我需要计算来自同一客户的订单请求,而无需在规则中硬编码customerid。 原因是如果我有1000个客户,那么我需要为同样的客户编写1000条规则。 为了避免这种情况,我需要一种处理所有客户对象的通用方法 例如,customerA和customerB有四个order resquest对象。我的规则应该能够计算出单个客户的请求数量,并且我需要存储这些对象 基本上,我需要drools中sql的等价分组方法 请提供指针您尝试过类似的方法吗 rule 'Count Order Reques
请提供指针您尝试过类似的方法吗
rule 'Count Order Requests'
when
$c: Customer()
$n: Number() from accumulate(
$o: OrderRequest(customer == $c),
count($o)
)
then
//use $n
end
即使对于没有任何订单请求的客户,此规则也会触发。如果这不是您想要的,那么您必须在intValue$n上添加一个约束:
$n: Number(intValue > 0) from accumulate (....)
希望能有所帮助,我需要的是特定于客户的订单。而不是您需要的订单号?然后可以使用collectSet($o)更改计数($o),并将Number()更改为Set()。在规则的RHS中,您将拥有属于客户的所有订单集。然后,您可以将其保存在地图中,或者执行任何需要的操作。