我正在寻找C或Python的规则引擎,但是如果你知道用另一种语言实现的规则引擎,我会很高兴知道它。
引擎将用作自动化房屋的方式,例如当有人离开房间时关灯。所以那里没有“办公室”规则(你在Excel等规则中也是如此)。
我已经研究过Java中的Jess和Drools并且做得很好。我想知道其他人,并且可能使用比Java更少的内存。 我在Python中听说过RuleCore,但实际上找不到任何文档(SourceForge上有1.0版本,但看起来它们正在销售v.2.0)。
编辑:通过规则引擎(推理引擎),我的意思是RETE或同等的实现。
答案 0 :(得分:7)
答案 1 :(得分:2)
答案 2 :(得分:1)
ruleby是用ruby编写的规则引擎。它是2008年rubyhoedown的演讲主题:ruleby-the-rule-engine-for-ruby
答案 3 :(得分:1)
Pychinko已经存在了一段时间。我从来没有在生产中使用过它,但是一段时间以前就研究过它可能的生产应用。看起来它具有非常好的功能和一个体面的用户社区。 p>
答案 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字符串中,并使用此规则引擎将规则与上下文匹配。