欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

不同规则引擎的对比

时间:2023-04-21

目录

一、介绍

二、场景

2.1、风控场景  

2.2、资金决策场景

2.3、n多场景

2.4、数据打标场景

三、各种规则引擎对比

3.1、Drools

3.2、Ilog JRules

3.3、Easy Rules

3.4、Aviator

3.5、Groovy

3.6、Visual Rules

3.7、Jess


一、介绍

        来源网上和一些自己总结

        在复杂多变的业务场景中,单靠我们日常处理判断的能力是不够的,规则变化快,不可
控因素多,业务场景复杂,都会加快开发人员处理规则的难度,减缓项目上线的难度,
同时让业务人员对开发人员更加的敌视。

二、场景

2.1、风控场景  

风控系统的简单来说就是告诉业务系统这个动作这个人有没有风险,输入有很多:当前用户的设备信息、当前cookie信息、过往操作记录、接入渠道、四项信息 都是有的,然后过程中经过一些列的规则判断,得出风险的结论或者风险的等级,用于业务系统判断该动作是否可以发生或者以什么样的等级进行。

首先风控系统对接的业务会非常多,信贷、营销、下单等,这些业务还需要区分具体产品线,每个业务还会有不同的动作场景,整体来看动作场景的量级已经非常庞大了。对于一个动作场景而言:一系列输入数据还需要经过n层规则匹配和算法过滤出一些中间态因子数据,这些因子再作为规则输入产生结果。很显然整个风控判断规则的数量是非常非常庞大的,这时候规则引擎的存在就非常有必要了,风控系统对于规则场景的诉求也几乎是最强的。

2.2、资金决策场景

在信贷、理财、支付场景会存在一个资金流转的问题,一笔资金并不是像我们所想象的,是一个点到另一个点这样的简单,往往中间会因为合规、收益等n多问题发生资金的流转决策,每一笔交易的过程可能对于业务上:出资账户、中间户是不同的,技术上:经过的系统也是不同的,这就需要我们根据不同的场景来决定这笔钱该怎么走,这就需要各种各样的规则来完成这些流转的控制。

2.3、n多场景

当我们的系统面临那些易变复杂逻辑的时候,当靠硬编系统代码开始吃力时,就需要引入规则引擎来解决问题了。

2.4、数据打标场景

现在都是数据为营的时代,如果想把这些数据高效的利用起来,肯定就要对这些数据进行清洗、打标、加工,才能产生对应的价值。而清洗、打标的过程实际上就是数据过滤规则产生结果的过程。

三、各种规则引擎对比

3.1、Drools

Drools 是最活跃的开源规则引擎;DROOLS(JBOSS RULES )具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。

Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。

特性:

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

3.2、Ilog JRules

Ilog JRules是有名的商用BRMS;

Ilog JRules是完整的业务规则管理系统(BRMS),它提供了对整个企业业务规则进行建模、编写、测试、部署和维护所必需的所有工具。

主要组件:

  1、Rule Studio(RS) 面向开发人员使用的开发环境,用于规则的建模和编写。
    2、Rule Scenario Manager 规则测试工具。
    3、Rule Team Server(RTS) 基于Web的管理环境,面向业务人员使用,用于规则发布、管理、存储。
    4、Rule Execution Server(RES) 面向运维人员使用,用于规则执行、监控。

3.3、Easy Rules

  Easy Rules 是一款 Java 规则引擎,它的诞生启发自有Martin Fowler 一篇名为 “Should I use a Rules Engine?” 文章。Easy Rules 提供了规则抽象来创建带有条件和操作的规则,以及运行一组规则来评估条件和执行操作的RulesEngine API。

  特性:

  1、轻量级框架和易于学习的API。
    2、基于POJO的开发。
    3、通过高效的抽象来定义业务规则并轻松应用它们。
    4、支持创建复合规则。
    5、使用表达式语言定义规则的能力。

3.4、Aviator

Aviator是一个高性能、轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值。

特征:

1、支持大部分运算操作符,包括算术操作符、关系运算符、逻辑操作符、位运算符、正则匹配操作符(=~)、三元表达式?: ,并且支持操作符的优先级和括号强制优先级。

2、支持大整数和精度运算(2.3.0版本引入)

3、内置支持正则表达式匹配,类似Ruby、Perl的匹配语法,并且支持类Ruby的$digit指向匹配分组。

4、自动类型转换,当执行操作的时候,会自动判断操作数类型并做相应转换,无法转换即抛异常。

3.5、Groovy

Groovy 是 用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。

特征:

   1、同时支持静态和动态类型。

2、支持运算符重载。

3、本地语法列表和关联数组。

4、对正则表达式的本地支持。

5、对java开发人员来说,简单易学

3.6、Visual Rules

  旗正VisualRules是由国家科技部和财政部的创新基金支持,专门针对国内规则引擎市场空白的情况,结合国内项目的特点而开发的一款业务规则管理系统(BRMS)产品。(资源少,学习成本高)

3.7、Jess

Jess是Java平台上的规则引擎,它是CLIPS程序设计语言的超集,由Sandia国家实验室的Ernest Friedman-Hill开发。Jess提供适合自动化专家系统的逻辑编程,它常被称作“专家系统外壳”。近年来,智能代理系统也在相似的能力上发展起来。(资源少,学习成本高)

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。