zoukankan      html  css  js  c++  java
  • Drools 函数学习

    Drools 函数学习

    函数是定义在规则文件当中一代码块,作用是将在规则文件当中若干个规则都会用到的
    业务操作封装起来,实现业务代码的复用,减少规则编写的工作量。函数的编写位置可以是规则文件当中 package 声明后的任何地方
    具体语法如下:
    function void/Object functionName(Type arg...) {
    /*函数体的业务代码*/
    }
    示例代码:
    import java.util.List;
    import java.util.ArrayList;
    /*
    *一个测试函数
    *用来向Customer对象当中添加指定数量的Order对象的函数
    */

    function void setOrder(Customer customer,int orderSize) {
    List ls=new ArrayList();
    for(int i=0;i<orderSize;i++){
    Order order=new Order();
    ls.add(order);
    }
    customer.setOrders(ls);
    }

    调用方式:
    1.函数写在规则文件里,规则文件直接调用
    /*
    测试规则
    */
    rule "rule1"
    when
    $customer :Customer();
    then
    setOrder($customer,5);
    System.out.println("rule 1 customer has order
    size:"+$customer.getOrders().size());
    end

    /*
    测试规则
    */
    rule "rule2"
    when
    $customer :Customer();
    then
    setOrder($customer,10);
    System.out.println("rule 2 customer has order size:"+$customer.getOrders().size());
    end

    2.使用java编写函数,规则文件调用(需要引入相关类和函数)
    java代码:
    package test;
    public class RuleTools {
    public static void printInfo(String name){
    System.out.println("your name is :"+name);
    }
    }

    规则文件代码:
    package test
    import function test.RuleTools.printInfo; //引入函数所在

    /*
    测试规则
    */
    rule "rule1"
    when
    eval(true);
    then
    printInfo("高杰");
    end



  • 相关阅读:
    session、cookie、token
    跨域问题-nginx代理
    跨域问题-jsonp
    fat32转ntfs
    nginx日志输出,https,ssl
    nginx安装
    MySql(一)表类型(存储引擎)
    ShowDoc,APIDoc,可道云API,语雀-适合IT企业的文档工具
    Docker Compose搭建Redis一主二从三哨兵高可用集群
    Docker容器启动Mysql,Docker实现Mysql主从,读写分离
  • 原文地址:https://www.cnblogs.com/ciade/p/5234802.html
Copyright © 2011-2022 走看看