C或Python中的规则引擎

时间:2009-12-17 23:39:14

标签: java python c rule-engine

我正在寻找C或Python的规则引擎,但是如果你知道用另一种语言实现的规则引擎,我会很高兴知道它。

引擎将用作自动化房屋的方式,例如当有人离开房间时关灯。所以那里没有“办公室”规则(你在Excel等规则中也是如此)。

我已经研究过Java中的Jess和Drools并且做得很好。我想知道其他人,并且可能使用比Java更少的内存。 我在Python中听说过RuleCore,但实际上找不到任何文档(SourceForge上有1.0版本,但看起来它们正在销售v.2.0)。

编辑:通过规则引擎(推理引擎),我的意思是RETE或同等的实现。

10 个答案:

答案 0 :(得分:7)

在Python中搜索基于RETE的规则引擎时,PykePyCLIPS可能是您想要使用的规则引擎。

PS:我对S.Lott关于Pyke的回答发表了评论。我根据他的建议发布了一个单独的答案,并且让其他读者容易知道,如果他们正在搜索规则引擎,那么这个答案中提到的规则引擎可能是一个可能的选择。

答案 1 :(得分:2)

您可以按照已建议的那样查看CLIPS,或者如果您想付钱或需要Rete2。我以前在Unix上使用过CLIPS,并成功地将其嵌入到其他应用程序中。

希望这有帮助。

答案 2 :(得分:1)

ruleby是用ruby编写的规则引擎。它是2008年rubyhoedown的演讲主题:ruleby-the-rule-engine-for-ruby

答案 3 :(得分:1)

Pychinko已经存在了一段时间。我从来没有在生产中使用过它,但是一段时间以前就研究过它可能的生产应用。看起来它具有非常好的功能和一个体面的用户社区。

http://www.mindswap.org/~katz/pychinko/

答案 4 :(得分:0)

实际上,Python 规则引擎。

“发动机将用作自动化房屋的方式,例如当有人离开房间时关灯。”

您需要传感器和控制器。您将“规则”编写为普通的Python对象。

您的主“程序”从您的传感器收集事件并将事件发送到您的控制器。

如果您可以通过普通USB读取传感器,那就更好了。船舶行业使用一些密切相关的标准,如NMEA 0183和NMEA 2000,用于指定从传感器到控制器的总线流量。

你不需要另一种规则语言。你有Python。

答案 5 :(得分:0)

Rulecore确实部分用Python编写。但这并不重要。作为用户,您无论如何都不会看到任何这些实现​​细节。

规则纯粹是声明性的,并使用XML定义。 XML使用Web服务或JMS或其他协议作为事件发送到ruleCore CEP服务器。

答案 6 :(得分:0)

以下是java中13个开源规则引擎的列表,Drools可能是其中最好的。 http://java-sources.org/open-source/rule-engines

答案 7 :(得分:0)

我知道ruleCore有一些用Python编写的部分。但是API使用XML和ActiveMQ或WebServices,因此它处于更高的抽象级别。

答案 8 :(得分:0)

Nebri是为家庭自动化和其他软件/机器编写规则的最简单方法。这是完成灯光关闭的一个例子:

class high_temp_shutdown(NebriOS):
    listens_to == ['shared.pebble_location'] 


    def check(self):
        # if pebble dongle is out or room, return true
        return shared.pebble_location > 3 # in meters

    def action(self):
        smartthings.lights(2,"off")

它是一个完美的自动化工具,因为您可以在现有的库中安装现有的库。 Nest,SmartThings,Sen.se等。它只是Python!

要更全面地解释为什么Python本身不是规则引擎,请参阅this article。仅仅因为Python本身可以执行规则,你手上没有规则引擎。事实上,这是一个巨大的建筑转变。

答案 9 :(得分:0)

我用python写了一个简单的规则引擎。您可以将规则存储在json或yaml字符串中,并使用此规则引擎将规则与上下文匹配。

https://github.com/tclh123/rule