2013-02-20 2 views
0

Мое требование состоит в том, что мне нужно посчитать запросы заказов от одного и того же клиента без жесткого кодирования customerid в правиле. Причина в том, что если у меня 1000 клиентов, тогда мне нужно написать 1000 правил для них. Чтобы избежать этого, мне нужен общий способ обработки всех объектов клиента.Написание drl в общем виде

например, есть четыре объекта запроса запроса от customerA и customerB. Мое правило должно определить количество запросов от indivdual customer, а также мне нужно сохранить эти объекты.

В основном мне нужна группа sql методом equvalent в drools.

Просьба предоставить указатели

ответ

0

Вы пробовали что-то вроде этого ?:

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

Это правило будет срабатывать даже для клиентов без каких-либо OrderRequest. Если это не то, что вы ищете, то вы должны добавить ограничение на intValue от $ п:

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

Надеется, что это помогает,

+0

мне нужны клиентам конкретных заказам. – user1668653

+0

Вместо номера вам нужны заказы? Затем вы можете изменить счетчик ($ o) с помощью collectSet ($ o) и изменить Number() на Set(). В RHS вашего правила вы будете иметь набор всех заказов, принадлежащих клиенту. Затем вы можете сохранить это на карте > или сделать все, что вам нужно. –

Смежные вопросы