规则引擎-BRMS在企业开发中的应用

1. 什么是规则

复杂企业级项目的开发以及其中随外部条件不断变化的业务规则(business logic),迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时(即商务时间)可以动态地管理和修改从而提供软件系统的柔性和适应性。规则正是应用于上述动态环境中的一种解决方法。

2. 规则产生的背景

一个业务规则包含一组条件和在此条件下执行的操作.它们表示业务规则应用程序的一段业务逻辑。 业务规则的理论基础是:设置一个或多个条件,当满足这些条件时会触发一个或多个操作。 企业为适应市场的多变性,它的业务逻辑也必然是多变的。理想情况下,业务逻辑的改变应该能够实时的反映在企业信息系统中。 但是,传统的方法往往会使这种反映出现滞后,进而可能使企业错过市场机遇。

3. 引入业务规则技术的目的

对系统的使用人员

  • 把业务策略(规则)的创建、修改和维护的权利交给业务经理
  • 提高业务灵活性
  • 加强业务处理的透明度,业务规则可以被管理
  • 减少对IT人员的依赖程度
  • 避免将来升级的风险

对IT开发人员

  • 简化系统架构,优化应用
  • 提高系统的可维护性和维护成本
  • 方便系统的整合
  • 减少编写“硬代码”业务规则的成本和风险

4. 传统IT项目实施与引入规则进行项目实施的比较

传统的IT项目实施

传统做法的缺点

在传统的IT项目实施中业务与IT间存在的“矛盾”

引入规则后的做法

5. 规则是让业务人士驱动整个企业过程的最佳实践

6. 从IT技术人员的角度看为什么使用规则引擎

- 从应用逻辑和数据中将业务逻辑分离 - 简单! -规则有一个非常简单的结构 - 让业务用户开发和维护规则以降低成本 - 声明式编程 - 性能和可伸缩性 - 解决复杂的和复合的问题,其中有大量细粒度的规则和事实互动

来看一个简单的例子

例: 以全球人寿新卓越变额万能寿险投保规则的体检规则为例,输入投保年龄及危险保额来获取是否需要体检的结果。 免体检累积最高限额表如下:

免体检累积最高限额表在规则中又是如何实现的呢?

结合现实生活中的一个例子来看变化的业务与IT的“矛盾”

没有规则时:

有了规则后:

IT在面对上述例子时如何能够做到熊掌与鱼兼得呢?

做到以下几点是否就可以“全得”?

  • 规则更改不重启,即改即用
  • 数据库访问可随意更改,即改即用
  • 业务服务层可以随意更改,即改即用
  • 开发人员不需要关心底层API,他只需要懂JSON(加快开发)

因此我们进一步引入了“规则引擎管理系统-BRMS”的概念

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据规则做出业务决策。

BRMS的技术架构

一个完整的BRMS应该具有的特点

引入规则引擎后带来的好处

  • 实现业务逻辑与业务规则的分离,实现业务规则的集中管理
  • 可以动态修改业务规则,从而快速响应需求变更
  • 使业务分析人员也可以参与编辑、维护系统的业务规则
  • 使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单

基于DROOLS打造自有BRMS解决方案

我在我自己公司采用的是JBOSS Drools来实现的大规模生产环境下的业务规则的应用场景的。

Drools是业界著名的开源规则引擎,它使用的是目前最快的Forward-Chaining推理算法。

RETE 算法可以分为两部分:

  • 规则编译( rule compilation )
  • 运行时执行( runtime execution )

它的核心思想是将分离的匹配项根据内容动态的构造匹配树,以达到显著降低计算量的效果。 不过由于DROOLS是一个开源免费规则组件,因此在面向企业级商业应用时它还存在着以下的一些问题需要解决:

打造全方位的面向SOA2.0解决方案

因此基于上述需求,我在我们公司内部(夸客金融)对于DROOLS进行了二次封装与开发,打造出了一个可用于在生产环境大规模开发和布署的“业务规则引擎”。

