2014-11-28 3 views
0

Я изучаю Drools и наткнулся на пример в PACKT «Instant Drools Starter» (стр. 19), который меня смутил.Сбивающий с толку пример слюни этого оператора

Может кто-нибудь объяснить, что это на самом деле делает, пожалуйста.

$p : Purchase (total > 15) 
    Purchase (this != $p, tacoCount > 2) 

То, что я понимаю, что первая линия найти Закуп с «общей» более чем на 15 и назначение, что в переменной $ р.

Вторая строка тогда (я думаю), говоря, что совпадение с другим Приобретением, кроме Покупки, назначенной $ p, с tacoCount больше 2.

Но какая цель? Какая простая английская версия этих правил.

С обеспокоенностью, что здесь есть что-то скрытое или это просто «плохой» пример?

ответ

2

Обычный английский. Пусть будет покупка с суммой больше 15.- (Purchase (total > 15)) и назовем ее $p. Теперь, если есть еще одна покупка (Purchase (this != $p,), где количество тако больше двух (tacoCount > 2)), то давайте сделаем что-нибудь.

Я не думаю, что за этой парой шаблонов существует много «смысла». Я просто иллюстрирую, что вам нужно использовать ключевое слово Java (а не оператор Drools), чтобы избежать ситуации, когда правило соответствует одной покупке больше 15.- с более чем двумя тако. Если вам нужны два разных факта, это важно.

(Это правило, с которым может столкнуться маркетинговое чудо TacoHouse, чтобы предоставить один бесплатный перец чили для следующей покупки клиента, если у него было пару покупок, подобных этим в течение последних двух недель. Дополнительные ограничения могут потребоваться . - Это может случиться. ;-))