规则引擎groovy

   日期:2024-12-30    作者:caijiyuan 浏览:95    移动:http://w.yusign.com/mobile/quote/8703.html

重量级方案:Acitivities、drools,适合复杂业务场景的规则引擎。

轻量级方案:groovy脚本。

特点

动态性
单纯的java语言是不具有动态性的,groovy恰恰弥补了这一缺憾,有了groovy你可以在程序运行时任意修改代码逻辑,不需要重新发布。
语法糖
groovy在语法上兼具java 语言和脚本语言特点,大大简化了语法。

优点

学习曲线平缓,有丰富的语法糖,对于Java开发者非常友好
技术成熟,功能强大,易于使用维护,性能稳定,被业界看好
和Java兼容性强,可以无缝衔接Java代码,可以调用Java所有的库。可以在Groovy脚本中使用Java代码,兼容率高达90%,除了lambda、数组语法,其他Java语法基本都能兼容。

原理

        Groovy编译器先将.groovy文件编译成.class文件,然后调用JVM执行*.class文件,可以在Java项目中集成Groovy并充分利用Groovy的动态功能

        Groovy兼容几乎所有的java语法,开发者完全可以将groovy当做Java来开发,甚至可以不使用Groovy的特有语法,仅仅通过引入Groovy并使用它的动态能力

        Groovy可以直接调用项目中现有的Java类(通过import导入),通过构造函数构造对象并直接调用其方法并返回结果。

适用场景

规则引擎groovy

        Groovy适合在业务变化较多、较快的情况下进行一些可配置化的处理。适合规则数量相对较小的且不会频繁更新规则的规则引擎。

用 Groovy 的 GroovyClassLoader ,它会动态地加载一个脚本并执行它。GroovyClassLoader是一个Groovy定制的类装载器,负责加载解析Groovy脚本类。

GroovyShell允许在Java类中(甚至Groovy类)求任意Groovy表达式的值。您可使用Binding对象输入参数给表达式,并最终通过GroovyShell返回Groovy表达式的计算结果。

GroovyShell多用于推求对立的脚本或表达式,如果换成相互关联的多个脚本,使用GroovyScriptEngine会更好些。GroovyScriptEngine从您指定的位置(文件系统,URL,数据库,等等)加载Groovy脚本,并且随着脚本变化而重新加载它们。

原理:GroovyClassLoader支持从文件、url或字符串中加载解析Groovy Class,实例化对象,反射调用指定方法。主要负责运行时处理Groovy脚本,将其编译、加载为Class对象的工作。

1、引入jar包

 

2、规则缓存工厂RuleCacheFactory

核心代码

 

RuleCacheFactory全部代码

 

3、规则引擎RuleEngine

 

4、规则执行测试

 

执行结果

 

规则脚本

 

5、规则脚本RuleScript

 

 规则脚本工具类RuleScriptUtils

 

规则对象Rule

 

规则结果RuleResult

 

 脚本常量类ScriptConstant

 

RuleException

 

参考

http://www.groovy-lang.org/integrating.html

https://juejin.cn/post/6844903682639659015

本文地址:http://w.yusign.com/quote/8703.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号