欢迎光临散文网 会员登陆 & 注册

Drools-第二天

2021-03-20 21:13 作者:一个胖胖的程序猿  | 我要投稿

规则属性:

  • enable:指定当前规则是否触发(true[默认],false);

    enable true;

  • dialect:指定当前规则的语言类型(java[默认],mvel);

    dialect "java";

  • salience:用于指定执行的优先级(数值越大越优先);

    salience 10;

  • no-loop:防止update,insert,retrect三个方法导致的死循环(当前规则判定);

    no-loop true/false[默认];

  • activation-group:指定规则组,一组规则只能触发一个规则;

    activation-group "mygroup";

  • agenda-group:议程分组,可以在java文件中指定焦点触发;

    drl:agenda-group "agenda-group-1";

    java:session.getAgenda().getAgendaGroup(name:"agenda-group-1").setFocus();

  • auto-focus:自动获取焦点(同一个议程分组全部规则生效);

    auto-focus true;

  • timer:指定规则的执行时间;

    timer (3s,2s);第一个int表示几秒后执行,第二个int表示隔几秒执行一次;

    timer(corn:0/1 * * * * * ?);使用标准的unix cron表达式的方式执行;

  • date-effective:指定规则在(dd-MMM-yyyy[默认])yyyy-MM-dd HH:mm:ss后生效;

    java:System.setProperty("drools.dateformat","yyyy-MM-dd HH:mm:ss");

    drl:date-effective “2021-3-18 00:00:00”;

  • date-expires:指定规则在(dd-MMM-yyyy[默认])yyyy-MM-dd HH:mm:ss后失效;

    java:System.setProperty("drools.dateformat","yyyy-MM-dd HH:mm:ss");

    drl:date-expires“2021-3-18 00:00:00”;

高级语法:

  • global:定义全局变量;

    注意:gloable定义的类型如果是包装类型,那么只在当前规则内有效;

               定义的是集合类型和javabean对象则所有规则都有效;

    drl:global java.lang.Integer integer;(声明全局变量)

    java:session.setGlobal("integer",0);(为全局变量赋初始值)

  • query:在java代码中获取,查询工作内存中符合约束条件的Fact对象;

    drl:   query 查询名称(查询参数)

                  LHS

               end

    java:session.getQueryResults("查询名称");

    java:session.getQueryResults("查询名称","查询参数");

  • function:函数相当于java类的方法

    function 返回值类型 函数名 (参数列表){

        //逻辑代码

    }

  • LHS加强

    1.复合限制:in/not in:判断是否存在;

        例:$student:Student(name in ("张三","李四","王五"));

               $student:Student(name not in ("张三","李四","王五"));

    2.条件元素eval:用于true,false关键字的替换;

        例:eval(true,false [1 == 1] );

    3.条件元素not:判断工作内存中不存在某个对象;

        例:not Student(age < 10);

    4.条件元素exists:判断工作内存中存在某个对象;

        例:exists Student(age < 10);

    5.规则条件部分继承:规则继承只继承条件部分(LHS);

        例:rule "rule_2_extends_1" extends "rule_1"

  • RHS加强

    1.halt:立即终止后面所有规则的执行;

        例:drools.halt();

    2.getWorkingMemory():返回工作内存中的所有对象;

        例:sout(drools.getWorkingMemory());

    3.getRule():返回当前规则对象;

        例:sout(drools.getRule()



Drools-第二天的评论 (共 条)

分享到微博请遵守国家法律