我正在撰写关于规则引擎技术的演示文稿,特别是JBoss Drools.
什么是关于规则引擎的"神话".
我能想到的是,它允许业务用户控制规则引擎,我相信它是可能的,但它需要控制和教育 - 并非所有业务用户都能够做到这一点.
你同意/不同意吗?有没有人有任何想法?
很高兴在Creative Commons下发布我的最终"调查结果"......
LISP或Jess之类的东西是最好的选择吗?我有兴趣编写一个基于用户答案提出建议的程序.计算方面的考虑并不是一个真正的因素,它几乎就是模式匹配引擎.此外,我想为此制作一个应用程序并将其放在网上.
更新:我想把它放在博客或网站上,让人们从那里使用它.我想我的问题是,是否有一个特定的推理引擎可以与.NET系列或PHP一起使用,或者那种效果?每种选择等的优缺点有哪些?
我一直在研究规则引擎,这些规则引擎更适合在嵌入式系统上运行。系统将从传感器收集信息,并根据该信息进行特定的C / C ++调用。一个例子是:
IF RainSensor.value > RainSensor.threshold
THEN call( GarageWindow::close())
Run Code Online (Sandbox Code Playgroud)
作为GarageWindow的C ++类,位于链接到规则引擎库的二进制文件中。
我不能对上述嵌入式系统的功能做出任何假设。要求是:
我需要根据其功能(在以后定义)中给出其他选择,这些假设是:
1)嵌入式系统不支持任何内容(不支持JVM,不支持python等):
CLIPS作为C库或clipsmm作为C ++库。两者均可用于商业应用(clipsmm的GPL)。
优点:开源。很好的测试/记录。可移植,可在低内存占用情况下运行。可以从其RHS部分调用C或C ++函数。规则引擎很可能需要与C或C ++软件进行交互。
缺点:它不是线程安全的。它仅支持正向链接。
2)系统支持python:
PyClips:
到CLIPS的Python接口。功能保持与以前的情况相同。仅当需要在RHS部分中进行python调用时,使用此选项才有好处。我错过任何优点/缺点吗?
3)系统支持JVM:
杰西:
优点:与Java对象的良好集成。类似于CLIPS的脚本语言。向前和向后链接。自动侦听Java对象以修改插槽。
缺点:许可。只能在编译时定义新类。
流口水:
优点:开源。记录下来。Java集成。向前和向后链接。
缺点:它更适合在网络上工作(这是我的印象)。
在嵌入式环境中,Drools vs Jess有什么优势?
两者都只能在编译时添加新类。CLIPS可以在运行时。另一方面,如果更新剪辑实例的C ++代码很旧,则直接在CLIPS中创建的任何新类都不会与调用C ++代码中的任何其他类匹配。因此,重新编译Java选项的弊端并非如此。
还有其他我完全缺少的适用于嵌入式系统的引擎吗?
在 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)
如果不可能怎么办?