Я новичок в правиле слюни и пытаюсь решить эту проблему.
Вы можете узнать минимальную и максимальную цену товара просто - вам нужно написать несколько правил и добавить две переменные в классе Order:
Class Order
{
private List<Item> itemList;
private int highPrice;
private int lowPrice;
}
Используя следующее правило, вы можете рассчитать минимальное и максимальное значение элемента:
package com.sample
import com.sample.DroolsTest.Message;
rule "rule1"
when
$order : Order($itemList:itemList)
$item:Item() from $order.itemList
then
insertLogical($item);
end
rule "highPriceRule"
when
$order : Order()
$item:Item($price:price,price>=$order.getHighPrice())
then
$order.setHighPrice($item.getPrice());
end
rule "lowPriceRule"
when
$order : Order()
$item:Item($price:price,price<=$order.getLowPrice()||$order.getLowPrice()==0)
then
$order.setLowPrice($item.getPrice());
end
rule "highPrice"
salience -1
when
$order : Order()
then
System.out.println( "higher Item Price is "+$order.getHighPrice());
end
rule "LowPrice"
salience -1
when
$order : Order()
then
System.out.println( "Lower Item Price is "+$order.getLowPrice());
end
in main method you have to write this code and run it
List<Item> items=new ArrayList<Item>();
Item item1=new Item();
item1.setPrice(10);
Item item2=new Item();
item2.setPrice(20);
Item item3=new Item();
item3.setPrice(10);
Item item4=new Item();
item4.setPrice(5);
items.add(item1);
items.add(item2);
items.add(item3);
items.add(item4);
Order order=new Order();
order.setItemList(items);
ksession.insert(order);
ksession.fireAllRules();
Выход: ---
Lower Item Price is 5
higher Item Price is 20
Поскольку я новичок в правиле слюни, я хотел бы спросить, правильная ли это процедура? Или есть другой способ решить эту проблему?