什么是规则引擎

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

本质上规则引擎,是为了解决复杂业务规则决策,将复杂多变的业务规则,从代码内提炼出来,抽象为dsl语言或者可视化界面配置,用户角色:运营/产品/开发,可以动态调整dsl语言或者修改界面配置,从而将最新的规则推送给程序,使其快速支持业务的复杂多变的规则。

规则引擎解决什么问题

本质上是将复杂业务规则代码(if - else - then )从其代码中剥离出来,统一集中维护到一个地方,业务规则可视化,最理想的情况是界面上可动态调整,并且立即生效。

假如说你的规则非常复杂,例如风控内的评分卡的规则,单纯的写代码肯定也可以实现,但是硬编码一个评分卡还是比较费时费力的,同时无法实时动态调整,如果想要调整,需要经过开发,测试,发布环节。而规则引擎,可以将这套评分卡,配置到规则引擎,业务代码内完全不需要去care这些逻辑,只需要调用一下规则引擎的一个接口,即可返回最终的分数,岂不是方便,而且还支持产品或者运营进行在线调整,并且实时生效。如下图的评分卡规则:

规则引擎业界实践

图片来自:https://www.ibm.com/developerworks/cn/java/j-java-rules/

IBM上的文章,一般写的都比较硬核,推荐阅读。

开源项目的实现主要包括:

Drools,目前最完整成熟的,也是大家一致认可的,但是体系庞大,比较重量级。

阿里的QL表达式引擎,https://github.com/alibaba/qlExpress

GitHub上的Easy-Rule,https://github.com/j-easy/easy-rules

美团实践,Crm业务线从0到1自己构建一套规则引擎:https://cloud.tencent.com/developer/article/1058285

美团酒旅实践,最终放弃了Drools:https://www.biaodianfu.com/meituan-rules-engine.html

网易考拉,风控线从0到1实现自己一套规则引擎:https://juejin.im/post/5bd69af1e51d453975303cef

小公司可适配改造的开源福利,urule:https://github.com/youseries/urule

浅谈规则引擎的最佳实践

大厂有大厂的做法,基本是从0到1搞一套。小厂由于种种因素限制(个人能力,开发时间)等,很难从0到1搞一套,通常的做法是基于某套开源的框架,进行改造。我们小厂,基于urule系统进行了初步的改造,主要改造点是对urule的领域模型做了一套适配,即从风控的web端生成的Form对象,经过一系列adapter的转换,最终在urule系统内部生成自己的内部模型。同时对于决策流的执行,会记录每一个当流程节点的值,最终通过接口返回。根据流程节点的值,这样可以和风控侧的决策树进行关联。

规则引擎系列—初识规则引擎相关推荐

  1. 提炼游戏引擎系列:开篇介绍

    前言 大家好!本系列记录了从炸弹人游戏中提炼2D游戏引擎YEngine2D雏形的实战过程,您可以通过本系列了解到引擎提炼的思想.引擎的设计以及引擎是如何从游戏中提炼的,学习引擎开发的知识.希望对您能有 ...

  2. 规则引擎选型及应用 邴越 2017-04-27 16:31:17 浏览614 评论0 HTTPS 模块 配置 string exception void input 规则引擎 摘要: 规则引擎具体执

    规则引擎选型及应用 邴越 2017-04-27 16:31:17 浏览614 评论0 HTTPS 模块 配置 string exception void input 规则引擎 摘要: 规则引擎具体执行 ...

  3. 规则引擎 Drools:规则引擎概述

    什么是规则引擎 规则引擎,全称为 业务规则管理系统,英文名为BRMS(即Business Rule Management System).规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用 ...

  4. 淘宝网热浪引擎平台资费规则

    淘宝网日前发布<热浪引擎平台资费规则>变更公示通知(以下简称公告). 公告称,为了规范和提升淘宝直播热浪引擎平台的市场管理秩序,为商家和主播.达人等多方营造安全安心的交易合作环境,在此通知 ...

  5. drools规则引擎动态配置规则

    先说下我的业务需求背景,最近公司要推出运营活动,根据用户行为送用户积分:比如用户注册送.首次消费送,非首次消费送.累积消费送.针对我们这个的特殊要求是跟具体规则绑定:比如说 规则1 用户累积消费首次达 ...

  6. Torque引擎系列

    介绍一下Torque引擎,包括脚本.编辑器的使用.以及引擎部分. 第一部分:脚本入门 ************************ 1)打开控制台(console) 运行torquedemo.ex ...

  7. 驰骋工作流引擎设计系列04 流程引擎表结构的设计

    第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow 第1节. 流程引擎表结构的设计 流程引擎表是流程引擎控制流程运转的数据存储表,是整个流程引擎的核心表.理 ...

  8. openGauss数据库源码解析系列文章—— SQL引擎源解析(一)

    本篇我们开启"SQL引擎源解析"中"6.1 概述"及"6.2 SQL解析"的精彩内容介绍. 第6章 SQL引擎源解析 SQL引擎作为数据库系 ...

  9. 七巧板平台html5游戏开发之初识物理引擎

    七巧板平台html5游戏开发之初识物理引擎 七巧板平台是用于Web App.中轻度HTML5游戏及富媒体类应用开发,集开发.运营于一体的平台.它基于HTML5技术开发,具有进入门槛极低.开发极简单.跨 ...

最新文章

  1. MySQL导入.sql文件及常用命令
  2. sql over的作用及用法
  3. windows 10 python哪个版本的好-windows支持哪个版本的python
  4. 数据库原理及应用【一】引言
  5. 面试中遇到回答不上来的问题可以这样做
  6. Angular2学习笔记(六) Angular2 依赖注入
  7. Java中截取字符串中小数点前面的字符
  8. python | 关键词快速匹配检索小工具 pyahocorasick / ahocorapy
  9. 0829 数据库的增删改查
  10. 腾讯云TStack与IBM LinuxONE互认证
  11. 使用shell命令文件和lame工具在mac平台批量压缩mp3,可压缩至原来的50%左右。
  12. Outlook的服务器设置中POP3协议,在outlook的服务器设置中POP3协议是指
  13. 电线的一些小知识学习一下
  14. Pt100铂电阻与惠斯通电桥
  15. 读王弼之《老子道德經注校釋》
  16. 电子计算机技术人才需求,电子与信息技术专业人才需求调研报告.pdf
  17. oracle随机取名,oracle 表查询随机抽取数据
  18. 【从零开始学习MySql数据库】(3)函数与子查询和连接查询
  19. Frida-Dexdump 脱壳工具下载使用以及相关技术介绍
  20. 房价拐点已到,刚需可以持币等待购房好时机

热门文章

  1. 榕树贷款利用AI人工智能技术发送非常迅速(榕树贷款)
  2. python 7-33 修理牧场 (25 分) PTA
  3. 中继器故障诊断与排除
  4. python tkinter手册_tkinter 中文文档
  5. 敏捷的三个中心;再谈Buffer
  6. 量化选股 聚宽学习获取财务数据
  7. 炉石传说酒馆战棋一键拔线(windows)
  8. Can‘t get JDBC type for struct<date:int,day:int,hours:int,minutes:int,month:int,seconds:int,time:big
  9. Himall商城表单数据类、插件类
  10. 使用aria2为网盘下载加速