我一直在研究更适合在嵌入式系统上运行的规则引擎。系统将从传感器收集信息,并根据该信息进行特定的C / C ++调用。一个例子是:
IF RainSensor.value > RainSensor.threshold
THEN call( GarageWindow::close())
GarageWindow是一个C ++类,它位于链接到规则引擎库的二进制文件中。
我不能对所述嵌入式系统的功能做出假设。对它的要求是:
我需要根据其能力给予替代方案(将来定义),假设是:
1)嵌入式系统什么都不支持(没有JVM,没有python等):
CLIPS 作为C库或clipsmm作为C ++库。两者均可用于商业应用(夹具的GPL)。
优势:开源。经过充分测试/记录。便携式,可以在内存不足的情况下运行。可以从其RHS部分调用C或C ++函数。很可能规则引擎需要与C或C ++软件进行交互。
缺点:它不是线程安全的。它仅支持正向链接。
2)系统支持python:
PyClips:
CLIPS的Python接口。功能与前一种情况相同。只有在RHS部分需要进行python调用时才使用它。我想念任何优点/缺点?
3)系统支持JVM:
尔杰斯:
优点:与Java对象的良好集成。类似CLIPS的脚本语言。前后链接。自动侦听Java对象以修改插槽。
缺点:已获得许可。只能在编译时定义新类。
Drools :
优势:开源。记录。 Java集成。前后链接。
缺点:它更适合在网络上工作(这是我的印象)。
Drools与Jess在嵌入式环境中的优势是什么?
两者都只能在编译时添加新类。 CLIPS可以在运行时。另一方面,如果更新剪辑实例的C ++代码是旧的,则直接在CLIPS中创建的任何新类都不会与调用C ++代码中的任何其他类匹配。因此,重新编译Java选项的缺点不是这样。
我完全没有其他适合嵌入式系统的引擎吗?