它即可以无缝的和我们原有的核心、ESB总线、支付系统进行连接,也可以和审核、合同系统进行连接,它降低了开发人员对于BRMS底层技术的依赖、増加了开发的“透明性”。同时这套BRMS做到了真正的24*7可动态支持业务变化、快速响应迅速变化的市场与业务规则。

有了这套规则引擎后,本来在传统金融领域中的“线性开发”发生了变化。 传统金融领域中对于系统集成开发的线性方式

引入BRMS后我们IT对于内部的系统集成开发方式

运用了这套BRMS后,我们的IT在面对随时、多变的业务场景时可以做到:

特色一:支持基于规则的各种复杂流转模式

特色二:多种复杂事件发起模式

特色三:灵活全面的规则设计

BRMS在其它金融领域中的应用场景介绍

规则引擎在信用卡申请场景中的应用

规则引擎在反欺诈场景中的应用

  • 黑规则:甄别嫌疑订单
  • 白规则:订单解除嫌疑
  • 商家管理处罚系统,对违规商家处罚处理。
  • 搜索排名,降低违规商家搜索排名权重。
  • 自定义阈值规则指标体系
  • 地址模糊聚类算法
  • 手机嵌入欺诈模糊甄别算法
  • 黑/白名单机制设置
  • 灰名单机制设置
  • 区域订单脉冲机制
  • 全区管控机制
  • 产品线与SKU监控管理机制

(完)

出处:http://blog.csdn.net/lifetragedy/article/details/52836483

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

原文发布于微信公众号 - IT技术精选文摘(ITHK01)

原文发表时间:2017-07-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

基于JIRA的产品需求全生命周期管理实践

本文将以有赞零售产品为例,介绍需求全生命周期的管理实践,包括:商家的原始需求收集、产品设计与评审、研发的需求实现、上线后运营反馈、新一轮迭代优化,构成了需求全生...

6904
来自专栏杨建荣的学习笔记

运维平台的建设思考-元数据管理(五)(r9笔记第42天)

关于运维平台的建设,元数据一直是一个很重要的环节,之前在听了ITIL方面的一些讲解之后,发现其实早已经是体系之中的,想必是很多公司很多人还没有重视起来而已。 而...

3249
来自专栏互联网数据官iCDO

你是否需要Google Data Studio 360?

译者:吴昊、审校:骆姿亦 本文长度为2079字,预估阅读时间4分钟。 我们今天要向大家介绍的是谷歌发布的一款可视化工具GoogleData Studio 360...

4329
来自专栏Laoqi's Linux运维专列

深度好文-饿了么进化史(你一定会有收获)

3284
来自专栏SAP最佳业务实践

从SAP最佳业务实践看企业管理(148)-MM-928供应商管理的库存

本文档的目的是为您详细介绍“供应商管理的库存(VMI)”业务情景中包含的所有步骤。本文解决最终客户的需求。 如果要在SAPBestPractices演示环境中测...

3016
来自专栏DevOps时代的专栏

赵成:蘑菇街 DevOps 实践和转型之路

2324
来自专栏Java架构

阿里P8架构师深度概述分布式架构

作为一名架构师,我们要专业,要能看懂代码,及时光着臂膀去机房,也能独挡一面!及时同事搞不定问题,或者撂挑子,你也能给老大一个坚定的眼神:不怕,有我在!还能在会议...

2251
来自专栏云计算与大数据

研发:安全的软件开发框架

随着软件研发经验的丰富,会逐渐将关注点从功能性需求转移到非功能性需求上。而安全又是软件生命周期的关键。特别是在云计算环境,涉及金融支付场景、区块链应用场景时。安...

1521
来自专栏CSDN技术头条

Lambda架构已死,去ETL化的IOTA才是未来

经过这么多年的发展,已经从大数据1.0的BI/Datawarehouse时代,经过大数据2.0的Web/APP过渡,进入到了IOT的大数据3.0时代,而随之而来...

2674
来自专栏编程坑太多

程序员在等代码出结果的时候都会干什么?

1253

扫码关注云+社区

领取腾讯云代金券