Lah*_*Cen 1 java rule-engine drools expert-system jess
在 jess 中,从规则返回字符串的方法如下:
(defrule welcome-toddlers
"Give a special greeting to young children"
(person {age < 3})
=>
(printout t "Hello, little one!" crlf))
Run Code Online (Sandbox Code Playgroud)
我的问题是如何实现返回功能,这就是我想要的:
(defrule welcome-toddlers
"Give a special greeting to young children"
(person {age < 3})
=>
(return "Hello, little one!"))
Run Code Online (Sandbox Code Playgroud)
如果不可能怎么办?
规则不像函数那样被调用 - 所以你的问题没有意义。由于工作记忆中发生的事情,规则会以某种(显然)随机的顺序触发 - 那么来自这些规则之一的字符串应该去哪里呢?函数(run)(fireAllRules方法)仅返回已触发的规则数量,仅此而已。
您希望将欢迎幼儿的字符串放在哪里?必须选择一种将规则中创建的数据传递到应用程序中的该点的方法。以下是一些流行的选项:
greeting向 person 添加一个槽并将其存储在那里。(注意不要造成无限循环。)除了术语上的一些差异之外,Drools 中的内容是相同的。
这两个系统都有文档,您可以在其中找到此问题和其他问题的所有详细信息。