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,表示当且进当上述规则组均执行完毕后,才执行后面的规则或进程。

     

     


     

  • 相关阅读:
    gym-102307 D. Do Not Try This Problem
    AtCoder Beginner Contest 161 E
    Codeforces 1270E 构造+数学
    2019牛客暑期多校训练营(第七场)E 线段树+离散化区间
    codeforces 1272F dp+记录路径
    Focus相关点滴
    Command模式
    接口隔离原则(ISP)
    依赖倒置原则(DIP)
    Liskov替换原则(LSP)
  • 原文地址:https://www.cnblogs.com/lovesqcc/p/4037862.html
Copyright © 2011-2022 走看看