`

一个神奇的研究方向:规则引擎

阅读更多
                 基于模型驱动架构的专用规则引擎

概述

     随着信息化技术的不断发展, 计算机科学已经在工业界的各个领域开始广泛的应用, 用于构建各种不同的企业信息化系统, 来提升工作效率,促进产业的发展. 在IT系统的生命周期之中,企业的业务需求不可避免的会发生改变, 这就需要及时的对软件产品进行维护和升级, 那么如何降低IT系统人工维护成本, 保持软件的质量日益成为软件工程领域的一个重要课题.
随着组件化集成技术的不断发展, 模型驱动架构日益成为IT系统构建的一种主流方法,通过识别领域对象主题和业务规则组件方式,可以获得一种鲁棒性的体系结构, 使得IT系统在全生命周期中具有易于变化的特性,进而有效的降低软件的升级和维护成本. 由于业务规则组件需求的广泛性, 目前业界已经出现了大量的商用和开源的规则引擎组件, 比如IBM公司的ILOG和JBOSS公司的DROOL, 利用这些第三方的规则引擎组件, 可以有效的减少开发代码量,保证规则运算的效率;但是这些规则引擎组件普遍存在着学习曲线陡峭, 性能优化困难的弊端, 这就影响了规则引擎组件在工业领域的应用.

    为了更好的推动规则引擎在工业界的应用, 本研究课题计划采用面向对象的软件工程方法, 从用例模型入手, 识别出不同应用场景下的领域主题, 分析与之相匹配的规则引擎应用接口, 并采用组件化技术对原生的规则引擎进行封装,形成专用领域的规则引擎组件,极大的简化规则引擎组件在工业领域的应用过程.
    



    虽然计算机领域的技术浩如烟海, 但是从应用的角度出发, 规则引擎技术在未来应用的场景中会越来越多,因此更加深入的研究规则引擎对于商业系统的构建是非常重要的.
    当然,应用规则引擎开发具有一个前提,就是要合理的提炼领域对象模型,从这一点出发,一起又回到了原点, 面向对象的分析,和面向对象的设计, 这是现代计算机科学的一个非常重要的方法论
       

四、问题与研究方向
  在利用规则引擎的开发过程中,主要的问题有三个方面,分别是:
1) 规则引擎编写费时费力,学习曲线比较陡峭.
2) 规则本身可复用性不强, 需要重复编写很多规则(重复的制造轮子).
3) 存在大量规则时候, 规则执行效率比较低,需要进行专门的优化.
针对上述问题,采取的研究方向是:
1) 结合MDA技术, 从应用领域出发, 对原生的规则引擎进行封装, 简化规则引擎的使用.
2)  结合组件化技术, 从应用领域出发,对规则编写接口进行进一步封装,形成专业领域的图形化规则编写工具.
3) 结合设计模式技术, 对海量规则的规则组件进行设计和优化,保障运行效率.



   论文已经完成,上传最新的组件模型

   



  • 大小: 57 KB
  • 大小: 40.5 KB
  • 大小: 63.1 KB
  • 大小: 51.8 KB
  • 大小: 69.6 KB
  • 大小: 29.4 KB
分享到:
评论
11 楼 flyqantas 2013-11-22  
zhaodanchun 写道
您好,我现在研二,准备开题,想研究规则引擎这方向,您能告诉我“规则引擎资料20120619”解压密码吗?邮箱:876378762@qq.com ,如果大家能指导一下,就太谢谢了!



    您好,指导谈不上,不过我的工作中有很多和规则引擎相关的项目,可以互相交流,规则引擎是一个很好的研究方向,如果能够深入的应用并实践,将来会有很好的就业前景,我已经把您需要的资料发您邮箱,有问题欢迎联系。
10 楼 zhaodanchun 2013-11-19  
您好,我现在研二,准备开题,想研究规则引擎这方向,您能告诉我“规则引擎资料20120619”解压密码吗?邮箱:876378762@qq.com ,如果大家能指导一下,就太谢谢了!
9 楼 playaj 2013-05-02  
老兄,解压“Drools手册译.rar”需要密码呢,能给我吗?alienyoung@163.com
8 楼 NIIT_zhu 2013-04-16  
flyqantas 写道
NIIT_zhu:
     你好,想问一下,这个中间件是一个成熟的产品吗,有没有相关详细的介绍资料呀?

flyqantas

加个qq聊一下吧,在这里交流太慢了
我的qq:496106920
7 楼 flyqantas 2013-04-15  
NIIT_zhu:
     你好,想问一下,这个中间件是一个成熟的产品吗,有没有相关详细的介绍资料呀?

flyqantas
6 楼 NIIT_zhu 2013-04-03  
目前,我们是这样实现的
5 楼 flyqantas 2013-01-16  
根据我们在工作中的经验,目前涉及到的规则核查划分为三种情况,

1) 单对象的属性,以及属性之间的规则判断。

2) 多对象之间的属性规则核查

3) 引入时间维度的规则判断

   我不知道使用Groovy、Lua等脚本语言可否实现第2种和第3种情况

    不过我相信您的观点是正确的,因为,前期我们有一个规则核查的项目,因为时间比较紧张,我们是用VB开发的,而我的一个朋友居然是用RUBY开发的,他的开发时间大概只有我们的30%,还是很神奇的,下面是他的项目地址。

    https://github.com/liyijie/rule_check
4 楼 vase 2013-01-08  
我认为如果面对的业务中没有太多规则冲突方面处理的话,采用像Groovy、Lua等脚本做领域语言也是不错的选择。 
3 楼 vase 2013-01-08  
  那你接触的早,你是07年,我是2010年,你不会看成10年~前~吧,哈哈。
  当时我看drools的官方文档时,记着作者有介绍自己,说已经做了7年的规则引擎。
 
  我是2010年那会做一个结算系统时用到了下,不过用的不好,配置太麻烦;不过当时的领导非要让上,但没人懂,就我把文档看了遍,其他人都没看完。我认为给的时间太短,坑太深,就提出不参与核心模块设计和开发,于是打了段时间酱油。之后在一个数据稽核系统(估计跟你们的质量核查类似)又被强制推来使用其他人封装后的规则引擎,实践比较失败的,不适合快速处理大数据量比对,而且配置极其麻烦;没办法,一期就这样上马了。到2011年二期时,我把这条路否了,换了其他方式。
  由于种种奇葩原因,2012年年后我就跑路到现在这家互联网公司做BI和数据仓库了。

  期待你关于drools实践方面的分析 。我最近快忙完手头一个紧急项目了,完事后就又回归ETL方面工作,有空多交流~
2 楼 flyqantas 2013-01-08  
     喔,接触的真是早呀,我是2007年才开始接触DROOL的,可惜那时候对面向对象的概念还没用入门,所以还没有认识都这种组件的价值。
  
       2010-2011年我系统学习了面向对象的软件工程以后, 逐渐理解了组件化的价值,刚好在哪一年我们有一个数据库质量核查的项目, 当时在方案选型阶段,有两种意见, 一种意见是直接利用编码方式实现,一种是采用对象化的规则引擎方案, 经过权衡以后,选择了规则引擎的方案, 现在发现真是一个明智的选择,因为规则文件比较好理解,修改起来非常方便。

       后续,我们计划在更多的项目中使用规则引擎,欢迎多多交流哈。
1 楼 vase 2012-12-21  
踩一脚,呵呵。
在用规则引擎?10年我看过写drools的资料,现在忘完了。挺佩服那作者,在这个领域一作就是7年。

相关推荐

Global site tag (gtag.js) - Google Analytics