规则引擎
创建一些带有条件和动作的对象,将它们存储在一个集合中,然后遍历它们以评估条件并执行这些动作。
操作指南
业务中引入步骤:
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");
规则组-[规则详情]
点击红框处详情,展示规则详情信息。
点击详情,可以查看规则组规则的:规则名称、描述、条件、优先级、执行结果这些信息。
规则详情-调整规则优先级
规则详情页点击红框调整优先级, 弹窗展示规则名称。可以通过上下拖动表格规则名称对应的左侧符号实现。
规则详情-新增规则
规则详情页点击红框新增规则,可以添加规则的:优先级、规则名称、描述、条件、执行结果这些信息,且均为必填项。
规则详情-单条规则启用/禁用、编辑
可根据红框内的图标,对单条规则进行进行设置,设置规则启用禁用,或者进行删除,还可以重新编辑,规则属性。