Skip to content

Latest commit

 

History

History
75 lines (53 loc) · 2.2 KB

File metadata and controls

75 lines (53 loc) · 2.2 KB

gengine架构

  • gengine从v1.2.0开始,进一步简化架构,用户只需要很少的改动,便可从老版本迁移到新版本上来.
  • 从v1.2.0开始,用户也仅需关注gengine的dataContext, ruleBuilder , engineGenginePool这4个API
  • 从v1.2.0开始, gengine框架简化为4部分组成,调整之后,代码更易理解,更容易使用,具体直接表现在代码结构上,具体说明如下:

dataContext

	dataContext := context.NewDataContext()
	//用户注入需要在规则代码中使用的API
	dataContext.Add("println",fmt.Println)

ruleBuilder

const rule = `
rule "1" "rule-des" salience 10
begin
println("hello world, gengine!")
end
`

	dataContext := context.NewDataContext()
	//用户注入需要在规则代码中使用的API
	dataContext.Add("println",fmt.Println)
	
	ruleBuilder := builder.NewRuleBuilder(dataContext)
	err := ruleBuilder.BuildRuleFromString(rule)

engine

const rule = `
rule "1" "rule-des" salience 10
begin
println("hello world, gengine!")
end
`

	dataContext := context.NewDataContext()
	//用户注入需要在规则代码中使用的API
	dataContext.Add("println",fmt.Println)
	
	ruleBuilder := builder.NewRuleBuilder(dataContext)
	err := ruleBuilder.BuildRuleFromString(rule)
	
	eng := engine.NewGengine()
	err := eng.Execute(ruleBuilder, true)

GenginePool

  • gengine实例池,提供给用户在高QPS下使用,为了解决高并发和线程安全问题的API,具体用法在本文档的"引擎池"章节有详细叙述

internal

  • internal文件夹中的代码是gengine的核心,用户可以不必关心其实现