Я новичок в слюнявостях, и я написал несколько правил, и они работают так, как ожидалось. Однако я не могу не думать, что существует более сжатый способ написания этих правил.правила слюни, требующие нескольких других правил.
Моей ситуацией является то, что многие правила имеют несколько аналогичных основных требований, которые я повторяю в каждом правиле. Так, например, предположим, что у меня есть следующие правила:
rule "Main Valid Message"
when Account (open && valid)
then myResults.add(new Message("Your account is valid"))
end
rule "The user owns something Message"
when Account (ownership.size() >= 1)
then myResults.add(new Message("You own something"))
end
rule "Eligibility Message"
when
Account (open && valid)
Account (ownership.size() >= 1)
then myResults.add(new Message("You are eligible"))
end
Есть ли способ переписать правила приемлемости, чтобы воспользоваться первыми двумя правилами, а не дублируя их содержание?
ОТВЕТ: Используя комбинацию ответов J Энди и Laune х ниже, я написал следующее:
declare IsValid
account : Account
end
declare OwnsSomething
account : Account
end
rule "Main Valid Message"
when $account : Account (open && valid)
then
myResults.add(new Message("Your account is valid"))
insertLogical(new IsValid($account));
end
rule "The user owns something Message"
when $account : Account (ownership.sizeOwnsSomething() >= 1)
then
myResults.add(new Message("You own something"))
insertLogical(new OwnsSomething($account));
end
rule "Eligibility Message"
when
IsValid()
OwnsSomething()
then myResults.add(new Message("You are eligible"))
end
@ большой ответ Laune в сделал кое-что отметить мой ответ не принимает во внимание: Там может быть несколько пользователей/счета в го рабочую память одновременно. Если вы все еще хотите использовать этот подход, вы можете украсить учетную запись/пользователя фактом «AuthenticatedUser», чтобы у вас все еще был доступ к свойствам учетной записи, таким как идентификатор. – kaskelotti