zoukankan      html  css  js  c++  java
  • Java Drools5.1 规则流基础【示例】(中)


                 五、规则文件及规则流

     

                  EduInfoRule.drl: 

    package myrules;
    import sample.Employ;
     
    rule"Bachelor"
          ruleflow-group"basic_salary"
    when
       emp:Employ(eduInfo =="bachelor");
    then
       System.out.println("execrule Bachelor ... ");
       emp.setBasicSalary(1500);
    end
    
    rule"Master"
          ruleflow-group"basic_salary"
    when
       emp:Employ(eduInfo=="master")
    then
       System.out.println("execrule Master ... ");
       emp.setBasicSalary(2500);
    end
                 

    Resume.drl

    package myrules
    import sample.Employ;
    
    rule"Technician"
           ruleflow-group"duty_salary"
    when
       emp:Employ(resume=="tech")
    then
       System.out.println("execrule Technician ... ");
      emp.setDutySalary(2000);
    end
    
    rule"Manager"
          ruleflow-group"duty_salary"
    when
       emp:Employ(awardPunish=="manager")
    then
       System.out.println("execrule manager ... ");
       emp.setDutySalary(4500);
    end

                  

    BonusRule.drl               

    package myrules
    import sample.Employ;
    
    rule"Excellent"
          ruleflow-group"bonus_salary"
    when
      emp: Employ(annualExam=="excellent")
    then
       System.out.println("execrule Excellent ... ");
      emp.setBonus(1000*1.0);
    end
    
    rule"Good"
           ruleflow-group"bonus_salary"
    when
      emp: Employ(annualExam=="good")
    then
       System.out.println("execrule Good ... ");
      emp.setBonus(1000*0.9);
    end
    
    rule"Common"
          ruleflow-group"bonus_salary"
    when
      emp: Employ(annualExam=="common")
    then
       System.out.println("execrule Common ... ");
      emp.setBonus(1000*0.6);
    end
    
    rule"failing"
           ruleflow-group"bonus_salary"
    when
      emp: Employ(annualExam=="failing")
    then
       System.out.println("execrule failing ... ");
      emp.setBonus(1000*0.0);
    end
    
    

     AwardPunish.drl      

    packagemyrules
    importsample.Employ;
    
    rule"Award"
           ruleflow-group"award_punish"
    when
       emp:Employ(awardPunish=="award")
    then
       System.out.println("execrule Award ... ");
      emp.setPercent(1.10);
    end
    
    rule"Punishment"
           ruleflow-group"award_punish"
    when
       emp:Employ(awardPunish=="punish")
    then
       System.out.println("execrule Punishment ... ");
      emp.setPercent(0.90);
    end
    
    rule"None"
          ruleflow-group"award_punish"
    when
       emp:Employ(awardPunish=="none")
    then
       System.out.println("execrule None ... ");
      emp.setPercent(1.00);
    end

                  TotalRule.drl   

    package myrules
    import sample.Employ;
    
    rule"Total"
      ruleflow-group"sum_salary"
    when
       emp: Employ()
    then
       System.out.println("execrule Total ... ");
       double total =emp.getBasicSalary() + emp.getDutySalary() +
                     emp.getBonus();                               
       emp.setTotalSalary(total*emp.getPercent());
    end

     

                   创建规则流文件simple.rf:

                

          注意:

           [1]Split结点类型为OR,约束选择alwaystrue.表示选择其规则组中所有符合事实的规则进行并发执行;

           [2] Join结点类型为AND,表示当且进当上述规则组均执行完毕后,才执行后面的规则或进程。

     

     


     

  • 相关阅读:
    hdu 1849 (尼姆博弈)
    Spring中Quartz的配置
    DevExpress后置代码中初始化SQL数据源的方法
    MySQL 存储过程例子,不能在if else里面用begin end否则会报错Error Code : 1064!
    javascript实现的可改变滚动方向的无缝滚动
    Android本地视频播放器开发--视频解码
    uva 10196 Check The Check
    Oracle PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR
    Hibernate获取Connection
    SQL查询数据封装JavaBean对象
  • 原文地址:https://www.cnblogs.com/lovesqcc/p/4037862.html
Copyright © 2011-2022 走看看