我们希望使用GoLang实现我们的业务逻辑,但是找不到golang规则引擎/推理引擎的任何好的实现,任何人都有经验,有什么建议吗?
答案 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
输入检查并评估。