一些常见商业应用程序或企业应用,大多都会遇上业务规则在一定的条件下,允许进行一些灵活的配置,以满足业务变化的需要。 解决的方式大致有以下几个方面:

最为传统的方式是java程序直接写死提供几个可调节的参数配置然后封装成为独立的业务模块组件,在增加参数或简单调整规则后,重新调上线。

最为彻底的解决方式,引入商业化规则引擎,如iLog,国产的“旗正规则引擎”等。

使用开源解决方案,典型的drools规则引擎。不过,我个人觉得,使用drools,多少有点换个地方写程序的意思,中国化支持比较弱。(PS:鄙人还没有正式使用过这款规则引擎,简单的做了几个案例,觉得不太适合我的业务场景,因此暂时放弃。希望有高手给予纠正)

受限于项目预算限制(国内的交付型项目,大家都懂的),引入商业化规则引擎几乎不能考虑,直接使用java实现相对独立的业务组件,在规则的维护上,并不太方便。使用开源drools,总是觉得这东西外国人用应该很不错,中国化的应用,还没有找到相对好一些的方案。

使用动态脚本引擎,是一个不错的方案。在JSR223规则中,已经对java中集成脚本引擎有了规范。目前较为常见的是在java中动态解析javascript,groovy。曾经使用过javascript作为脚本引擎,总是觉得他做得还不够,规则配置的灵活程度,还达不到自己的预期。试验了一段时间的groovy之后,各方面相对比较符合自己的预期。另外在activiti流程引擎中,内置支持groovy作为脚本引擎。

下面,我将举一个案例(MBA培训)为原形进行案例说明。如果对groovy不熟悉的同学,请自行学习groovy。

给几个参考:

http://www.groovy-lang.org/documentation.html#languagespecification(英文不好的同学不用担心,直接看它的案例代码就可以了,作为了一个英文四级没过的我,表示基本都能看懂)

http://www.jianshu.com/p/777cc61a6202

http://blog.csdn.net/a253664942/article/details/51182619

groovy是运行在JVM之上的,因此,和java天生就是兼容的。

先贴上数据模型

def student = ['id' : 'E9527',

'name' : '于小小',

'gender' : 'F',

'kind' : 'EMBA',

'className' : '重庆理工大学MBA三年级四班',

'grade' : 4,

'birth' : '1989/03/02',

'address' : '重庆市巴南区红光大道',

'salary' : 50000,

'createTime&#

groovy 规则引擎 java_Java内嵌Groovy脚本引擎进行业务规则剥离(一)相关推荐

  1. Java内嵌Groovy脚本引擎进行业务规则剥离(一)

    2019独角兽企业重金招聘Python工程师标准>>> 一些常见商业应用程序或企业应用,大多都会遇上业务规则在一定的条件下,允许进行一些灵活的配置,以满足业务变化的需要. 解决的方式 ...

  2. .NET简谈脚本引擎系列(一:认识脚本引擎)

    提到脚本,大家都耳熟能详但是默默无私奉献的脚本引擎都被大家所忽略,本人也是最近才开始接触脚本引擎的技术的,是我的恩师指点我去学习它, 真是不用不不知道,一用吓一跳:如果我们能熟练的使用脚本引擎,那么将 ...

  3. java fel_Java表达式引擎fel/groovy/expression4j/java脚本引擎的性能对比【原创】

    又是性能对比,最近跟性能较上劲了. 产品中需要用到数学表达式,表达式不复杂,但是对性能要求比较高.选用了一些常用的表达式引擎计算方案,包含:java脚本引擎(javax/script).groovy脚 ...

  4. 使用VC内嵌Python实现的一个代码检测工具

    最近组内准备整顿代码,领导让我写个简单的python脚本分析代码中注释的行数和无效注释.因为这个需求不是很急,所以我想把简单的事情做复杂点.于是就写了一个用VC内嵌Python,并通过模拟按键和发消息 ...

  5. java 脚本引擎性能_Java SE 6 入门之脚本引擎加大程序性能

    Java SE 6 入门之脚本引擎加大程序性能 Java SE 6较Java SE5有了很大的改进,它的性能更强,而且是专为Vista所设计,这就象征着Java SE 6将是Vista上的最佳抉择.而 ...

  6. JavaSE 6之脚本引擎让程序如虎添翼

    http://tech.it168.com/jd/2008-07-04/200807041154728.shtml [IT168 技术文档]Java SE 6最引人注目的新功能之一就是内嵌了脚本支持. ...

  7. Java 脚本引擎的使用

    文章目录 1. 前言 2. 脚本引擎的使用 2.1 脚本参数传递 2.2 脚本编译 2.3 脚本动态调用 1. 前言 Java 6 版本就已经引入了 Rhino 引擎用以支持脚本代码运行,而从 Jav ...

  8. C#发现之旅第十四讲 基于动态编译的VB.NET脚本引擎

    本章说明 在前面章节中,笔者使用了反射和动态编译技术实现了快速ORM框架,在本章中笔者将继续使用这些技术来实现一个VB.NET的脚本引擎,使得人们在开发中能实现类似MS Office那样实现VBA宏的 ...

  9. 在.NET中使用脚本引擎

    在应用程序中使用脚本引擎可以大大增强程序的灵活性和可扩展性,类似MS Office和 VS.NET的宏功能.微软.NET框架中Microsoft.vsa.dll中定义了脚本引擎的框架,而Microso ...

最新文章

  1. vss6 forgot admin password
  2. Object C学习笔记22-#define 用法
  3. 第一天2017/03/28
  4. NOR flash and NAND flash
  5. Linux centos7防火墙firewalld相关操作
  6. Spring Cloud微服务之业务物理删除(十)
  7. 网上骗子太多了:关于冒充儿童医院网站的例子
  8. 在dotnetnuke中去掉显示姓名中的空格
  9. 马斯克宣布退出OpenAI,全身心投入特斯拉与SpaceX
  10. 提速30倍!这个加速包让Python代码飞起来
  11. DBCS和UCS编码相关
  12. TakeColor取色器的使用
  13. class反编译软件,超级好用
  14. HTML案例之注册页面
  15. alitum designer 的PCB生成gerber文件步骤
  16. VC++实现镜像劫持(360保险箱启动原理)
  17. pathon初学入门课
  18. 【Unity】Unity下载器下载不下IOS/Android等模块的解决办法
  19. VBScript的中ByRef和ByVal的不同
  20. C#发送邮件(阿里企业邮箱示例 包括各个类型的服务器及端口配置)

热门文章

  1. 关于字符串、数字的输入
  2. 一文带你了解算法复杂度O(1),O(n),O(logn),O(nlogn)的含义
  3. 中国陶瓷纤维市场现状调研及投资前景方向预测报告2022年版
  4. 用计算机创造一个虚拟世界,希望是悖论:人类世界或许是一个计算机虚拟世界,你意识到了吗?...
  5. oracle 11g ocm 题目,Oracle Study之-Oracle 11g OCM考试(1)
  6. 介绍DVB-S码流_PAT_PMT_NIT_CAT
  7. OMI数据批量下载方法总结
  8. C语言sum和SUM的区别,sum*=sum问题
  9. 宝塔面板Pure-Ftpd无法启动
  10. iOS CAEmitterLayer动画