我想知道一种为以下情况编写规则的方法
当购物车包含产品代码为“ 123”,“ 234”或“ 345”的条目且这些产品的条目总数之和(与以上产品代码的标准相匹配的条目为“ 123”,“ 234”或“ 345” “)大于5 然后打印一条消息
通过仅检查一个产品代码是否太硬,我就可以部分实现功能。
想看看是否有可能在不使用功能的情况下在when条件下实现相同的逻辑
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;
}
}