5

我们想用 Go 来实现我们的业务逻辑,但是我们找不到 Go 的规则引擎/推理引擎的任何好的实现。有没有人有任何经验或建议?

4

4 回答 4

3

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

我还没有测试过它,但鉴于它实现了一些基本的 Prolog,这应该是一个非常强大的基于规则的推理引擎,AFAIS。

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

于 2014-05-08T21:08:04.797 回答
1

据我所知,最好的例子是在许多标准库中采用的“表驱动”单元测试方法。例如,fmttests

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

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

于 2013-04-15T13:48:40.607 回答
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;
}
于 2019-08-13T09:12:56.400 回答
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

键入检查并评估。

代码也很好: 构建状态 去报告卡 代码覆盖率

于 2018-08-10T11:05:30.980 回答