zoukankan      html  css  js  c++  java
  • easy-rules 组合rule说明

    easy-rules 目前支持三种组合模式的rule,以下是一个介绍,实际上我们可以参考实现进行扩展

    UnitRuleGroup

    • 代码
    @Override
        public boolean evaluate(Facts facts) {
            if (!rules.isEmpty()) {
                for (Rule rule : rules) {
                    if (!rule.evaluate(facts)) {
                        return false;
                    }
                }
                return true;
            }
            return false;
        }
    • 说明
      只要一个不符合,就都不执行了,就是要么都执行,要么都不执行

    ActivationRuleGroup

    • 代码
     
     @Override
        public boolean evaluate(Facts facts) {
            for (Rule rule : rules) {
                if (rule.evaluate(facts)) {
                    selectedRule = rule;
                    return true;
                }
            }
            return false;
        }
    • 说明
      选择第一个,其他的就不执行了

    ConditionalRuleGroup

    • 代码
     
     @Override
        public boolean evaluate(Facts facts) {
            successfulEvaluations = new HashSet<>();
            conditionalRule = getRuleWithHighestPriority();
            if (conditionalRule.evaluate(facts)) {
                for (Rule rule : rules) {
                    if (rule != conditionalRule && rule.evaluate(facts)) {
                        successfulEvaluations.add(rule);
                    }
                }
                return true;
            }
            return false;
        }
    • 说明
      找到优先级最高的,如果符合,然后找到其他的符合的rule并执行

    说明

    如果看官方介绍,看着名字与功能,有点不是很匹配,结合源码会好点

    参考资料

    https://github.com/j-easy/easy-rules/wiki/defining-rules

  • 相关阅读:
    java-线程
    List、Map、set的加载因子,默认初始容量和扩容增量
    Mybatis使用generator自动生成映射配置文件信息
    Fiddler手机https抓包
    通知消息与ON_NOTIFY
    ATL实现COM组件
    vs参数配置
    QToolBox
    CTreeCtrl控件
    SQL-INSERT INTO用法
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/12688425.html
Copyright © 2011-2022 走看看