复杂企业级项目的开发以及其中随外部条件不断变化的业务规则(business logic),迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时(即商务时间)可以动态地管理和修改从而提供软件系统的柔性和适应性。规则正是应用于上述动态环境中的一种解决方法。
一个业务规则包含一组条件和在此条件下执行的操作.它们表示业务规则应用程序的一段业务逻辑。 业务规则的理论基础是:设置一个或多个条件,当满足这些条件时会触发一个或多个操作。 企业为适应市场的多变性,它的业务逻辑也必然是多变的。理想情况下,业务逻辑的改变应该能够实时的反映在企业信息系统中。 但是,传统的方法往往会使这种反映出现滞后,进而可能使企业错过市场机遇。
5. 规则是让业务人士驱动整个企业过程的最佳实践
- 从应用逻辑和数据中将业务逻辑分离 - 简单! -规则有一个非常简单的结构 - 让业务用户开发和维护规则以降低成本 - 声明式编程 - 性能和可伸缩性 - 解决复杂的和复合的问题,其中有大量细粒度的规则和事实互动
例: 以全球人寿新卓越变额万能寿险投保规则的体检规则为例,输入投保年龄及危险保额来获取是否需要体检的结果。 免体检累积最高限额表如下:
免体检累积最高限额表在规则中又是如何实现的呢?
没有规则时:
有了规则后:
做到以下几点是否就可以“全得”?
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据规则做出业务决策。
我在我自己公司采用的是JBOSS Drools来实现的大规模生产环境下的业务规则的应用场景的。
Drools是业界著名的开源规则引擎,它使用的是目前最快的Forward-Chaining推理算法。
RETE 算法可以分为两部分:
它的核心思想是将分离的匹配项根据内容动态的构造匹配树,以达到显著降低计算量的效果。 不过由于DROOLS是一个开源免费规则组件,因此在面向企业级商业应用时它还存在着以下的一些问题需要解决:
因此基于上述需求,我在我们公司内部(夸客金融)对于DROOLS进行了二次封装与开发,打造出了一个可用于在生产环境大规模开发和布署的“业务规则引擎”。
它即可以无缝的和我们原有的核心、ESB总线、支付系统进行连接,也可以和审核、合同系统进行连接,它降低了开发人员对于BRMS底层技术的依赖、増加了开发的“透明性”。同时这套BRMS做到了真正的24*7可动态支持业务变化、快速响应迅速变化的市场与业务规则。
有了这套规则引擎后,本来在传统金融领域中的“线性开发”发生了变化。 传统金融领域中对于系统集成开发的线性方式
引入BRMS后我们IT对于内部的系统集成开发方式
运用了这套BRMS后,我们的IT在面对随时、多变的业务场景时可以做到:
特色一:支持基于规则的各种复杂流转模式
特色二:多种复杂事件发起模式
特色三:灵活全面的规则设计
(完)
出处:http://blog.csdn.net/lifetragedy/article/details/52836483
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。