当前位置: 首页 > 知识库问答 >
问题:

使用Drools找到最优惠的价格...不工作

薛博赡
2023-03-14

有一个报价的供应商集合,并有一个流口水的规则来找到最好的供应商(价格最低),但它似乎没有按预期工作......

以下是供应商POJO:

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@AllArgsConstructor
@Getter
@Setter
@ToString
public class Supplier {
    private String supplier;
    private String product;
    private double price;
}

这是Drools DRL:

global org.slf4j.Logger log;

rule "Find_Best_Supplier"
    when
        $suppliers: Collection(size > 0)
        $best: Supplier() from $suppliers
        exists Supplier($best.price < price) from $suppliers
    then
        log.info("{}: Supplier {} is preferred for Product {}",
            drools.getRule().getName(),
            $best.getSupplier(),
            $best.getProduct());

        delete($suppliers);
        insert($best);
end

以下是插入和触发规则的主代码段:

Supplier s1 = new Supplier("S1", "P1", 18.99);
Supplier s2 = new Supplier("S2", "P1", 18.59);
Supplier s3 = new Supplier("S3", "P1", 18.79);

KieSession ks = container.newKieSession();
ks.setGlobal("log", log);
ks.insert(Arrays.asList(s1, s2, s3));
ks.insert(in);
ks.insert(th);
ks.insert(pm);
ks.fireAllRules();
ks.dispose();

在日志中,它显示-Find\u Best\u Supplier:产品P1首选供应商S3。。。它应该选择S2。。。

有什么想法或建议吗?

共有1个答案

马边浩
2023-03-14

只是为了其他人的利益...这是更正后的DRL:

rule "Find_Best_Supplier"
    when
        $suppliers: Collection(size > 0)
        $best: Supplier($low: price) from $suppliers
        not Supplier(price < $low) from $suppliers
    then
        log.info("{}: Supplier {} is preferred for Product {}",
            drools.getRule().getName(),
            $best.getSupplier(),
            $best.getProduct());

        delete($suppliers);
        insert($best);
end
 类似资料:
  • 我在WooCommerce上创建了一个产品,并在产品详细信息页面上使用hook

  • 我是一个node js编程,在amadeus网站上测试自助api调用。 我知道整个流程:航班提供搜索- PS.“创建订单”实际上是如何创建航班订单的?我没有看到预订机票的url链接,就像skyscanner的api一样。我得到的只是 客户如何根据此信息预订机票? PPS:是否可以在流程中跳过航班报价价格?如果没有,来自航班报价价格的响应作为创建订单的输入有效多长时间? 提前感谢。

  • 提示 页面模板源码免费开源,在uni-app的插件市场uView的 示例项目 中,在右上角选择"使用 HBuilderX 导入示例项目" 或者 "下载示例项目ZIP", 在HX运行项目即可看到和使用模板。 提示 由于右侧的演示是通过iframe标签引入的,缺少了手机端运行的相关API,或者因为演示区域太小,或者电脑分别率不够高 ,导致演示可能会有问题,手机端有不会这些问题,请在右上角的"演示"中用

  • 优惠券 功能介绍:店铺可定期发布优惠券,增加更多用户粘性。 步骤 从【营销中心】→【优惠券】→【添加优惠券】。 设置优惠券名称、面额、发行量、有效时间、以及使用条件。

  • 我有一个网站正在使用Stripe来处理订阅付款。只有一种类型的订阅。我按照NetTuts上的教程进行了初始设置。有一个表单可以精细处理订阅,一切都正常。客户要求优惠券代码。Stripe支持这个,所以我开始尝试在现有表单中添加优惠券代码。 我在Stripe中设置优惠券代码,设置测试密钥,并在Stripe中切换到测试模式。我正在代码中执行几个检查: 检查是否输入了优惠券,如果没有,则创建一个没有优惠券

  • 说明 作废一张优惠券,客人不会收到优惠券作废推送 请求地址 http://api.dc78.cn/Api/co_cancel 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 no 券号 id 券id取自协议4.1中返回的coid op 操作员 返回 { "status": "1", "info": "券作废成功:200426878349", "server_timestamp": 1