我想知道一种为以下情况编写规则的方法

当购物车包含产品代码为“ 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;
    }
}