如何在drools规则语言中加入两个查询

时间:2015-01-24 09:22:37

标签: drools

我有两个用于查找特定项目的查询,它们如下:

query "score" (double s)
    Item( score > s )
end

query "price" (double p)
    Item( price < p )
end

以下查询用于查找项score > s or price < p

query "price or score" (double p, double s)
    price(p;) or score(s;)
end

我的问题是如何找到所有项score > s and price < p

以下查询无效。它执行交叉连接,而不是内连接。

query "price and score" (double p, double s)
    price(p;) and score(s;)
end

由于

1 个答案:

答案 0 :(得分:4)

此查询提供物品事实,其价格&lt; p和得分> S:

query "price and score" (double p, double s)
    item: Item(price < p, score > s)
end

要将查询组合为两个查询的组合,您必须提供一个变量来绑定对事实的引用:

query "score" (double s, Item item)
    Item( this == item, score > s )
end

query "price" (double p, Item item)
    Item( this == item, price < p )
end

query "price and score" (double p, double s )
    price(p, item; ) and score(s, item; )
end