zoukankan      html  css  js  c++  java
  • easy-rules rule 格式说明

    easy-rules 提供了方便的注解,我们可以直接基于pojo编写rule

    rule 方法签名

    public interface Rule {
        /**
        * This method encapsulates the rule's conditions.
        * @return true if the rule should be applied given the provided facts, false otherwise
        */
        boolean evaluate(Facts facts);
        /**
        * This method encapsulates the rule's actions.
        * @throws Exception if an error occurs during actions performing
        */
        void execute(Facts facts) throws Exception;
        //Getters and setters for rule name, description and priority omitted.
    }

    pojo 注解模式

    • 参考
    @Rule(name = "my rule", description = "my rule description", priority = 1)
    public class MyRule {
        @Condition
        public boolean when(@Fact("fact") Facts fact) {
            //my rule conditions
            return true;
        }
        @Action(order = 1)
        public void then(@Fact("fact") Facts fact) throws Exception {
            //my actions
        }
        @Action(order = 2)
        public void finally() throws Exception {
            //my final actions
        }
    }

    RuleBuilder 模式

    Rule rule = new RuleBuilder()
                    .name("myRule")
                    .description("myRuleDescription")
                    .priority(3)
                    .when(condition)
                    .then(action1)
                    .then(action2)
                    .build();

    yaml 格式

    参考如下,理论上是一种扩展

    name: "5"
    description: "5"
    condition: "user.name.length<30"
    priority: 5
    actions:
      - "UserService.doAction4(user.userinfo)"

    json 格式

    同yaml 格式一样,也是一种扩展

    {
        "name": "3",
        "description": "3",
        "condition": "user.name.length<50",
        "priority": 3,
        "actions": [
          "System.out.println("default rule3 ")"
        ]
    }

    参考资料

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

  • 相关阅读:
    面试基础知识文档
    敏捷式开发
    redis总结
    自我介绍的问题
    面试2
    唐巧的iOS技术博客选摘
    IOS开发中滑动页面时NSTimer停止的问题
    iOS多线程GCD(转)
    iOS 用instancetype代替id作返回类型有什么好处?
    C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/12693520.html
Copyright © 2011-2022 走看看