Я новичок в клипах и пытаюсь написать правила для срабатывания набора правил. условие для правила:
Рассчитайте скидку для продуктов из продуктов 1, 2, 3 как 10, только если продукт 1 присутствует (обязательно). и общее количество продуктов больше или равно 6.
(deftemplate Product
(slot productNumber)
(slot quantity))
(defrule sum_of_quantity
(exists (Product (productNumber 1 | 2 | 3)(quantity ?q&:(> ?q 1))))
=>
(bind ?totalQuantity 0)
(do-for-all-facts ((?p Product))
(or (eq ?p:productNumber 1)
(eq ?p:productNumber 2)
(eq ?p:productNumber 3))
(bind ?totalQuantity (+ ?totalQuantity ?p:quantity)))
(if (>= ?totalQuantity 6) then
(printout t "TotalQuantity is " ?totalQuantity "and discoun is 10" crlf)))
(deffacts input1
(Product (productNumber 2)(quantity 3))
(Product (productNumber 3)(quantity 3)))
Факты были введены, как показано, и даже без обязательного продукта результат вычисляется и отображается как 10.
Предлагаю.