一种基于Groovy的规则引擎系统的制作方法

文档序号:12596232阅读:1965来源:国知局
一种基于Groovy的规则引擎系统的制作方法与工艺

本发明涉及数据处理技术领域,尤其是涉及一种基于Groovy的规则引擎系统。



背景技术:

Apache Groovy是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,为Java开发者提供了现代最流行的编程语言特性,而且学习成本很低(几乎为零),无缝集成所有已经存在的Java对象和类库,可直接编译成Java字节码,这样可以在任何使用Java的地方使用Groovy。

目前的规则引擎系统,主要是基于配置化、Expression框架来实现的,配置的过程会随着业务的复杂度和系统的复杂度变得越来越繁琐、臃肿,不便于维护,性能上也无法很好地做到实时计算。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种灵活高效、减少资源消耗的基于Groovy的规则引擎系统。

本发明的目的可以通过以下技术方案来实现:

一种基于Groovy的规则引擎系统,该规则引擎系统基于Apache Groovy实现,包括:

规则设置界面,用于与用户交互,供所述用户设置针对某个场景的规则及相应配置数据,并将获取的所述规则及相应配置数据存储于Redis中;

规则发布模块,用于将所述规则设置界面获取的规则发布上线;

规则池,用于存储有规则列表;

规则计算模块,用于与用户交互,在收到所述用户的计算请求时响应,根据所述规则池内的规则列表进行计算,向用户反馈计算结果。

所述规则计算模块包括:

变量初始化单元,用于加载当前计算所需的所有变量信息,并将所述变量信息封装为一规则上下文对象;

计算单元,用于获取规则池中的规则列表,并根据所述规则上下文对象实现规则与规则间的变量传送与数据共享,完成所述规则列表中所有规则的计算。

所述计算单元基于流式计算完成所有规则的计算。

还包括:

规则池更新模块,在规则计算模块执行前响应,用于读取所述Redis中的配置数据,更新规则池。

所述规则池更新模块进行规则池更新的具体过程为:

根据读取规则的配置数据与规则池内已有的规则列表进行比较,判断是否有新的规则或是否存在规则更新,若是,则对规则池进行实时动态编译。

与现有技术相比,本发明具有以下优点:

1)本发明可通过规则设置界面实现与用户的互动,具有可编程性,相比手工配置化的规则引擎,更加灵活高效。

2)本发明可通过规则池更新模块对规则进行动态编译,降低了反复编译计算的性能损耗,减少了资源的消耗。

3)本发明基于流式计算,实现了实时计算的高并发业务需求。

附图说明

图1为本发明的结构示意图;

图2为本发明的规则计算流程示意图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

如图1和图2所示,本实施例提供一种基于Groovy的规则引擎系统,该规则引擎系统基于Apache Groovy实现,包括规则设置界面1、规则发布模块2、规则池3和规则计算模块4,其中,规则设置界面1用于与用户交互,供所述用户设置针对某个场景的规则及相应配置数据,并将获取的所述规则及相应配置数据存储于Redis中;规则发布模块2用于将所述规则设置界面1获取的规则发布上线,编写好的规则可以直接发布上线;规则池3用于存储有规则列表;规则计算模块4用于与用户交互,在收到所述用户的计算请求时响应,根据所述规则池3内的规则列表进行计算,向用户反馈计算结果。

规则计算模块4具体包括变量初始化单元41和计算单元42。变量初始化单元41用于加载当前计算所需的所有变量信息,并将所述变量信息封装为一规则上下文对象;计算单元42用于获取规则池中的规则列表,并根据所述规则上下文对象实现规则与规则间的变量传送与数据共享,完成所述规则列表中所有规则的计算,计算单元基于流式计算完成所有规则的计算。

为了使上述基于Groovy的规则引擎系统可以实现动态编译,该规则引擎系统还可包括规则池更新模块5,该规则池更新模块5在规则计算模块4执行前响应,用于读取所述Redis中的配置数据,更新规则池3,进行规则池更新的具体过程为:

根据读取规则的配置数据与规则池内已有的规则列表进行比较,判断是否有新的规则或是否存在规则更新,若是,则对规则池进行实时动态编译。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1