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

  • 相关阅读:
    Extjs 4.x 得到form CheckBox的值
    你是工具综合症和资料收集狂患者吗?(转)
    计算机网络第五版(谢希仁)读书笔记(三)
    《别做正常的傻瓜》 读书笔记
    2013年11月27日,开始写专业的博客。
    web输入框的测试
    linux 文件操作相关函数
    Samba的安装
    linux df命令参数详解
    linux arp 命令常用参数详解
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/12688425.html
Copyright © 2011-2022 走看看