CN106325854A - 一种基于Groovy的规则引擎*** - Google Patents
一种基于Groovy的规则引擎*** Download PDFInfo
- Publication number
- CN106325854A CN106325854A CN201610654148.6A CN201610654148A CN106325854A CN 106325854 A CN106325854 A CN 106325854A CN 201610654148 A CN201610654148 A CN 201610654148A CN 106325854 A CN106325854 A CN 106325854A
- Authority
- CN
- China
- Prior art keywords
- rule
- groovy
- pond
- engine system
- rules
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种基于Groovy的规则引擎***,该规则引擎***基于ApacheGroovy实现,包括:规则设置界面,用于与用户交互,供所述用户设置针对某个场景的规则及相应配置数据,并将获取的所述规则及相应配置数据存储于Redis中;规则发布模块,用于将所述规则设置界面获取的规则发布上线;规则池,用于存储有规则列表;规则计算模块,用于与用户交互,在收到所述用户的计算请求时响应,根据所述规则池内的规则列表进行计算,向用户反馈计算结果。与现有技术相比,本发明具有灵活高效、减少资源消耗等优点。
Description
技术领域
本发明涉及数据处理技术领域,尤其是涉及一种基于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,进行规则池更新的具体过程为:
根据读取规则的配置数据与规则池内已有的规则列表进行比较,判断是否有新的规则或是否存在规则更新,若是,则对规则池进行实时动态编译。
Claims (5)
1.一种基于Groovy的规则引擎***,其特征在于,该规则引擎***基于Apache Groovy实现,包括:
规则设置界面,用于与用户交互,供所述用户设置针对某个场景的规则及相应配置数据,并将获取的所述规则及相应配置数据存储于Redis中;
规则发布模块,用于将所述规则设置界面获取的规则发布上线;
规则池,用于存储有规则列表;
规则计算模块,用于与用户交互,在收到所述用户的计算请求时响应,根据所述规则池内的规则列表进行计算,向用户反馈计算结果。
2.根据权利要求1所述的基于Groovy的规则引擎***,其特征在于,所述规则计算模块包括:
变量初始化单元,用于加载当前计算所需的所有变量信息,并将所述变量信息封装为一规则上下文对象;
计算单元,用于获取规则池中的规则列表,并根据所述规则上下文对象实现规则与规则间的变量传送与数据共享,完成所述规则列表中所有规则的计算。
3.根据权利要求2所述的基于Groovy的规则引擎***,其特征在于,所述计算单元基于流式计算完成所有规则的计算。
4.根据权利要求1所述的基于Groovy的规则引擎***,其特征在于,还包括:
规则池更新模块,在规则计算模块执行前响应,用于读取所述Redis中的配置数据,更新规则池。
5.根据权利要求4所述的基于Groovy的规则引擎***,其特征在于,所述规则池更新模块进行规则池更新的具体过程为:
根据读取规则的配置数据与规则池内已有的规则列表进行比较,判断是否有新的规则或是否存在规则更新,若是,则对规则池进行实时动态编译。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610654148.6A CN106325854B (zh) | 2016-08-11 | 2016-08-11 | 一种基于Groovy的规则引擎*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610654148.6A CN106325854B (zh) | 2016-08-11 | 2016-08-11 | 一种基于Groovy的规则引擎*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106325854A true CN106325854A (zh) | 2017-01-11 |
CN106325854B CN106325854B (zh) | 2019-12-03 |
Family
ID=57740099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610654148.6A Active CN106325854B (zh) | 2016-08-11 | 2016-08-11 | 一种基于Groovy的规则引擎*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106325854B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107330604A (zh) * | 2017-06-26 | 2017-11-07 | 携程旅游网络技术(上海)有限公司 | 机票风控规则的管理方法及*** |
CN107632842A (zh) * | 2017-09-26 | 2018-01-26 | 携程旅游信息技术(上海)有限公司 | 规则配置和发布方法、***、设备及存储介质 |
CN108376064A (zh) * | 2016-11-24 | 2018-08-07 | 阿里巴巴集团控股有限公司 | 规则引擎***及规则引擎的相关方法 |
CN109039751A (zh) * | 2018-08-14 | 2018-12-18 | 深圳壹账通智能科技有限公司 | 配置路由的方法、装置、计算机设备和存储介质 |
CN111221550A (zh) * | 2019-10-24 | 2020-06-02 | 支付宝(杭州)信息技术有限公司 | 用于流式计算的规则更新方法、装置及流式计算*** |
CN112910702A (zh) * | 2021-02-01 | 2021-06-04 | 浪潮云信息技术股份公司 | 一种多形态网关融合方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103269347A (zh) * | 2013-06-03 | 2013-08-28 | 北京奇虎科技有限公司 | 基于服务器端进行资源优化方法、服务器、客户端和*** |
CN103942228A (zh) * | 2013-01-23 | 2014-07-23 | 纽海信息技术(上海)有限公司 | 规则引擎、计算方法、业务***及调用方法 |
CN105446799A (zh) * | 2014-08-22 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种计算机***中进行规则管理的方法及*** |
CN105701242A (zh) * | 2016-02-26 | 2016-06-22 | 浪潮通信信息***有限公司 | 一种可扩展的智能移动终端动态规则检测引擎 |
-
2016
- 2016-08-11 CN CN201610654148.6A patent/CN106325854B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942228A (zh) * | 2013-01-23 | 2014-07-23 | 纽海信息技术(上海)有限公司 | 规则引擎、计算方法、业务***及调用方法 |
CN103269347A (zh) * | 2013-06-03 | 2013-08-28 | 北京奇虎科技有限公司 | 基于服务器端进行资源优化方法、服务器、客户端和*** |
CN105446799A (zh) * | 2014-08-22 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种计算机***中进行规则管理的方法及*** |
CN105701242A (zh) * | 2016-02-26 | 2016-06-22 | 浪潮通信信息***有限公司 | 一种可扩展的智能移动终端动态规则检测引擎 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108376064A (zh) * | 2016-11-24 | 2018-08-07 | 阿里巴巴集团控股有限公司 | 规则引擎***及规则引擎的相关方法 |
CN107330604A (zh) * | 2017-06-26 | 2017-11-07 | 携程旅游网络技术(上海)有限公司 | 机票风控规则的管理方法及*** |
CN107632842A (zh) * | 2017-09-26 | 2018-01-26 | 携程旅游信息技术(上海)有限公司 | 规则配置和发布方法、***、设备及存储介质 |
CN107632842B (zh) * | 2017-09-26 | 2020-06-30 | 携程旅游信息技术(上海)有限公司 | 规则配置和发布方法、***、设备及存储介质 |
CN109039751A (zh) * | 2018-08-14 | 2018-12-18 | 深圳壹账通智能科技有限公司 | 配置路由的方法、装置、计算机设备和存储介质 |
CN111221550A (zh) * | 2019-10-24 | 2020-06-02 | 支付宝(杭州)信息技术有限公司 | 用于流式计算的规则更新方法、装置及流式计算*** |
CN111221550B (zh) * | 2019-10-24 | 2022-09-06 | 支付宝(杭州)信息技术有限公司 | 用于流式计算的规则更新方法、装置及流式计算*** |
CN112910702A (zh) * | 2021-02-01 | 2021-06-04 | 浪潮云信息技术股份公司 | 一种多形态网关融合方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106325854B (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106325854A (zh) | 一种基于Groovy的规则引擎*** | |
CN110650347B (zh) | 多媒体数据的处理方法及装置 | |
CN110058883A (zh) | 一种基于opu的cnn加速方法及*** | |
CN106133696A (zh) | 缩放云资源时动态标识目标容量 | |
US10460513B2 (en) | Combined world-space pipeline shader stages | |
CN103927187A (zh) | 嵌入式***程序执行方法 | |
CN108989885A (zh) | 视频文件转码***、分割方法、转码方法及装置 | |
JP6489760B2 (ja) | ハードウェアコンポーネントのi/oチャネルのフレキシブルな分配方法 | |
Danelutto et al. | Introducing parallelism by using REPARA C++ 11 attributes | |
CN110334436A (zh) | 一种数据处理方法以及设备 | |
CN117495989B (zh) | 数据处理方法、装置、设备及可读存储介质 | |
CN106254491A (zh) | 一种稳定快捷的ios客户端架构模型 | |
TW201337749A (zh) | Ret指令的即時指令追蹤壓縮技術 | |
Haaß et al. | Automatic custom instruction identification in memory streaming algorithms | |
US11526791B2 (en) | Methods and systems for diverse instance generation in artificial intelligence planning | |
JP2016506001A5 (zh) | ||
JP2007264965A5 (zh) | ||
CN112651489A (zh) | 操作处理方法、装置、用于操作处理的装置及存储介质 | |
JP2016508636A5 (zh) | ||
US20110238945A1 (en) | Apparatus and method for generating code overlay | |
Schuler et al. | XEngine: Optimal tensor rematerialization for neural networks in heterogeneous environments | |
CN105074667B (zh) | 用于声明类型的方法以及实例化对象图的方法 | |
Coplien et al. | The data, context and interaction paradigm | |
US8694975B2 (en) | Programming system in multi-core environment, and method and program of the same | |
Ho et al. | Towards FPGA-assisted spark: An SVM training acceleration case study |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |