我正在学习Drools,并在PACKT“Instant Drools Starter”(第19页)中遇到了一个令我感到困惑的例子。
有人可以解释一下这实际上是做什么的。
$p : Purchase ( total > 15)
Purchase ( this != $p, tacoCount > 2)
据我所知,第一行是查找“总数”超过15的购买并将其分配给变量$ p。
然后第二行(我认为)说与另一个购买匹配,除了分配给$ p的购买,tacoCount超过2。
但这提供了什么目的?这些规则的简明英文版本是什么。
担心这里隐藏着一些微妙的东西,或者这只是一个“糟糕”的例子?
答案 0 :(得分:3)
普通英语。让总计超过15-(Purchase ( total > 15)
)的购买让我们称之为$p
。现在,如果还有另一次购买(Purchase ( this != $p,
),其中taco计数大于2(tacoCount > 2)
),那么就让我们做点什么。
我不认为这对模式背后有太多“意义”。我只是说明你必须使用Java关键字(而不是Drools运算符)来避免规则与大于15的单个购买匹配的情况 - 超过两个玉米饼。如果你想要两个不同的事实,这是至关重要的。
(这是TacoHouse营销奇迹可能会提出的一种规则,如果他在过去两周内有一些像这样的购买,可以为客户的下一次购买提供免费的辣椒酱。可能需要额外的限制。 - 它可能会发生。;-))