规则引擎:最适合嵌入式系统

时间:2016-08-02 12:22:25

标签: c++ drools rule-engine clips jess

我一直在研究更适合在嵌入式系统上运行的规则引擎。系统将从传感器收集信息,并根据该信息进行特定的C / C ++调用。一个例子是:

IF RainSensor.value > RainSensor.threshold 
THEN call( GarageWindow::close())

GarageWindow是一个C ++类,它位于链接到规则引擎库的二进制文件中。

我不能对所述嵌入式系统的功能做出假设。对它的要求是:

  • 最小占地面积。
  • 便携式
  • 能够进行函数调用(从其RHS进行C / 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选项的缺点不是这样。

我完全没有其他适合嵌入式系统的引擎吗?

0 个答案:

没有答案