`
roger_xl
  • 浏览: 4160 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于规则引擎在企业项目中的使用

阅读更多
规则引擎的出现使得商业决策逻辑和应用开发者的技术决策分离,增强了软件的柔韧性. Java规则引擎项目 Drools 被设计为可插入式的语言实现。目前规则能用Java, Python和Groovy实现。更为重要的是,Drools提供了声明式程序设计(Declarative Programming),并且使用域描述语言(Domain Specific Languages (DSL))-专为你的问题域定义了某种模式的Xml, 它已经足够灵活到可以用来描述你的问题域。DSLs包含的XML元素(Element)和属性(Attribute)代表了问题域中各种要素。

规则引擎有两种方式.一种是解析执行的方式,就是解析规则包文件,根据规则包中定义的逻辑解析执行.另一种方式是编译执行,就是直接将规则包文件中的逻辑编译成可执行的字节码,通过调用执行.

有人在项目中使用过Drools吗, 如果自己实现规则引擎, 具体该考虑哪些因素呢. 请使用过的朋友过来讲讲. 目前一般项目中有哪些使用规则引擎的例子.
分享到:
评论
4 楼 Godlikeme 2008-02-02  
看lz的理解还停留的美妙的销售语言中,还是先评估一下在做判断吧。
不是说规则引擎的坏话,技术本身是很棒的,如要应用起来就要考虑范围、方式了。
试考虑一下问题?
什么样的业务逻辑可以抽象出来作为规则逻辑处理?
规则引擎与系统的协作方式,如何定义明确的接口,特别是输入输出?
规则修改系统如何测试?


3 楼 chillwarmoon 2008-02-02  
hocus 写道
基于rate的高效算法已经有现成的产品了:开源的是drools,商用的有ilog。

应该是基于RETE算法的规则引擎。
roger_xl 写道
如果自己实现规则引擎, 具体该考虑哪些因素呢.

规则引擎首先要考虑到规则的表达方式,jamocha规则引擎利用了人工智能语言CLIPS来表达规则,其次就是考虑推理的算法,RETE、LEAPS、TREAT等都是为模式匹配所提出的算法。
RETE主要是将规则描述为内存中的rete网络,然后依据该网络,为到达该网络的事实根据推理算法进行模式匹配。
PS:我的博客上有关于模式匹配算法RETE的介绍。jamocha的圈子:http://jamocha.group.iteye.com/
2 楼 hocus 2008-02-01  
roger_xl 写道
规则引擎的出现使得商业决策逻辑和应用开发者的技术决策分离,增强了软件的柔韧性. Java规则引擎项目 Drools 被设计为可插入式的语言实现。目前规则能用Java, Python和Groovy实现。更为重要的是,Drools提供了声明式程序设计(Declarative Programming),并且使用域描述语言(Domain Specific Languages (DSL))-专为你的问题域定义了某种模式的Xml, 它已经足够灵活到可以用来描述你的问题域。DSLs包含的XML元素(Element)和属性(Attribute)代表了问题域中各种要素。

规则引擎有两种方式.一种是解析执行的方式,就是解析规则包文件,根据规则包中定义的逻辑解析执行.另一种方式是编译执行,就是直接将规则包文件中的逻辑编译成可执行的字节码,通过调用执行.

有人在项目中使用过Drools吗, 如果自己实现规则引擎, 具体该考虑哪些因素呢. 请使用过的朋友过来讲讲. 目前一般项目中有哪些使用规则引擎的例子.



基于rate的高效算法已经有现成的产品了:开源的是drools,商用的有ilog。
自己实现引擎?!你就能写的比它们还好?
不是一句两句说的清楚,简要提一下,还是要自己多看文档
规则引擎的适用场合:
规则引擎适用于规则会被 业务人员频繁修改的;规则需要被抽象的;规则复杂无法用常规方式解决或不好解决(比如排课,排位)
不合时宜的引入规则引擎到系统内,只会给自己找麻烦,增加培训费用和后期支持的痛苦。

理解规则引擎的适用范围和真实需求,衡量是否使用是重要的第一步,当然多数情况是拍板的人其实不懂找个
抽象 业务模型和规则模型,并在其间建立映射,业务模型将面对最终业务人员,规则模型为了matchdrools
定义业务规则,归类,制定规则流程
选用合适的drl,其实默认的就不错
实现自己的BRMS,drools自带的那个未免太太简陋了些
drools 目前的ruleflow功能很薄弱,但flow确实是很重要的功能
1 楼 adamzhao 2008-02-01  
正在做的一个项目涉及到了规则引擎,不过没有那么复杂,也没有使用到Drools。主要原因是感觉太复杂,不适用。
我们没考虑那么多理论上的东西,只要适用、满足我们的需求就可以。

使用了Groovy作为脚本语言来解释的。重点要解决的问题有
1、定制:规则的定制,复杂的js拼装。会考虑到加减乘除,大于小于等于,包含不包含之类的运算;
2、存储:转换为xml存储在数据库;同时生成Groovy脚本;
3、执行:解释执行;

其中最困难的是js的拼装。

相关推荐

    课后设计 基于规则引擎的专家系统源码+全部资料齐全.zip

    课后设计 基于规则引擎的专家系统源码+全部资料齐全.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请...

    大数据企业级项目用户画像实战

    第三章标签模型开发、规则匹配引擎 第四章SparkSQL开发、外部数据源配置、Hbase应用、统计开发 第五章Hbase条件过滤、数据条件动态过滤动态加载、推荐系统入门(协同过滤算法讲解CF、使用ALS实现) 第六章机器学习...

    OFbiz实体引擎指南

    OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。...

    Gaea决策引擎产品白皮书_专家系统_

    面对复杂的企业级项目开发及其随着外界环境条件的变化而变化的业务规则,譬如银行、保险领域,业务规则是非常复杂的,并且规则处于不断更新变化中。而现在很多系统的做法基本上都是将业务规则绑定在程序代码中,这就...

    Java规则引擎与其API(JSR-94)

    复杂企业级项目的开发以及其中随外部条件不断变化的业务规则(businesslogic),迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时(即...

    基于Spark的规则推理引擎(RDFS、OWL及通用SWRL规则)++源代码+文档说明

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    Microsoft SQL Server 2005技术内幕:存储引擎(中文).pdf

     本书详细介绍了数据引擎的基础运作,包含了数据库的设定与数据实际在硬盘的摆放、索引结构、事务与锁定等。除了解释设计理念与运作原理外,还辅之以测试验证的方式。数据库开发者和管理员可从中获得最优的方法、...

    风控、实时计算、技术框架、架构方案、Groovy规则引擎、规则决策.zip

    无论是企业战略、项目管理还是个人发展,方案的制定都有助于明确目标并提供达成目标的路径。 资源优化: 方案在设计时考虑了可用资源,以最大化其效用。通过明智的资源分配,方案可以在有限的资源条件下实现最大的...

    apache-camel-demo

    领域特定语言意味着Apache Camel支持你在的集成开发工具中使用平常的,类型安全的,可自动补全的Java代码来编写路由规则,而不需要大量的XML配置文件。同时,也支持在Spring中使用XML配置定义路由和中介规则。 在...

    C#编程大作业基于Unity游戏引擎的2D闯关游戏源码+sln解决方案+项目说明.zip

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    PandaX企业级物联网平台快速开发框架

    成熟的规则引擎: 项目针对数据处理使用了规则链进行处理,简化开发及配置。 前端采用VUE3.0+ TypeScript + vite3 + Element-plus:PandaUI,适配手机、平板、pc 内置多种ui功能减少开发量 高效率的开发,使用代码...

    n-cube:规则引擎,决策表,模板

    n-cube是作为超空间构建的规则引擎,决策表,决策树,模板引擎和企业电子表格。 用于规则的域特定语言( DSL )是 。 要包含在您的项目中: <groupId>com.cedarsoftware</groupId> <artifactId>n-cube ...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    毕业设计-简单抽奖引擎(源代码+说明)

    系统在生活中的应用十分广泛,无论是个人还是企业,在日常生活中都需要系统,不仅可以提高工作效率和质量,也可以提高数据准确性,以下是系统的好处: 1. 提高效率:系统可以自动化处理大量的数据和信息,从而减少了...

    Apache+OFBiz+开发初学者指南.chm

    OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。...

    毕设&课设-智能生活物联网平台-前后端完整源码-vue项目

    设备管理: 控制、分组、定时、日志、统计、定位、分享、配置、禁用、OTA升级、自动注册、影子模式、实时监测、加密认证等 EMQ管理: Mqtt客户端、监听器、消息主题、消息订阅、插件管理、规则引擎、资源 硬件 SDK:...

Global site tag (gtag.js) - Google Analytics