GoLang是否有任何规则引擎/推理引擎

时间:2013-03-27 19:53:18

标签: go rule-engine

我们希望使用GoLang实现我们的业务逻辑,但是找不到golang规则引擎/推理引擎的任何好的实现,任何人都有经验,有什么建议吗?

4 个答案:

答案 0 :(得分:2)

有一个项目旨在在Go中实现ISO Prolog编译器:

我还没有对它进行测试,但考虑到它实现了一些基本的Prolog,那应该是一个非常强大的基于规则的推理引擎,AFAIS。

否则,在godoc.org处搜索“规则”也会产生一堆包:

答案 1 :(得分:1)

据我所知,这样的事情的最好例子是在大多数标准库中进行单元测试的“表驱动”方法。例如,fmttests

除此之外,Go是一种强大的,富有表现力的语言。你真的需要什么?在Go中有许多状态机实现的例子,以及许多具有声明性JSON配置的Web框架。

如果你的意思是正确的逻辑编程,那么它还没有流行的Go库。

答案 2 :(得分:1)

如果您熟悉JBoss Drools,那么Golang中会有类似的东西。 签出https://github.com/newm4n/grool

它具有类似于Drools DRL的DSL,称为GRL。

rule SlowDown "When testcar is slowing down we keep decreasing the speed." salience 10  {
    when
        TestCar.SpeedUp == false && TestCar.Speed > 0
    then
        TestCar.Speed = TestCar.Speed - TestCar.SpeedIncrement;
        DistanceRecord.TotalDistance = DistanceRecord.TotalDistance + TestCar.Speed;
}

答案 3 :(得分:0)

看看https://github.com/antonmedv/expr

它可以解析下一个表达式:

# Get the special price if
user.Group in ["good_customers", "collaborator"]

# Promote article to the homepage when
len(article.Comments) > 100 and article.Category not in ["misc"]

# Send an alert when
product.Stock < 15

输入检查并评估。

代码也非常好:Build Status Go Report Card Code Coverage