精华内容
下载资源
问答
  • 规则引擎

    2021-02-25 10:57:01
    Java各种规则引擎 复杂风控场景下,如何打造一款高效的规则引擎 苏宁电商:营销系统就是一个复杂的规则引擎 Drools规则引擎 Java
    展开全文
  • 流程引擎规则引擎 规则引擎的优势 (Advantages of a Rule Engine) Following are some of the major advantages of a Rule Engine: 以下是规则引擎的一些主要优点: 更容易理解 (Easier to understand) Rules ...

    流程引擎规则引擎

    Following are some of the major advantages of a Rule Engine:

    以下是规则引擎的一些主要优点:

    更容易理解 (Easier to understand)

    Rules are easier to understand for a business analyst or a new developer than a program written in Java or other imperative-style language.

    对于业务分析师或新开发人员而言,规则比用Java或其他命令式语言编写的程序更容易理解。

    改善的可维护性 (Improved maintainability)

    Since rules are easier to understand, a developer can spend more time solving the actual problem.

    由于规则更容易理解,因此开发人员可以花费更多时间来解决实际问题。

    应对不断变化的复杂性 (Dealing with evolving complexity)

    It is much easier to add new, modify, or remove existing rules than to change, for example, a Java program. The impact this has on other rules is minimal in comparison with an imperative-style implementation.

    添加新的,修改或删除现有规则要比更改(例如Java程序)容易得多。 与命令式实现相比,这对其他规则的影响是最小的。

    灵活性: (Flexibility:)

    It deals better with changes to the requirements or changes to the data model. Changing or rewriting an application is never an easy task. However, thanks to the formalism that rules bring, it is much easier to change rules than to change a Java program.

    它可以更好地处理对需求的更改或对数据模型的更改。 更改重写应用程序绝非易事。 但是,由于规则带来的形式主义,更改规则比更改Java程序容易得多。

    合理的表现 (Reasonable performance)

    Thanks to the Rete algorithm that is behind Drools; in theory, the performance of the system doesn't depend on the number of rules. With every release of Drools, the performance of the engine is getting better by adding various optimizations such as Rete node sharing, node indexing, parallel execution, and so on. All this benefits new as well as old rules.

    多亏了Drools背后的Rete算法 ; 从理论上讲,系统的性能不取决于规则的数量。 在Drools的每个发行版中,通过添加各种优化(例如Rete节点共享节点索引并行执行等) ,引擎的性能都会得到改善。 所有这些都有益于新旧规则。

    将需求转化为规则 (Translating requirements into rules)

    The representation of business rules is consistent. For example, let's take some business rule and implement it in Java. Developers, depending on their experience, tend to use different ways to solve a problem. We'll find out that the possible solutions will vary greatly. Whereas with rules, this diversification becomes less apparent. It is simply because we are expressing "what" instead of "how". As a result the code is much easier to read even by new developers.

    业务规则的表示是一致的。 例如,让我们采用一些业务规则,并在Java实现它。 开发人员根据他们的经验,倾向于使用不同的方法来解决问题。 我们将发现可能的解决方案将有很大的不同。 鉴于规则,这种多样化变得不那么明显。 仅仅是因为我们表达的是“什么”而不是“如何” 。 结果,即使是新开发人员,代码也更容易阅读。

    能够将企业管理应用于我们的规则 (Ability to apply enterprise management to our rules)

    This builds on the previous advantage of consistent representation. If we have consistent representation, it is much easier to introduce new features that apply across all our rules (for example, auditing, logging, reporting, or performance optimizations)

    这建立在一致表示的先前优势之上。 如果我们具有一致的表示形式,那么引入适用于我们所有规则的新功能(例如审计日志记录报告性能优化 )会容易得多。

    可重用性: (Reusability:)

    The rules are kept in one place (separation of business logic from the rest of the system), which means easier reusability. For example, imagine you've written some validation rules for your application and later on there is a need to do some batch imports of data, so you could simply reuse the validation rules in your batch import application.

    规则保存在一个地方(将业务逻辑与系统的其余部分分开),这意味着更易于重用。 例如,假设您已经为应用程序编写了一些验证规则,然后需要进行一些批处理数据导入,那么您可以简单地在批处理导入应用程序中重用验证规则。

    紧密建模应用程序 (Modeling the application closely)

    Rules model the application invariants more closely. The imperative-style solutions tend to impose arbitrary and often unnecessary ordering on operations, depending on the algorithm chosen. This then hides the original invariants of the application.

    规则更紧密地模拟了应用程序不变式。 命令式解决方案倾向于根据所选择的算法对操作施加任意且通常不必要的排序。 然后,这将隐藏应用程序的原始不变式。

    统一 (Unifying)

    The Drools platform brings unification of rules and processes. It is easy to call rules from a process or vice versa.

    Drools平台带来了规则和流程的统一。 从流程中调用规则很容易,反之亦然。

    重新部署 (Redeploying)

    It is possible to change/redeploy rules and processes without even stopping the whole application.

    甚至可以在不停止整个应用程序的情况下更改/重新部署规则和流程。

    翻译自: https://www.studytonight.com/drools/advantage-rule-engine

    流程引擎规则引擎

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

    什么是规则引擎

    规则引擎,全称为 业务规则管理系统,英文名为BRMS(即Business Rule Management System)。规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模块编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。

    需要注意的是规则引擎并不是一个具体的技术框架,而是指的一类系统,即业务规则管理系统。目前市面上具体的规则引擎产品有:drools、VisualRules、iLog等。

    规则引擎实现了将业务决策从应用程序代码中分离出来,接收数据输入,解释业务规则,并根据业务规则做出业务决策。规则引擎其实就是一个输入输出平台。

    申请信用卡业务场景使用规则引擎后效果如下:
    在这里插入图片描述

    系统中引入规则引擎后,业务规则不再以程序代码的形式驻留在系统中,取而代之的是处理规则的规则引擎,业务规则存储在规则库中,完全独立于程序。业务人员可以像管理数据一样对业务规则进行管理,比如查询、添加、更新、统计、提交业务规则等。业务规则被加载到规则引擎中供应用系统调用。

    使用规则引擎的优势

    使用规则引擎的优势如下:

    1. 业务规则与系统代码分离,实现业务规则的集中管理
    2. 在不重启服务的情况下可随时对业务规则进行扩展和维护
    3. 可以动态修改业务规则,从而快速响应需求变更
    4. 规则引擎是相对独立的,只关心业务规则,使得业务分析人员也可以参与编辑、维护系统的业务规则
    5. 减少了硬编码业务规则的成本和风险
    6. 使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单

    规则引擎应用场景

    对于一些存在比较复杂的业务规则并且业务规则会频繁变动的系统比较适合使用规则引擎,如下:

    1. 风险控制系统----风险贷款、风险评估
    2. 反欺诈项目----银行贷款、征信验证
    3. 决策平台系统----财务计算
    4. 促销平台系统----满减、打折、加价购

    Drools介绍

    drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或特定的存储介质中(例如存放在数据库中),使得业务规则的变更不需要修改项目代码、重启服务器就可以在线上环境立即生效。

    drools官网地址:https://drools.org/

    drools源码下载地址:https://github.com/kiegroup/drools

    在项目中使用drools时,即可以单独使用也可以整合spring使用。如果单独使用只需要导入如下maven坐标即可:

    <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-compiler</artifactId>
        <version>7.6.0.Final</version>
    </dependency>
    

    如果我们使用IDEA开发drools应用,IDEA中已经集成了drools插件。如果使用eclipse开发drools应用还需要单独安装drools插件。

    drools API开发步骤如下:
    在这里插入图片描述

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,773
精华内容 5,509
关键字:

规则引擎