Хотелось бы узнать подход к написанию правила для приведенной ниже ситуации
КОГДА корзина содержит записи с кодом продукта «123», «234» или «345» и суммой количестваколичество записей этого продукта (которое соответствует вышеуказанным критериям кода продукта: «123», «234» или «345») превышает 5, ТО печатать сообщение
Я смог сделать это с помощью функции частично,проверяется только один код продукта, который слишком жестко запрограммирован.
Хотел узнать, возможно ли достичь той же логики в условии когда без использования функций
function boolean newFunction(Cart cart ,Integer allowed){
List<CartEntries> filteredList = cart.getEntriesList().stream().filter(e -> e.getProduct().getCode().equals("123")).collect(Collectors.toList());
double quantity = filteredList.stream().mapToDouble(CartEntries::getQuantity).sum();
if(quantity >allowed)
return true;
else
return false;
}
rule "cartCheck"
when
cart : Cart( )
eval(newFunction(cart,5))
then
System.out.println("Warning! cart is running out!");
end
Используемые модальности
public class Cart {
List<CartEntries> entriesList;
public List<CartEntries> getEntriesList() {
return entriesList;
}
public void setEntriesList(List<CartEntries> entriesList) {
this.entriesList = entriesList;
}
}
public class CartEntries {
private Product product;
private Integer quantity;
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
public Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
}
public class Product {
private String code;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}