Skip to content

规则引擎

创建一些带有条件和动作的对象,将它们存储在一个集合中,然后遍历它们以评估条件并执行这些动作。

操作指南

业务中引入步骤:

1、在业务模块的pom.xml中添加依赖

html
<!-- 规则模块 -->
<dependency>
    <groupId>com.hisense.pangea</groupId>
    <artifactId>pangea-common-easyrules</artifactId>
    <version>${pangea.version}</version>
</dependency>

2、在Application类或Configuration类上添加注解@EnableEasyRules

java
@EnableEasyRules
public class PangeaSampleApplication {
    public static void main(String[] args) {
        SpringApplication.run(PangeaSampleApplication.class, args);
    }
}

3、在applicatiom.yml中标记dev环境,可以实现在UI上自动生成规则组(这个原理是pangea-common-easyrules代码包中RulesActuator类增加了判断,如果"dev".equals(activeProfile)就会生成规则组)

html
spring:
  profiles:
    active: dev

生产环境请标记为prod,将停止UI更新规则组 注意:规则组名称需要满足正则表达式("^[A-Za-z0-9.]*$")

自动生成规则组后,此时可以进入平台规则引擎进行相应操作:

入口

你可以参考以下步骤从应用列表中,进入规则引擎菜单

顶部导航条——应用开发——规则引擎

只需输入需查找的规则组信息,点击查询即可。

可以查看文件的:规则组名称、系统名称、规则数量、描述、是否可用、操作类型这些信息。

规则组查询

在规则组较多的情况下,页面最上方卡片支持根据规则组名称、系统名称进行快速定位。如下图所示,查询框选择规则组,以及输入具体的系统名称,即可快速查到对应规则组信息。

编辑&删除

点击红框处的修改图标,可打开编辑弹框,可修改规则组详情;点击删除图标,可删除当前规则组。

注意

只有选中一条规则组,此时的编辑和删除图标才能使用。

规则组特性

点击规则组右侧的编辑按钮,可以对规则组特性进行响应的编辑。

具体规则特性详情:

  • skip_on_first_applied_rule 应用当前规则时,跳过其余规则
  • skip_on_first_non_triggered_rule 没有触发规则时,跳过其余规则
  • skip_on_first_failed_rule 应用当前规则失败时,跳过其余规则
  • priority_threshold 自定义规则的优先级超过定义的阈值时,跳过其余规则

此时可以在应用规则引擎的类上根据查询的规则执行相应的操作

java
//业务类中注入规则解析器
@Autowired
RulesActuator rulesActuator;
 
 public void ruleTest(){
    //调用规则引擎
    // 处理事实对象 T t
    RuleResult  result =rulesActuator.usingRules("规则组名称")  //仅可以使用英文、数字和点.   //中文名称可以在页面上编辑,以便于阅读
                            .put("param1",t)        //添加事实对象,可以添加多个,参数名可以任意(比如实例中的param1)
                            .put(具体规则)          //当有代码自定义规则时使用,可以省略。
                            .fire();
    //获取运算后对象
    T t = result.get("param1");
 }

注意:以上代码在实际业务使用中建议分三步来写: 第一步 获取规则执行器:RulesActuatorBuilder rulesActuatorBuilder = rulesActuator.usingRules(ruleGroupName); 这段代码执行后会创建规则组,名称不可重复 第二步 添加事实对象:RuleResult ruleResult = rulesActuatorBuilder.put("input", demo).fire();//demo就是事实对象 第三步 获取运算后的对象:Demo demo2 = ruleResult.get("input");

规则组-[规则详情]

点击红框处详情,展示规则详情信息。

点击详情,可以查看规则组规则的:规则名称、描述、条件、优先级、执行结果这些信息。

规则详情-调整规则优先级

规则详情页点击红框调整优先级, 弹窗展示规则名称。可以通过上下拖动表格规则名称对应的左侧符号实现。

规则详情-新增规则

规则详情页点击红框新增规则,可以添加规则的:优先级、规则名称、描述、条件、执行结果这些信息,且均为必填项。

规则详情-单条规则启用/禁用、编辑

可根据红框内的图标,对单条规则进行进行设置,设置规则启用禁用,或者进行删除,还可以重新编辑,规则属性。